Не удается подключить базу данных, Ошибка = 'Произошла ошибка активации файла ...' - PullRequest
0 голосов
/ 30 апреля 2019

Я запускаю SQL Server 2017 в контейнере Docker и не могу присоединить к нему базу данных.

Сначала я скопировал .MDF, .NDF, .LDF файлы в контейнер, в котором работает

docker cp /local/folder/of/my/files/db.mdf my-container:db.mdf

(то же самое для 3 файлов), поэтому все 3 файла находятся в корне моего контейнера.

После этого я дал полное разрешение своим файлам (chmod 777).

Я подключился к контейнеру (docker exec -it my-container "bash") и запустил ls, чтобы проверить, действительно ли 3 файлатам я запускаю sqlcmd и подключаюсь к базе данных.

Я запускаю:

CREATE DATABASE PEDIDOS ON
( FILENAME = N'DB.MDF' ),
( FILENAME = N'DB_INDEX.NDF' ),
( FILENAME = N'DB_LOG.NDF' )
FOR ATTACH;
GO

И получаю это сообщение об ошибке:

Msg 5105,Уровень 16, состояние 2, строка 1
Произошла ошибка активации файла.Физическое имя файла «DB.MDF» может быть неправильным.Диагностируйте и исправьте дополнительные ошибки и попробуйте снова выполнить операцию.

Я пробовал много альтернативных форм, например, без N, с / перед именем файла (например, (FILENAME = N'/DB.MDF')), без .NDF файл и ничего не работает.

Эти файлы были сгенерированы SQL Server 2016, это ошибка совместимости?Мол, я прочитал столько вопросов с этой же ошибкой, и все, что ответ был ошибкой прав доступа к файлу .mdf (но я действительно не знаю, как дать это разрешение).

1 Ответ

1 голос
/ 30 апреля 2019

Mrs marc_s ответила очень хорошо, поэтому, если вы получаете эту же ошибку, ответьте:

Переместите файлы в папку данных (по умолчанию /var/opt/mssql/data) и запустите

USE master;
GO

CREATE DATABASE U_DB ON
(FILENAME = N'/var/opt/mssql/data/db.MDF'),
(FILENAME = N'/var/opt/mssql/data/dbLOG.LDF'),
(FILENAME = N'/var/opt/mssql/data/dbINDEX.NDF')
FOR ATTACH;
GO

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