Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разграничение прав доступа к базе данных  [new]
333Mixim333
Member

Откуда:
Сообщений: 28
Имеется база данных "DB_1", в которой есть таблица "Заказчики". Пишу следующий ConnectionString и определяю SqlConnection, при котором все работает:
String connectionString="Data Source=(local);      Initial Catalog=DB_1;            Integrated Security=SSPI";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
//...действия по заполнению DataGrid'ов данными из таблиц БД
connection.Close();

Возникла теперь необходимость разграничить права пользователей и вот с этим возникли серьезные проблемы. Создаю пользователя "Администратор"(DB_1=>Безопасность=>Пользователи=>Создать пользователя; задаю Имя пользователя - "Администратор"; Имя входа - "NT SERVICE\MSSQLSERVER"; Членство в роли базы данных - "db_accessadmin"). Пользователь успешно создался(появился в графе "Пользователи"). Изменяю ConnectionString следующим образом:
String connectionString=""Data Source=(local);      Initial Catalog=DB_1;            Integrated Security=False; User Id=Администратор"";

весь остальной код никак не трогаю и при открытии базы данных получаю ошибку:
SqlException:"Ошибка входа пользователя "Администратор" "

Значение Integrated Security заменил на "False", т.к. в противном случае, если верить изученным мной источникам, User Id будет игнорироваться и вход будет выполняться "из под имени текущего пользователя".
Хорошо, подумал что нужно вручную предоставить Администратору доступ к таблицам БД(хотя при таком раскладе ошибка выглядела бы другим образом). В SQL Server Management Studio пишу запрос:
USE [DB_1]
GO
GRANT SELECT ON [dbo].[Заказчики] TO [Администратор]
GO
GRANT INSERT ON [dbo].[Заказчики] TO [Администратор]
GO
GRANT UPDATE ON [dbo].[Заказчики] TO [Администратор]
GO

Исполняю его. Запускаю свою программу, но в ответ получаю точно такой же Exception.
Пересмотрел в сети кучу информации(например, на этом же форуме), но ничего не помогает.
Подскажите пожалуйста, что не так, где я ошибся при добавлении пользователя или может быть ошибся в ConnectionString?
11 апр 12, 13:30    [12399027]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа к базе данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
333Mixim333
Имя входа - "NT SERVICE\MSSQLSERVER";

И почему такое имя входа ?

333Mixim333
User Id=Администратор"

User Id в строке соединиения как раз и есть Имя входа, а не пользователь базы

Сообщение было отредактировано: 11 апр 12, 13:33
11 апр 12, 13:32    [12399050]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа к базе данных  [new]
333Mixim333
Member

Откуда:
Сообщений: 28
Неверно указал в посте ConnectionString:
String connectionString=[b]"[/b]Data Source=(local);      Initial Catalog=DB_1;            Integrated Security=False; User Id=Администратор[b]"[/b];
11 апр 12, 13:32    [12399052]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа к базе данных  [new]
333Mixim333
Member

Откуда:
Сообщений: 28
Glory
333Mixim333
Имя входа - "NT SERVICE\MSSQLSERVER";

И почему такое имя входа ?

Просветите неграмотного, что вместо этого нужно указать(имя текущего пользователя занято пользователем dbo)?
11 апр 12, 13:33    [12399069]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа к базе данных  [new]
nezhadnye_my
Guest
еще раз почитайте, что ответили:
Glory
Имя входа - "NT SERVICE\MSSQLSERVER";

И почему такое имя входа ?

User Id в строке соединиения как раз и есть Имя входа, а не пользователь базы[/quot]

имя входа, оно же login, это тот, кто логинится к серверу.
это и есть тот, кого Вы собирались создать, судя по описанию:
333Mixim333
Значение Integrated Security заменил на "False", т.к. в противном случае, если верить изученным мной источникам, User Id будет игнорироваться и вход будет выполняться "из под имени текущего пользователя".


здесь задается login, а не user.
создавайте уже тогда логин для сервера.
то, кого Вы создали, это user для базы,
а в connection string указывается login, т.е. уровня сервера, не уровня базы
(не db -> security -> users, a server -> security -> logins)
11 апр 12, 15:41    [12400333]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа к базе данных  [new]
333Mixim333
Member

Откуда:
Сообщений: 28
nezhadnye_my
еще раз почитайте, что ответили:
здесь задается login, а не user.
создавайте уже тогда логин для сервера.
то, кого Вы создали, это user для базы,
а в connection string указывается login, т.е. уровня сервера, не уровня базы
(не db -> security -> users, a server -> security -> logins)

Благодарю, сейчас буду смотреть, разбираться и проверять
12 апр 12, 02:42    [12403184]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить