Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Пользаватели в 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.026 c
3-1103354594
Dell3r
2004-12-18 10:23
2005.01.23
Неизвестная


1-1104723812
saimon
2005-01-03 06:43
2005.01.23
Подсветка синтаксиса???


14-1104590246
vopros
2005-01-01 17:37
2005.01.23
Уберите их с экрана пожайлуста


14-1104830809
Black_phoenix
2005-01-04 12:26
2005.01.23
Новый модуль , сборник полезных процедур от ACS inc.


1-1105281196
Skiner_Y
2005-01-09 17:33
2005.01.23
TImage наведение