Почему в SQLServer предоставление прав доступа к объектам не добавляет пользователя в базу данных правильно? - PullRequest
1 голос
/ 19 декабря 2008

Это мои настройки:

  • SQL-сервер 2005
  • Пользователь A уже настроен как пользователь на сервере, но не в базе данных A.
  • GRANT Выполнить ON [GetOrders] TO [UserA] AS [dbo]

Как видите, я пропустил шаг. Я еще не добавил UserA в базу данных. Это не дает сбоя и позволяет мне выполнить execute на объекте.

Я полагаю, что в 2000 году это привело бы к ошибке и не позволило бы мне сделать это.

Теперь у меня есть все эти объекты с правильными установленными разрешениями, но пользователи не могут видеть базу данных. Чтобы решить эту проблему, я должен удалить пользователей из базы данных, заново добавить их, а затем дать разрешения.

Почему это разрешено, и есть ли способ либо предотвратить его, либо заставить его автоматически создавать логин db всякий раз, когда новому пользователю предоставляются разрешения для объекта.

спасибо.

Ответы [ 2 ]

2 голосов
/ 06 января 2009

Это та часть, которая вас отталкивает.

TO [UserA] AS [dbo]

Откажитесь от части "as dbo". Это дает право пользователю dbo. Без части "AS [dbo]" он выдаст ошибку.

1 голос
/ 19 декабря 2008

Вероятно, разрешено предоставить администраторам баз данных возможность гибко изменять пользователей и разрешения, когда база данных не подключена к вашему производственному серверу. Я не верю, что вам нужно заново добавлять пользователей. Посмотрите на сценарий этого парня: http://www.lazycoder.com/weblog/2007/06/04/re-associate-sql-users-with-logins/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...