Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Пользаватели в SQL Server 2000   Найти похожие ветки 

 
Black ©   (2004-12-19 10:06) [0]

Мне нужно организовать доступ к базе SQL SERVER"а для разных пользователей. Т.е. кождый пользователь должен иметь доступ только к своей таблице в базе. Пользователей много, так же нужно будет создавать новых пользователей. Посоветуйте как лучше это всё сделать. Через пользователей SQL Server"а или создать дополнительную базу с пользователями, или что нибудь ещё?


 
сергей1   (2004-12-19 12:21) [1]

разумеется через встроенную систему аутентификации и авторизации mssql


 
Black ©   (2004-12-19 13:05) [2]

А если сделать так:
Сделать одного пользователя в системе аутентификации MSSQL для доступа к серверу, а потом давать доступ к базе в соответствии с таблицей пользователей (логин, пароль, таблица к которой он имеет доступ);
Только, пожалуйста, не сильно надо мной не издевайтесь. Я только начал писать на SQL Server"е.

З.Ы. Отразится ли на работе сервера наличие 500 пользователей?


 
Nikolay M. ©   (2004-12-19 13:33) [3]


> разумеется через встроенную систему аутентификации и авторизации
> mssql

Категоричность - признак ограниченности.
А если автору удобнее решить задачу с использованием application-сервера?


> Black ©   (19.12.04 13:05) [2]

Именно так и стоит поступать при наличии app-сервера. Хотя, конечно, разграничение прав доступа средствами sql-сервера - это тоже вариант.


 
сергей1   (2004-12-19 18:23) [4]

если-бы да ка-бы то б во рту расли грибы

где у автора написано, что он трехзвенку лепит ? Это вообще отдельная песня, и методы проектирования там малость другие.

Уж если пошла такая ботва, так еще есть роли приложений, почитай про них, может это как раз то, что тебе надо


 
Black ©   (2004-12-20 06:23) [5]

А если мне надо будет чтобы пользователи имели доступ только к своей таблице, и я буду создавать отдельно Login для каждого пользователя, то как мне программно (через Delphi) это осуществить?


 
SeZuka ©   (2004-12-20 06:43) [6]

Зачем тебе куча однотипных таблиц???
Создаешь одну общую таблицу с дополнительным столбцом UserID, запрещаешь к ней любой доступ, а все манипуляции с данными осуществляешь через хранимые процедуры, в которых определяется ID текущего пользователя ну и соответственно, выборка/запись данных по этому ID.
Также любые операции с пользователями - создание/удаление, а так же изменение прав делаются через встроенные системные ХП.


 
Black ©   (2004-12-20 08:30) [7]

to SeZuka
А исходник таких процедур выложить не можешь


 
KSergey ©   (2004-12-20 08:42) [8]

> [7] Black ©   (20.12.04 08:30)
> А исходник таких процедур выложить не можешь

Книжки про SQL читал? слова select и where - знакомы? Если да - то не понятен вопрос. Если нет - пора почитать.


 
SeZuka ©   (2004-12-20 08:56) [9]

2 Black ©   (20.12.04 08:30) [7]

CREATE PROCEDURE GetTable1
AS
 SELECT *
   FROM Table1
   WHERE UserID = USER_ID ( USER )
GO

Аналогично делаешь запись или удаление, ну и для начала действительно почитай книжки по MS SQL!


 
Black ©   (2004-12-20 08:56) [10]

