Форум: "Базы";
Текущий архив: 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