Как узнать, какая учетная запись пользователя используется для выполнения действия (в контексте SQL Server)?

Как узнать, какая учетная запись пользователя используется для выполнения действия (в контексте SQL Server)?

Например, при установке SQL Server 2008 мне пришлось выбрать учетную запись, от имени которой будет работать ядро ​​базы данных.

Когда я попытался прикрепить файл базы данных 2005 года с помощью SQL Server Management Studio, возникла ошибка разрешения, препятствующая обновлению базы данных. Я проверил файлы базы данных, и учетная запись "SQLServerMSSQLUser$ComputerName$MSSQLSERVER" имеет полные разрешения на файл.

Поэтому я решил, что SQL Server Management Studio запущена под моим именем пользователя, у которого нет прав на запись для обновления файла базы данных. Поэтому я добавил полные права для своего имени пользователя, и это сработало.

Этот инцидент заставил меня задать этот вопрос. Как я могу точно знать, под какой учетной записью выполняется действие? Я думал, что ядро ​​базы данных будет обрабатывать присоединение базы данных, но, видимо, нет!

Более того, как только база данных была присоединена, она, похоже, удалила мое имя пользователя из списка безопасности! Так что я предполагаю, что если я отсоединю базу данных, мне придется снова сбросить свои разрешения на файлы, прежде чем я смогу снова присоединить базу данных.

решение1

Похоже, что SSMS вызывает эту путаницу. Я предполагаю, что необходимость выбора файлов в диалоговом окне означает, что учетная запись, под которой работает SSMS, также нуждается в разрешениях на файл.

Если у учетной записи службы есть разрешение на доступ к файлу, вы сможете присоединить базу данных с помощью t-sql.

Попробуйте использоватьsp_ прикрепить _dbВам нужно будет войти как sa или использоватьsetuser или используйтеСОЗДАТЬ БАЗУ ДАННЫХ... ДЛЯ ПРИСОЕДИНЕНИЯ

Если вы действительнодолжениспользуйте SSMS, и при мысли о T-SQL вам захочется блевать, а затем создайте учетную запись пользователя для службы SQL-сервера, под которой будет работать, а затем используйте эту учетную запись для запуска SSMS.

решение2

Если вы знаете имя исполняемого файла, то на вкладке «Процессы» диспетчера задач вы увидите имя пользователя, запустившего этот файл.

решение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, хаха.

Связанный контент