Проблемы присоединения файла базы данных «*.mdf» к SQL-серверу
Присоединение и отсоединение файла базы данных «*.mdf» необходимо выполнять от имени учетной записи с
правами локального администратора компьютера, для этого средства «Администрирование БД» или
«Среда SQL Server Management Studio» должны запускаться от имени администратора.
правами локального администратора компьютера, для этого средства «Администрирование БД» или
«Среда SQL Server Management Studio» должны запускаться от имени администратора.
В случае использования собственного экземпляра SQL-сервера во избежание ошибок при
подключении баз необходимо заранее обеспечить права учетной записи службы SQL-сервера на каталог с файлами баз данных. Подробнее в статье Microsoft: https://docs.microsoft.com/ru-ru/sql/database-engine/configure-windows/configure-file-system-permissions-for-database-engine-access. |
С политикой Microsoft по вопросу прав на файлы баз данных можно ознакомиться в статье: https://msdn.microsoft.com/ru-ru/library/jj219062(v=sql.120).aspx
Присоединение файла базы данных «*.mdf» следует выполнять с большой осторожностью, т.к. в
ходе операции происходит поиск файла «*.ldf», принадлежащего подключаемой базе данных, в его исходном расположении:
|
Чтобы избежать этого, рекомендуется придерживаться следующих правил:
- не использовать для переноса баз данных между SQL-серверами способ копирования файлов базы данных
«*.mdf» и «*.ldf» из папки-источника в папку-получатель, особенно в пределах одного компьютера; вместо этого
использовать
резервные копии баз данных «*.bak».
«*.mdf» и «*.ldf» из папки-источника в папку-получатель, особенно в пределах одного компьютера; вместо этого
использовать
резервные копии баз данных «*.bak».
- присоединение файла базы данных «*.mdf» из неизвестных источников производить в «Среда SQL
Server Management Studio», где есть возможность выяснить исходное расположение файла «*.ldf»,
принадлежащего подключаемой базе данных. Файлы «*.mdf», которыми Компания Инфострой распространяет
БД НСИ, имеют исходное расположение "S:\A0NSIDATA\a0*_log.ldf", поэтому при их присоединении описанная
выше опасность крайне маловероятна.
Server Management Studio», где есть возможность выяснить исходное расположение файла «*.ldf»,
принадлежащего подключаемой базе данных. Файлы «*.mdf», которыми Компания Инфострой распространяет
БД НСИ, имеют исходное расположение "S:\A0NSIDATA\a0*_log.ldf", поэтому при их присоединении описанная
выше опасность крайне маловероятна.
Статьи Microsoft по вопросу присоединения базы данных:
Ошибка присоединения базы данных в модуле «Администрирование БД»
При попытке присоединения файла баз данных «a0_data.mdf» база не отображается в табличной части модуля «Администрирование БД».

