Доступ запрещен при подключении базы данных - PullRequest
138 голосов
/ 25 февраля 2010

Я использую SQL Server 2008 для разработчиков. Я пытался присоединить базу данных AdventureWorks2008.

Когда я пытался присоединиться, я получил сообщение об ошибке «Отказано в доступе». Согласно журналу событий, это пришло из O / S:

Ошибка открытия: не удалось открыть файл D: \ ProjectData \ AdventureWorks \ AdventureWorksLT2008_Data.mdf для файла № 0. Ошибка ОС: 5 (доступ запрещен.).

Я думал, что «проблема NTFS», но у Системы (и у меня) есть доступ к обоим файлам.

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

Я являюсь членом группы локальных администраторов на моем компьютере и выполняю роль sysadmins в экземпляре SQL Server.

Есть идеи, почему мне нужно было войти как sa?

Ответы [ 30 ]

148 голосов
/ 22 мая 2012

Запустите SQL Server Management Studio от имени администратора. (щелкните правой кнопкой мыши -> запустить от имени администратора), который позаботился обо всех странностях в моем случае.

SQL SRV EXPRESS 2008 R2. Windows 7

98 голосов
/ 05 марта 2010

Спасибо за все комментарии. Некоторые из вас помогли мне привести ответ. Вот что я нашел:

Это была проблема с разрешениями NTFS, а не проблема SQL. Кроме того, это выглядит как ошибка (и это повторяется).

Проблема: Учетная запись, которую я использовал, имела полные права доступа NTFS к файлам mdf и ldf. Однако у него были эти разрешения через членство в группе (у группы «Локальные администраторы» были разрешения, и моя учетная запись является членом локальных администраторов). (Я проверил разрешения)

Если я пытаюсь выполнить присоединение, подключиться к SQL Server под своим именем (где я нахожусь в группе администраторов), произойдет сбой с проблемой NTFS.

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

(о, да, я проверил локальные группы на этом компьютере и убедился, что моя учетная запись домена действительно является членом группы локальных администраторов).

Таким образом, похоже, что ошибка возникает из-за того, что некоторый код (в SQL Server или Management Studio) проверяет разрешения, которые имеет учетная запись пользователя, но не заходит так далеко, чтобы проверять разрешения группы, которые пользователь учетная запись наследуется.

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

Обновление: Я сообщил об этом как об ошибке: https://connect.microsoft.com/SQLServer/feedback/details/539703/access-denied-attaching-a-database-when-permissions-are-inherited

18 голосов
/ 26 октября 2011

Я хотел бы добавить дополнительную информацию к ответам, которые были опубликованы.

Будьте осторожны при отсоединении базы данных , поскольку пользователь windows , в который вы вошли, становится единственным пользователем с разрешениями на файл .mdf! Исходные разрешения .mdf-файла, который включал пользователя SQLServerMSSQLUser$<computer_name>$<instance_name> и учетную запись администратора, будут перезаписаны любым пользователем Windows, в котором вы вошли (не пользователем SQL Server). Бум, все разрешения ушли просто так. Сделайте так, как сказали другие, и щелкните правой кнопкой мыши ваш файл .mdf и дважды проверьте разрешения.

Я столкнулся с этой проблемой, потому что я использовал SSMS для подключения к базе данных (не имеет значения, какая учетная запись сервера sql) и отключил базу данных. После этого мой пользователь Windows был единственным, у кого были какие-либо права доступа к файлу .mdf. Поэтому позже, когда я попытался подключить БД с помощью учетной записи sa, он выдал ошибку «Отказано в доступе».

Чтобы сохранить исходные разрешения в такте, вы должны перевести базу данных в автономный режим, затем отсоединить, а затем присоединить в таком порядке следующим образом:

USE [master]
GO
-- kick all users out of the db
ALTER DATABASE mydb
SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO

-- Take the Database Offline
ALTER DATABASE mydb SET OFFLINE WITH
ROLLBACK IMMEDIATE
GO

-- detach the db
EXEC master.dbo.sp_detach_db @dbname = N'mydb'
GO
17 голосов
/ 04 февраля 2015

Добавить разрешение в папку, где находится файл .mdf.

Проверьте это имя: NT Service\MSSQLSERVER

И замените Location на имя вашего сервера.

13 голосов
/ 16 июня 2012

Эта проблема вызвана UAC (контроль учетных записей), не так ли? Хотя ваша учетная запись является членом группы «Администраторы», UAC в Windows 7 не позволяет вам выполнять действия администратора, если вы не запускаете программы «как администратор». Это не настоящая ошибка в SQL Server или Management Studio или что-то еще. (Хотя он может знать проблему и запрашивать у вас повышенные разрешения вместо того, чтобы просто жаловаться на «ошибку 5».)

11 голосов
/ 27 августа 2014

Запустите SQL Server Management Studio от имени администратора. (щелкните правой кнопкой мыши -> запустить от имени администратора) работал для меня с Windows 7 - SQL Server 2008 R2

9 голосов
/ 11 декабря 2015

База данных SQL2005 может быть присоединена таким образом в Windows 7:

start menu >
 all program >
  Microsoft sql server 2005 >
   sql server management studio >
    right click >
     run as administrator >
      click ok

А затем присоединенная база данных успешно завершена.

8 голосов
/ 25 февраля 2010

Когда вы входите в систему как sa (или любая учетная запись Sql Server), вы действуете как учетная запись службы SQL Server, когда вы входите в систему как вы, у вас есть разрешения для вашей учетной записи. По какой-то причине у вас нет доступа к соответствующему файлу, но у учетной записи службы есть.

5 голосов
/ 19 сентября 2014

это может быть исправлено легко но радикально, просто перейдите в папку, где вы сохранили mdf файл выберите файл-> щелкните правой кнопкой мыши -> нажмите на свойства и предоставьте полные права доступа к файлу для вошедшего в систему пользователя.

5 голосов
/ 27 февраля 2014

Со мной - работает на окне 8 - Щелкните правой кнопкой мыши SQL Server Manager Studio -> Запустить с правами администратора. -> прикрепить без проблем

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