Книжки читал и слова мне эти знакомы, мне не знаком способ вызывания хранимых процедур с помощью Delphi (т.к. с SQL Server"ом я знаком всего дня 3); и мне не известно как узнать ID пользователя который запустил эту процедуру.


 
KSergey ©   (2004-12-20 09:06) [11]

>  [10] Black ©   (20.12.04 08:56)
> мне не знаком способ
> вызывания хранимых процедур с помощью Delphi
и мне не известно как узнать
> ID пользователя который запустил эту процедуру.

Какие компоненты доступа?

> и мне не известно как узнать ID пользователя который запустил эту процедуру.

select suser_name()

Только это login, а не ID
ID надо сопоставлять по своей таблице пользователей (на сколько знаю, как такового ID у пользователя нет ни в каких системных таблицах)


 
Black ©   (2004-12-20 09:12) [12]

Пользуюсь ADOConnection для доступа к MSSQL

> и мне не известно как узнать ID пользователя который запустил эту процедуру.

select suser_name()

Здесь в скобках что нибудь указывается?


 
Ega23 ©   (2004-12-20 09:33) [13]

разумеется через встроенную систему аутентификации и авторизации mssql

Я бы не стал так категорично утверждать. Способ хранения всевозможных клиентских "операций" в базе и раздачу доступа именно на эти "операции" считаю гораздо более гибкой.


 
KSergey ©   (2004-12-20 09:41) [14]

> [12] Black ©   (20.12.04 09:12)
> select suser_name()
> Здесь в скобках что нибудь указывается?

Читать справку - не в моде?


 
Nikolay M. ©   (2004-12-20 09:59) [15]


> на сколько знаю, как такового ID у пользователя нет ни в
> каких системных таблицах

SELECT
 suser_sid("sa")
???


 
SeZuka ©   (2004-12-20 10:08) [16]

Я же дал пример, USER_ID(USER)
функция USER_ID(["Name"]) возвращает ID пользователя или роли базы данных по имени, либо ID текущего пользователя,
а функция USER возвращает имя текущего пользователя базы данных


 
SeZuka ©   (2004-12-20 10:17) [17]

2 Nikolay M. ©   (20.12.04 09:59) [15]

> SELECT
>  suser_sid("sa")
> ???

У этой функции возвращаемое значение типа Binary, и для данных целей никак не годится


 
Black ©   (2004-12-20 10:20) [18]

А как выполнить процедуру с параметрами?


 
Nikolay M. ©   (2004-12-20 10:27) [19]


> SeZuka ©   (20.12.04 10:17) [17]
> > SELECT
> >  suser_sid("sa")
> > ???
>
> У этой функции возвращаемое значение типа Binary, и для
> данных целей никак не годится

Это почему?


 
SeZuka ©   (2004-12-20 11:08) [20]

2 Nikolay M. ©   (20.12.04 10:27) [19]

А как???
Создать в таблице столбец типа Binary(85), а затем производить выборку по нему? И зачам столько лишней информации в каждой записи?


 
Nikolay M. ©   (2004-12-20 11:12) [21]


> SeZuka ©   (20.12.04 11:08) [20]

Хотя бы. Но ведь это же не "не подходит абсолютно"?


 
Black ©   (2004-12-20 11:18) [22]

Как узнать логин пользователя, вызвавшего процедуру, зная имя пользователя?


 
Nikolay M. ©   (2004-12-20 11:30) [23]


> Black ©   (20.12.04 11:18) [22]

А что в твоем понимании есть "логин" и "имя пользователя"?


 
KSergey ©   (2004-12-20 11:31) [24]

> [22] Black ©   (20.12.04 11:18)
> Как узнать логин пользователя, вызвавшего процедуру, зная
> имя пользователя?

Вы справку читать начнете, наконец??? Хотя бы по упомянутым тут ф-циям?


 
KSergey ©   (2004-12-20 11:34) [25]

> [15] Nikolay M. ©   (20.12.04 09:59)
> > на сколько знаю, как такового ID у пользователя нет ни в
> > каких системных таблицах
>
> SELECT
>  suser_sid("sa")

Ключевые слова были "на сколько" ;)


 
SeZuka ©   (2004-12-20 11:35) [26]

Тебе еще раз написать?
USER - имя текущего пользователя
USER_ID() - ID текущего пользователя
SUSER_SNAME() - текущий логин
SUSER_SID() - текущий идентификатор безопасности SID
Еще раз спросишь ...


 
Black ©   (2004-12-20 11:47) [27]

Black ©   (20.12.04 10:20) [18]
А как выполнить процедуру с параметрами?

Если кто знает, то напишите пожалуйста. Использую:
ADOConnection для подключения к MSSQL
ADOStoredProc для выполнения процедур.


 
SeZuka ©   (2004-12-20 12:19) [28]

2 Black ©   (20.12.04 11:47) [27]

Это уже смешно!!!
F1 Help!!!

В Parameters пишешь заполняешь необходимые параметры, если собираешься заполнять их динамически, то прежде сделай Refresh, затем если нужно получить данные делаешь Open или ExecProc без получения данных.
Но лучше юзай ADOCommand и ADODataSet


 
KSergey ©   (2004-12-20 13:27) [29]

У ADOStoredProc см. Parameters



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.045 c
1-1105609194
Vetal
2005-01-13 12:39
2005.01.23
А как изменить цвет кнопки?


3-1103597258
Black
2004-12-21 05:47
2005.01.23
Какой тип данных использовать?


1-1105421082
Alex_d
2005-01-11 08:24
2005.01.23
Пропал dpr


3-1103659183
Igor_P
2004-12-21 22:59
2005.01.23
SQL-запрос к таблице


14-1104516184
Anatoly Podgoretsky
2004-12-31 21:03
2005.01.23
Зверские новогодние анекдоты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский