SQL Server Ошибка операционной системы 5: "5 (Доступ запрещен.)"

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

Msg 5120, уровень 16, состояние 101, строка 1 Невозможно открыть физический файл "C:\Murach\SQL Server 2008\Базы данных \AP.mdf". Ошибка операционной системы 5: "5 (Доступ запрещен.)".

   CREATE DATABASE AP
      ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf')
      LOG ON (FILENAME =     'C:\Murach\SQL Server 2008\Databases\AP_log.ldf')
      FOR ATTACH
    GO

В книге автор говорит, что он должен работать, но он не работает в моем случае. Я искал, но я точно не знаю, в чем проблема, поэтому я разместил этот вопрос.

Ответ 1

Учетная запись службы ядра СУБД SQL Server должна иметь разрешения на чтение и запись в новой папке.

Проверьте это

Чтобы исправить, я сделал следующее:

Добавлена группа администраторов к разрешениям безопасности файла с полным контролем над файлом данных (S :) и файлом журнала (T :).

Прикрепил базу и все отлично работает.

enter image description here

enter image description here

Ответ 2

Старый пост, но вот шаг за шагом, который работал на SQL Server 2014 под Windows 7:

  • Панель управления →
  • Система и безопасность →
  • Администрирование →
  • Услуги →
  • Дважды щелкните SQL Server (SQLEXPRESS) → щелкните правой кнопкой мыши, Свойства
  • Выберите вкладку "Вход в систему" ​​
  • Выберите "Локальная системная учетная запись" (по умолчанию была какая-то туповатая учетная запись Windows).
  • → OK
  • щелкните правой кнопкой мыши, остановите
  • щелкните правой кнопкой мыши, запустите

Войла!

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

Ответ 3

Это проблема, связанная с Windows, когда SQL Server не имеет соответствующего разрешения для папки, содержащей файл .bak и, следовательно, эту ошибку.

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

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup (SQL 2012)
C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup (SQL 2014)
C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Backup (SQL 2016)

Ответ 4

Чтобы обойти проблему отказа в доступе, я запустил SSMS в качестве администратора и разрешил мне прикреплять базу данных с моего локального диска. База данных была создана в другом экземпляре SQL и Windows.

Ответ 5

Да, это правильно. Сначала вы должны узнать свою учетную запись службы sqlserver, вы можете увидеть ее в Диспетчере задач, когда вы одновременно нажимаете Ctrl + Alt + delete. Затем вы должны предоставить привилегии чтения/записи "C:\Murach\SQL Server 2008\Базы данных" для учетной записи службы.

Ответ 6

Проблема связана с отсутствием разрешений для SQL Server для доступа к файлам mdf и ldf. Все эти процедуры будут работать:

  • вы можете напрямую изменить учетную запись запуска службы MSSQLSERVER с учетной записью пользователя, у которой есть лучшие привилегии на файлы. Затем попробуйте подключить базу данных.
  • Или вы можете назначить пользователю файл на вкладке безопасности свойств файлов mdf и ldf с проверенными привилегиями чтения и записи.
  • Запуск с учетной записью администратора Windows и откройте SQL Server с параметром "запустить как администратор" и попробуйте войти в систему с помощью проверки подлинности Windows и попробуйте подключить базу данных.

Ответ 7

Фактические разрешения на сервер не будут иметь значения на данный момент; все выглядит нормально.  Сам SQL Server нуждается в разрешениях на папку.
в зависимости от вашей версии вы можете добавить разрешения SERVERNAME $MSSQLSERVER, чтобы коснуться вашей папки. В противном случае он должен находиться в каталоге BACKUP по умолчанию (где вы его установили или по умолчанию: c:\programfiles (x)\MSSQL\BACKUP.

Ответ 8

Я решить эту проблему, добавив Full control доступа как для .mdf и .ldf - файлов для Users группы.

Ответ 9

У меня была эта проблема. просто запустите сервер sql как администратор

Ответ 10

Для меня это было решено следующим образом с помощью студии SQL Server Management -Log в качестве администратора (я вошел в систему как проверка подлинности Windows) -Открыть файл mdf (щелкните правой кнопкой мыши Database | attach | Add) -Изменить как администратор -Использовать как обычный пользователь

Ответ 11

Даже если вы выполните следующие шаги, вы получите одно и то же сообщение об ошибке.

1. login as SA user (SSMS)
2. Edit the file permissions to say "everyone" full access (windows folder)
3. Delete the Log file (Windows Exploring  (this was what I had done per advise from some msdn forum) 

У меня все еще есть ошибка разрешения, но потом я заметил, что на экране Attach нижний раздел STILL показал файл LOG, и сообщение об ошибке оставалось прежним.

Надеюсь, это поможет кому-то, кто сделал то же самое.

Ответ 12

Очень простое решение.

  • Вход с системным администратором
  • скопируйте файлы mdf и ldf в папку "C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA". Там, где все другие данные передаются.
  • Теперь приложите оттуда его работу

Ответ 13

Я использовал инфраструктуру Entity в своем приложении и имел эту проблему, я установил любое разрешение в папках и службах Windows и не работал, после этого я запускаю свое приложение в качестве администратора (щелкните правой кнопкой мыши в exe файле и выберите "запустить как admin" ), и это отлично работает.

Ответ 14

Если вы получаете эту ошибку на .MDF файл в APP_DATA папке (или там, где когда - либо вы выразились) для проекта Visual Studio, как я сделал это было просто скопировать разрешения из существующей DATA папки здесь (я использую SQL Express 2014 для поддержки старого приложения):

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\DATA

(примечание: ваш фактический путь установки может отличаться - особенно если имя вашего экземпляра другое)

Дважды щелкните папку DATA сначала как администратор, чтобы убедиться, что у вас есть доступ, затем откройте свойства папки и имитируйте то же самое для папки APP_DATA. В моем случае отсутствующим пользователем был MSSQL$SQLEXPRESS2014 (поскольку я назвал экземпляр SQLEXPRESS2014 - ваш может отличаться). Это также происходит с именем пользователя службы SQL Server.