Например, при установке SQL Server 2008 мне пришлось выбрать учетную запись, под которой будет работать ядро базы данных.
Когда я пошел прикрепить файл базы данных 2005 года с помощью SQL Server Management Studio, произошла ошибка разрешения, препятствующая обновлению базы данных. Я проверил файлы базы данных, и учетная запись «SQLServerMSSQLUser $ ComputerName $ MSSQLSERVER» имеет полные права доступа к файлу.
Итак, я решил, что SQL Server Management Studio работает под моим именем пользователя, у которого не было разрешений на запись для обновления файла базы данных. Итак, я добавил полные разрешения для своего имени пользователя, и это сработало.
Этот случай заставил меня задать этот вопрос. Как я могу точно узнать, под какой учетной записью выполняется действие? Я думал, что механизм базы данных будет обрабатывать присоединение базы данных, но, видимо, нет!
Более того, после того, как база данных была присоединена, похоже, мое имя пользователя было удалено из списка безопасности! Итак, я полагаю, что если я отсоединю базу данных, мне придется снова сбросить свои разрешения для файлов, прежде чем я смогу повторно присоединить базу данных.
Похоже, SSMS вызывает эту путаницу. Я предполагаю, что необходимость выбора файлов в диалоговом окне означает, что учетная запись SSMS, под которой работает, также требует разрешений для файла.
Если у учетной записи службы есть разрешение на доступ к файлу, вы сможете подключить базу данных с помощью t-sql.
Попробуйте использовать sp_ attach _db Вам нужно будет войти как sa или использовать setuser или используйте СОЗДАТЬ БАЗУ ДАННЫХ... ДЛЯ ПРИСОЕДИНЕНИЯ
Если ты действительно должен используйте SSMS, и мысль о T-SQL заставляет вас бросить вызов, а затем создать учетную запись пользователя для службы сервера sql для запуска, а затем использовать эту учетную запись для запуска SSMS.
Я нашел здесь ответ:
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, ха-ха.
Если вы знаете имя исполняемого файла, то на вкладке «Процессы» диспетчера задач будет показано имя пользователя, запускающего этот файл.