Сетевая служба SQL Server как dbo - PullRequest
2 голосов
/ 11 июня 2011

У меня SQL Server 2005 работает на Windows Server 2003. Я заметил, что когда я запрашиваю сервер из своего веб-приложения (пул приложений IIS 6.0 с сетевой службой) командой, содержащей "SELECT USER_NAME()", вместо этого я получаю «dbo» "NT AUTHORITY\NETWORK SERVICE". У меня даже нет NETWORK SERVICE, работающего как dbo в моей базе данных.

Как запретить запуску NETWORK SERVICE от имени dbo в моей базе данных?

В качестве примечания я запустил тот же код и базу данных на своем ПК с Windows 7 (IIS 7), SQL Server 2008, и он возвратил "SELECT USER_NAME()" как «NT AUTHORITY \ NETWORK SERVICE», что и является тем, что я ожидать. Что дает?

Редактировать: Извините, я не внес изменений в этот пост. Я новичок в этом. Как я уже говорил, исходный логин был действительно сетевым сервисом, и он обращался к базе данных как dbo, чего я не ожидал. У учетной записи сетевой службы не было роли sysadmin или db_owner для базы данных. Тем не менее, я посмотрел, это эффективные разрешения, и это похоже на сисадмина. Я убедился, что сетевой сервис не входит в группу локальных администраторов и не работает сам сервис SQL-сервера. При поиске ответов в Google я наткнулся на кого-то с похожей ситуацией, и они в итоге запустили sys.login_token при запуске в качестве приложения, чтобы узнать, какую основную роль он дает разрешению сетевой службы. Во всяком случае, сегодня пятница, и я должен продолжить понедельник. Ура!

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Если вы хотите проверить фактическое имя входа, используйте system_user или suser_sname ()

Из книг в Интернете относительно user_name () :

* Если участник Windows обращается к базе данных посредством членства в группе, USER_NAME возвращает имя участника Windows вместо группы. *

Относительновторая часть вашего вопроса, не позволяя ему работать как dbo ...

Прочтите здесь определение dbo , но вкратце все, что является сисадмином в вашем экземпляре, происходитбыть дбо.

0 голосов
/ 11 июня 2011

Возвращает "dbo" на большинстве серверов, которые я пробовал.

На одном сервере он возвращает "guest".

Проверьте это.

http://msdn.microsoft.com/en-us/library/ms188014.aspx

...