Это означает, что в ходе присоединения произошла ошибка. Подробно ошибка описана в протоколе работы
модуля.
модуля.
|
Ошибки присоединения базы данных
Далее описаны наиболее часто возникающие ошибки присоединения базы данных. Тексты ошибок формируются
SQL-сервером и выглядят одинаково в протоколе операций модуля «Администрирование БД» и в «Среда
SQL Server Management Studio».
SQL-сервером и выглядят одинаково в протоколе операций модуля «Администрирование БД» и в «Среда
SQL Server Management Studio».
1. Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Не удалось выполнить действие "Присоединить базу данных" для следующего объекта:
"Сервер", "имя_компьютера\экземпляр_SQL-сервера". (Microsoft.SqlServer.Smo) Один или несколько
файлов не соответствуют основному файлу базы данных. Если предпринимается попытка
присоединить базу данных, повторно выполните операцию с использованием правильных файлов.
Если такая база данных существует, файл может быть поврежден и должен быть восстановлен из
резервной копии. (.Net SqlClient Data Provider).
"Сервер", "имя_компьютера\экземпляр_SQL-сервера". (Microsoft.SqlServer.Smo) Один или несколько
файлов не соответствуют основному файлу базы данных. Если предпринимается попытка
присоединить базу данных, повторно выполните операцию с использованием правильных файлов.
Если такая база данных существует, файл может быть поврежден и должен быть восстановлен из
резервной копии. (.Net SqlClient Data Provider).
Это означает, что в папке с файлом базы данных «a0_data.mdf» находится файл «a0_data_log.ldf», не
принадлежащий присоединяемой базе и перезаписать его невозможно либо из-за недостаточности прав пользователя либо потому, что он принадлежит другой базе, которая в данный момент активна.
принадлежащий присоединяемой базе и перезаписать его невозможно либо из-за недостаточности прав пользователя либо потому, что он принадлежит другой базе, которая в данный момент активна.
Перед операцией присоединения убедиться, что в папке с файлом базы данных «a0_data.mdf» находится
файл «a0_data_log.ldf» принадлежащий присоединяемой базе, либо отсутствует совсем. Если файл «a0_data_log.ldf» принадлежит другой базе, которая в данный момент активна, то следует
переместить подключаемый файл базы данных «a0_data.mdf» в другую папку и произвести присоединение из нее. |
2. Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Невозможно открыть новую базу данных "A0Data". Операция CREATE DATABASE прервана. Сбой при
активации файла. Возможно, физическое имя файла "D:\DATABASE\a0_data_log.LDF" неправильное.
Данный журнал не может быть перестроен, пока первичный файл доступен только для чтения.
(Microsoft SQL Server, ошибка: 1813)
активации файла. Возможно, физическое имя файла "D:\DATABASE\a0_data_log.LDF" неправильное.
Данный журнал не может быть перестроен, пока первичный файл доступен только для чтения.
(Microsoft SQL Server, ошибка: 1813)
Это означает, что у службы SQL-сервера недостаточно прав на модификацию присоединяемого файла баз
данных «a0_data.mdf», либо на запись в папку, где он расположен.
данных «a0_data.mdf», либо на запись в папку, где он расположен.
Перед операцией присоединения убедиться, что файл баз данных «a0_data.mdf» не защищен от изменения и
у службы SQL-сервера есть права на его изменение. Например, права на файл «a0_data.mdf» могли быть ограничены при отсоединении базы. Также следует убедиться, что у службы SQL-сервера есть права на запись в папку с файлом «a0_data.mdf»
присоединяемой базы данных. Это необходимо для создания файла «a0_data_log.ldf» в данной папке в ходе присоединения. Если необходимых прав у службы SQL-сервера на данную папку нет и предоставить их невозможно, следует переместить подключаемый файл базы данных «a0_data.mdf» в папку с необходимыми правами и произвести присоединение из нее. Настройка разрешений файловой системы для доступа службе SQL-сервера подробно описана в статье
Microsoft: https://msdn.microsoft.com/ru-ru/library/jj219062(v=sql.120).aspx. |
3. Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Не удалось открыть физический файл "D:\DATABASE\a0_data_log.LDF". Ошибка операционной
системы 2 (3, 5, 32)
системы 2 (3, 5, 32)
Убедиться, что присоединяемый файл базы данных «a0_data.mdf» расположен в папке, в которой нет файла с
именем «a0_data_log.ldf», и что у службы SQL-сервера есть права на запись в эту папку. Это необходимо для создания в ней файла «a0_data_log.ldf» в ходе присоединения. Если ошибка была получена при обращении к уже присоединенной базе, такую базу необходимо отсоединить
и подсоединить заново, соблюдая описанные выше требования к папке для размещения файлов базы данных. |
4. Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Невозможно открыть новую базу данных "A0Data". Операция CREATE DATABASE прервана. Сбой при
активации файла. Возможно, физическое имя файла "S:\A0NSIDATA\a0*_log.ldf" неправильное. Данный
журнал не может быть перестроен, поскольку эта база данных не была корректно выключена.
(.Net SqlClient Data Provider)
активации файла. Возможно, физическое имя файла "S:\A0NSIDATA\a0*_log.ldf" неправильное. Данный
журнал не может быть перестроен, поскольку эта база данных не была корректно выключена.
(.Net SqlClient Data Provider)
Это означает, что база данных была некорректно отсоединена от SQL-сервера, в результате полученный файл «*.mdf» некорректен.
Корректно отсоединить базу от SQL-сервера и повторить попытку подключения.
Если ошибка повторяется, использовать перенос базы данных с одного SQL-сервера на другой SQL-сервер с помощью файла резервной копии.
Если источник базы не собственный, обратиться к поставщику базы данных с описанием проблемы.
|
5. Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
5.1: Во время выполнения скрипта произошла ошибка: Не удалось открыть базу данных "A0Data",
поскольку она имеет версию 782. Данный сервер поддерживает версию 612 и более ранние. Переход
на предыдущую версию не поддерживается.
поскольку она имеет версию 782. Данный сервер поддерживает версию 612 и более ранние. Переход
на предыдущую версию не поддерживается.
Это означает, что к SQL-серверу подключается база данных, отсоединенная от SQL-сервера более старшей
версии.
версии.
Обратная совместимость версий баз данных в Microsoft SQL Server не поддерживается. Необходимо либо
обновить текущий экземпляр до необходимой версии, либо выбрать другой или установить новый экземпляр Microsoft SQL Server соответствующей версии. Версии баз и версии SQL-сервера представлены в таблице ниже. |
5.2: Во время выполнения скрипта произошла ошибка: Не удалось обновить базу данных "A0Data",
поскольку ее промежуточная версия (539) не поддерживается данной версией SQL Server. Нельзя открыть базу данных, несовместимую с данной версией SQL Server.
поскольку ее промежуточная версия (539) не поддерживается данной версией SQL Server. Нельзя открыть базу данных, несовместимую с данной версией SQL Server.
Это означает, что к SQL-серверу подключается база данных, отсоединенная от SQL-сервера более младшей
версии, которая несовместима с текущей.
версии, которая несовместима с текущей.
Необходимо обновить базу данных до версии, совместимой с необходимым экземпляром SQL-сервера, путем
присоединения ее к промежуточной версии SQL-сервера. После этого отсоединить ее и присоединить к требуемому SQL-серверу, на котором возникала ошибка. Версии баз и версии SQL-сервера представлены в таблице ниже. |
Соответствие версий баз данных версиям SQL-сервера
|
Версия сервера
|
Номер версии
|
Версия базы
|
Поддерживаемые уровни совместимости
|
|
SQL Server 2000
|
8.00.194
|
539
|
80
|
|
SQL Server 2005
|
9.00.1399
|
611
|
90, 80
|
|
SQL Server 2005 with SP2
|
9.00.3042
|
612
|
90, 80
|
|
SQL Server 2008
|
10.00.1600
|
655
|
100, 90, 80
|
|
SQL Server 2008 with SP2
|
10.00.4000
|
655/662
|
100, 90, 80
|
|
SQL Server 2008R2
|
10.50.1600
|
661
|
100, 90, 80
|
|
SQL Server 2008R2 with SP1
|
10.50.2500
|
661/663
|
100, 90, 80
|
|
SQL Server 2012
|
11.00.2100
|
706
|
110, 100, 90
|
|
SQL Server 2014
|
12.0
|
782
|
120, 110, 100
|
|
SQL Server 2016
|
13.0
|
841
|
130, 120, 110, 100
|
|
SQL Server 2016 with SP1
|
13.0
|
852
|
130, 120, 110, 100
|
|
SQL Server 2017
|
14.0
|
869
|
140, 130, 120, 110, 100
|
|
SQL Server 2019
|
15.0
|
904
|
150, 140, 130, 120, 110, 100
|
|
SQL Server 2022
|
16.0
|
957
|
160,150, 140, 130, 120, 110, 100
|

