|
Присоединение и отсоединение файла базы данных «*.mdf» необходимо выполнять от имени учетной записи с правами локального администратора компьютера, для этого средства «Администрирование БД» или «Среда SQL Server Management Studio» должны запускаться от имени администратора.
| | Присоединение файла базы данных «*.mdf» следует выполнять с большой осторожностью, т.к. в ходе операции происходит поиск файла «*.ldf», принадлежащего подключаемой базе данных, в его исходном расположении:
-
Если искомый полный путь к файлу «*.ldf» не существует на данном компьютере, в ходе подключения новой базы файл «*.ldf» будет создан в папке рядом с файлом «*.mdf».
-
Если искомый полный путь к файлу совпадет с существующим на данном компьютере, то существующий по данному пути файл «*.ldf» в ходе подключения будет присоединен к новой базе. Т.о., база, которой он принадлежал ранее, станет неработоспособна.
|
Чтобы избежать этого, рекомендуется придерживаться следующих правил:
- не использовать для переноса баз данных между SQL-серверами способ копирования файлов базы данных «*.mdf» и «*.ldf» из папки-источника в папку-получатель, особенно в пределах одного компьютера; вместо этого использовать резервные копии баз данных «*.bak».
- присоединение файла базы данных «*.mdf» из неизвестных источников производить в «Среда SQL Server Management Studio», где есть возможность выяснить исходное расположение файла «*.ldf», принадлежащего подключаемой базе данных. Файлы «*.mdf», которыми Компания Инфострой распространяет БД НСИ, имеют исходное расположение "S:\A0NSIDATA\a0*_log.ldf", поэтому при их присоединении описанная выше опасность крайне маловероятна.
Статьи Microsoft по вопросу присоединения базы данных:
Ошибка присоединения базы данных в модуле «Администрирование БД»
При попытке присоединения файла баз данных «a0_data.mdf» база не отображается в табличной части модуля «Администрирование БД».
Это означает, что в ходе присоединения произошла ошибка. Подробно ошибка описана в протоколе работы модуля.
| | Решение...
|
Открыть окно протокола, нажав на кнопку «Открыть протокол», и найти текст ошибки.
Если решить ошибку самостоятельно невозможно, необходимо обратиться в службу техподдержки поставщика.
В разделе ниже приведены тексты наиболее часто возникающих ошибок и их решение.
|
|
Ошибки присоединения базы данных
Далее описаны наиболее часто возникающие ошибки присоединения базы данных. Тексты ошибок формируются SQL-сервером и выглядят одинаково в протоколе операций модуля «Администрирование БД» и в «Среда SQL Server Management Studio».
-
Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Не удалось выполнить действие "Присоединить базу данных" для следующего объекта: "Сервер", "имя_компьютера\экземпляр_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» в другую папку и произвести присоединение из нее.
|
-
Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Невозможно открыть новую базу данных "A0Data". Операция CREATE DATABASE прервана. Сбой при активации файла. Возможно, физическое имя файла "D:\DATABASE\a0_data_log.LDF" неправильное. Данный журнал не может быть перестроен, пока первичный файл доступен только для чтения. (Microsoft SQL Server, ошибка: 1813)
Это означает, что у службы SQL-сервера недостаточно прав на модификацию присоединяемого файла баз данных «a0_data.mdf», либо на запись в папку, где он расположен.
| | Решение...
Перед операцией присоединения убедиться, что файл баз данных «a0_data.mdf» не защищен от изменения и у службы SQL-сервера есть права на его изменение. Например, права на файл «a0_data.mdf» могли быть ограничены при отсоединении базы.
Также следует убедиться, что у службы SQL-сервера есть права на запись в папку с файлом «a0_data.mdf» присоединяемой базы данных. Это необходимо для создания файла «a0_data_log.ldf» в данной папке в ходе присоединения. Если необходимых прав у службы SQL-сервера на данную папку нет и предоставить их невозможно, следует переместить подключаемый файл базы данных «a0_data.mdf» в папку с необходимыми правами и произвести присоединение из нее.
|
-
Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Не удалось открыть физический файл "D:\DATABASE\a0_data_log.LDF". Ошибка операционной системы 2 (3, 5, 32)
| | Решение...
Убедиться, что присоединяемый файл базы данных «a0_data.mdf» расположен в папке, в которой нет файла с именем «a0_data_log.ldf», и что у службы SQL-сервера есть права на запись в эту папку. Это необходимо для создания в ней файла «a0_data_log.ldf» в ходе присоединения.
Если ошибка была получена при обращении к уже присоединенной базе, такую базу необходимо отсоединить и подсоединить заново, соблюдая описанные выше требования к папке для размещения файлов базы данных.
|
-
Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
Невозможно открыть новую базу данных "A0Data". Операция CREATE DATABASE прервана. Сбой при активации файла. Возможно, физическое имя файла "S:\A0NSIDATA\a0*_log.ldf" неправильное. Данный журнал не может быть перестроен, поскольку эта база данных не была корректно выключена. (.Net SqlClient Data Provider)
Это означает, что база данных была некорректно отсоединена от SQL-сервера, в результате полученный файл «*.mdf» некорректен.
| | Решение...
Корректно отсоединить базу от SQL-сервера и повторить попытку подключения.
Если ошибка повторяется, использовать перенос базы данных с одного SQL-сервера на другой SQL-сервер с помощью файла резервной копии.
Если источник базы не собственный, обратиться к поставщику базы данных с описанием проблемы.
|
5. Если при попытке присоединения файла баз данных «a0_data.mdf» выводится сообщение об ошибке:
5.1: Во время выполнения скрипта произошла ошибка: Не удалось открыть базу данных "A0Data", поскольку она имеет версию 782. Данный сервер поддерживает версию 612 и более ранние. Переход на предыдущую версию не поддерживается.
Это означает, что к SQL-серверу подключается база данных, отсоединенная от SQL-сервера более старшей версии.
| | Решение...
Обратная совместимость версий баз данных в Microsoft SQL Server не поддерживается. Необходимо либо обновить текущий экземпляр до необходимой версии, либо выбрать другой или установить новый экземпляр Microsoft SQL Server соответствующей версии. Версии баз и версии SQL-сервера представлены в таблице ниже.
|
5.2: Во время выполнения скрипта произошла ошибка: Не удалось обновить базу данных "A0Data", поскольку ее промежуточная версия (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
|
|