Как создать разрешения на запись для нового файла базы данных SQL Server

#sql-server #windows-server-2012

#sql-server #windows-server-2012

Вопрос:

У меня есть SQL Server 2016, запущенный в виртуальной машине на Windows Server 2012 R2. Хост — это Windows 7.

На локальном C: диске виртуальной машины я сопоставил общий сетевой диск ( Z: ), который указывает на другой диск ( F: ) на хосте. Я могу получить доступ к F: диску с виртуальной машины в проводнике Windows.

Я пытаюсь создать новый файл данных SQL Server на F: диске:

 ALTER DATABASE AdventureWorksDW
ADD FILE
    (
        NAME = [FactResellerSales],
        FILENAME = 'Z:SQL_filesAdventureWorksDW_FactResellerSales.ndf',
        SIZE = 100MB,
        MAXSIZE = 1GB,
        FILEGROWTH = 100MB
    )
TO FILEGROUP [FactResellerSales]
  

Это завершается ошибкой:

Сообщение 5133, уровень 16, состояние 1, строка 112
Поиск в каталоге для файла «Z:SQL_filesAdventureWorksDW_FactResellerSales.ndf «сбой с ошибкой операционной системы 3 (система не может найти указанный путь.).

Сообщение 5009, уровень 16, состояние 8, строка 112
Не удалось найти или инициализировать один или несколько файлов, перечисленных в инструкции.

Кажется, я не могу понять, как предоставить SQL Server доступ к этому диску.

Когда я щелкаю правой кнопкой мыши по общей папке ( Z: ), расширенных параметров общего доступа нет (только вкладки «Общие», «Предыдущие версии» и «Настройка»).

Кто-нибудь знает, что еще я мог бы сделать?

Спасибо! J

Ответ №1:

Сопоставления дисков в Windows для каждого пользователя, а не для всей системы. При создании базы данных в общей папке следует использовать путь UNC вместо сопоставления букв диска. См. https://learn.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server-with-smb-fileshare-as-a-storage-option?view=sql-server-ver15

Ответ №2:

вместо z: укажите имя вашего компьютера, например:

\имя_компьютера SQL_filesAdventureWorksDW_FactResellerSales.ndf’

он автоматически укажет на ваш общий диск

Комментарии:

1. Спасибо, Роя, кажется, это работает, но теперь я получаю сообщение об ошибке операционной системы 5 (доступ запрещен). Кажется, я не могу понять, как предоставить SQL Server правильный доступ. В документации BOL я вижу «Учетная запись службы SQL Server и учетная запись службы агента SQL Server должны иметь разрешения на ПОЛНЫЙ контроль общего доступа и разрешения NTFS для общих папок SMB». Я не разбираюсь в разрешениях Windows. Любой способ указать мне правильное направление? TIA

2. В общей папке убедитесь, что оба пользователя mssqlserver и mssqlagent имеют полные разрешения