Доступ запрещен при подключении базы данных - 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 ]

1 голос
/ 14 ноября 2011

Я получил эту ошибку как sa. В моем случае безопасность базы данных не имела значения. Я добавил всем полный контроль над файлами mdf и ldf, и прикрепление прошло нормально.

1 голос
/ 03 сентября 2017

enter image description here

USE [master]
GO
CREATE DATABASE [DataBasename] ON 
( FILENAME = N'C:\data\DataBasename.mdf' )
 FOR ATTACH
GO

изменить на FOR ATTACH -> FOR ATTACH_FORCE_REBUILD_LOG

USE [master]
GO
CREATE DATABASE [DataBasename] ON 
( FILENAME = N'C:\data\DataBasename.mdf' )
 FOR ATTACH_FORCE_REBUILD_LOG
GO
0 голосов
/ 26 августа 2013

Я решил проблему, просто переместив файл .mdf, который вы хотите прикрепить, в общую папку, в моем случае я переместил его в папку users / public. Тогда я прикрепляю его оттуда без проблем. Надеюсь, это поможет.

0 голосов
/ 08 апреля 2011

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

Чтобы решить эту проблему в Windows 7, я нормально запускал SQL Server Management Studio (не как администратор). Затем я попытался прикрепить файл MDF. В процессе я использовал пользовательский интерфейс, а не вставил в путь. Я заметил, что путь был отрезан от меня. Это связано с тем, что пользователь MS SQL Server (SQLServerMSSQLUser $ machinename $ SQLEXPRESS), добавляемый для вас программным обеспечением, не имеет прав доступа к папке (в данном случае это папка, расположенная глубоко в моих пользовательских папках).

Вставка пути и продолжение приводит к вышеуказанной ошибке. Итак, я дал пользователю MS SQL Server права на чтение, начиная с первого каталога, в котором ему было отказано (моя папка пользователя). Затем я немедленно отменил операцию распространения, потому что это может занять вечность, и снова применил разрешения на чтение к следующей необходимой подпапке, и позволил этому распространиться полностью.

Наконец, я дал пользователю MS SQL Server права на изменение файлов .mdf и .ldf для базы данных.

Теперь я могу прикрепить к базе данных файлы.

0 голосов
/ 27 января 2017

Я боролся с SSMS (2016) за присоединение базы данных AdventureWorks2012. Но имел успех с этим кодом, взятым из статьи CodeProject Мохаммад Эльсхейми :

CREATE DATABASE AdventureWorks2012
    ON PRIMARY (FILENAME='D:\Dev\SQL Server\AdventureWorks2012.mdf')
    FOR ATTACH;
0 голосов
/ 18 октября 2012

Если вы запускаете sql server 2012, вы можете получить эту ошибку, пытаясь прикрепить более старую версию mdf-файла. ex файл mdf с сервера sql 2008.

0 голосов
/ 11 декабря 2013

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

Перейдите в папку «DATA» в установке SQL Server, щелкните правой кнопкой мыши, выберите свойства, вкладку «Безопасность» и добавьте права полного доступа для пользователя «NETWORK SERVICE».

http://decoding.wordpress.com/2008/08/25/sql-server-2005-expess-how-to-fix-error-3417/

(ссылка выше для SQL 2005, но это исправило установку SQL 2008 R2 для меня).

Некоторая дополнительная информация: эта проблема появилась у меня после замены дополнительного жесткого диска (на котором была установлена ​​установка SQL). Я скопировал все файлы и восстановил исходную букву диска на новый жесткий диск. Однако разрешения безопасности не были скопированы. Я думаю, что в следующий раз я буду использовать лучший метод копирования данных.

0 голосов
/ 30 ноября 2015

У меня была такая же проблема при повторном присоединении базы данных после ее отсоединения и переноса файлов ldf и mdf с диска C на F.

Чтобы исправить это, мне нужно было добавить принцип OWNER RIGHTS к обоим файлам и дать ему полный контроль над ними на вкладке Security диалогового окна Properties.

0 голосов
/ 16 мая 2015

Скопировать базу данных в другую папку и прикрепить или войти в SQLServer с «Аутентификацией Windows»

enter image description here

0 голосов
/ 21 февраля 2015

В моем случае проблема была решена следующим образом:

USE [master]
GO
CREATE DATABASE [AdventureWorks2008R2] ON
( FILENAME = 'C:\Program Files\Microsfot SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\AdventureWors2008R2_Data.mdf')
FOR ATTACH_REBUILD_LOG
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...