Как узнать, какая учетная запись пользователя используется для выполнения действия (в контексте SQL Server)?
Например, при установке SQL Server 2008 мне пришлось выбрать учетную запись для механизма базы данных, который будет работать как.
Когда я пошел, чтобы прикрепить файл базы данных 2005 года с SQL Server Management Studio, произошла ошибка разрешения, препятствующая обновлению базы данных. Я проверил файлы базы данных, и учетная запись "SQLServerMSSQLUser$ComputerName$MSSQLSERVER" имеет полные права доступа к файлу.
Поэтому я решил, что SQL Server Management Studio работает под моим именем пользователя, у которого нет прав на запись для обновления файла базы данных. Итак, я добавил полные разрешения для моего имени пользователя, и тогда это сработало.
Этот случай заставил меня задать этот вопрос. Как я могу точно знать, под каким аккаунтом выполняется действие? Я думал, что ядро базы данных будет обрабатывать присоединение базы данных, но, очевидно, нет!
Кроме того, как только база данных была присоединена, она, кажется, удалила мое имя пользователя из списка безопасности! Итак, я представляю, что если я отсоединяю базу данных, мне придется сбросить свои разрешения для файлов еще раз, прежде чем я смогу повторно присоединить базу данных.
3 ответа
Я нашел ответ здесь:
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22785783.html
Соответствующая документация по SQL Server находится здесь:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx
"Когда вы отключаете или присоединяете базу данных, компонент Database Engine пытается олицетворять учетную запись Windows для подключения, выполняющего операцию, чтобы гарантировать, что учетная запись имеет разрешение на доступ к базе данных и файлам журналов. Для смешанных учетных записей безопасности, использующих имена входа SQL Server, подражание может потерпеть неудачу ".
Кроме того, в нем четко говорится: "Права доступа к файлам устанавливаются во время любой из следующих операций с базой данных: создание, подключение, отсоединение, изменение для добавления нового файла, резервное копирование или восстановление".
Очевидно, мне нужен RTFM, хаха.
Похоже, SSMS вызывает эту путаницу. Я предполагаю, что необходимость выбора файлов в диалоговом окне означает, что учетная запись SSMS работает под, также необходимы разрешения для файла.
Если учетная запись службы имеет разрешение на доступ к файлу, вы сможете подключить базу данных с помощью t-sql.
Попробуйте использовать sp_ attach _db. Вам нужно будет войти в систему как sa или использовать setuser или использовать CREATE DATABASE... FOR ATTACH
Если вы действительно должны использовать SSMS и мысль о T-SQL заставляет вас бросить вызов, то создайте учетную запись пользователя для запуска службы sql server и затем используйте эту учетную запись для запуска SSMS.
Если вы знаете имя исполняемого файла, то на вкладке "Процессы" диспетчера задач будет отображаться имя пользователя, на котором запущен этот файл.