Присоединение базы данных

Применимо к:SQL Server

В этой статье описывается, как подключить базу данных в SQL Server с SQL Server Management Studio или Transact-SQL. Эту функцию можно использовать для копирования, перемещения или обновления базы данных SQL Server.

ограничения

Список ограничений и ограничений см. в разделе "Отсоединение базы данных" и "Подключение" (SQL Server).

Предварительные условия

Прежде чем продолжить, ознакомьтесь со следующими предварительными требованиями:

  • Если вы перемещаете базу данных из одного экземпляра в другой, ее необходимо сначала отсоединить от любого существующего экземпляра SQL. Попытка присоединить неотсоединенную базу данных приведет к возникновению ошибки. Дополнительные сведения см. в разделе Отсоединение базы данных.

  • При присоединении базы данных должны быть доступны все ее файлы данных. Они часто имеют расширения .MDF или .NDF (файлы данных), а также .LDF (файлы журнала транзакций). Кроме того, должны присутствовать и быть доступными все файловые группы для данных FILESTREAM. Дополнительные сведения о присоединении базы данных с поддержкой FILESTREAM см. в статье Перемещение базы данных с поддержкой FILESTREAM.

  • Если у какого-либо файла данных путь отличается от того, каким он был при первом создании или последнем присоединении, необходимо указать текущий путь к файлу.

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

  • Если MDF-файлы и LDF-файлы находятся в разных каталогах и один из путей содержит \\?\GlobalRoot, при присоединении базы данных произойдет сбой.

Для чего использовать присоединение?

При перемещении файлов базы данных в пределах одного экземпляра рекомендуется использовать запланированное перемещение ALTER DATABASE вместо отсоединения и присоединения. Дополнительные сведения см. в статье Move User Databases.

Не рекомендуется использовать отсоединение и присоединение для резервного копирования и восстановления. При отсоединении файлов для внешнего резервного копирования из SQL Server резервные копии журналов транзакций или восстановление до точки во времени будут недоступны.

Безопасность

Разрешения на доступ к файлам устанавливаются во время ряда операций с базами данных, включая их отсоединение и присоединение. При присоединении и отсоединении базы данных ядро СУБД пытается олицетворить учетную запись Windows работающего подключения, чтобы предоставить учетной записи разрешения для доступа к файлам базы данных и журналов. Для учетных записей со смешанным режимом безопасности, использующих учетные данные SQL Server, олицетворение может завершиться сбоем.

В следующей таблице перечислены разрешения файлов базы данных и журналов после завершения присоединения или отсоединения, а также указано, может ли ядро СУБД олицетворить подключающуюся учетную запись.

Операция Подключение учетной записи можно олицетворить Разрешения на файлы предоставляются
Detach Да Только учетная запись, выполняющая операцию. Администратор операционной системы может добавить дополнительные учетные записи, если они понадобятся после отсоединения базы данных.
Detach No Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows.
Attach Да Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows.
Attach No Учетной записи службы SQL Server (MSSQLSERVER).

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

Внимание

Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код. Дополнительные сведения о присоединении баз данных и сведения об изменениях, вносимых при присоединении баз данных в метаданные, см. в статье Присоединение и отсоединение базы данных (SQL Server).

Разрешения

Требуется разрешение CREATE DATABASE, CREATE ANY DATABASE или ALTER ANY DATABASE.

Использование SQL Server Management Studio (SSMS)

Перед перемещением базы данных

Если вы перемещаете базу данных, перед ее отсоединением от существующего экземпляра SQL Server просмотрите связанные с ней файлы и их текущее расположение на странице Свойства базы данных.

  1. В обозревателе объектов SQL Server Management Studio подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните экземпляр.

  2. Раскройте список Базы данныхи выберите имя пользовательской базы данных, которую необходимо отсоединить.

  3. Щелкните правой кнопкой мыши имя базы данных и выберите Свойства. Выберите страницу Файлы и просмотрите записи в таблице Файлы базы данных.

Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем переходите к этапам отсоединения, копирования файлов и присоединения базы данных, описанным в следующем разделе. Дополнительные сведения см. в разделе Отсоединение базы данных.

Присоединение базы данных

  1. В обозревателе объектов SQL Server Management Studio подключитесь к экземпляру ядра СУБД SQL Server, а затем выберите, чтобы развернуть это представление экземпляра в SSMS.

  2. Щелкните правой кнопкой мыши узел Базы данных и выберите Присоединить.

  3. В диалоговом окне Присоединение базы данных выберите Добавить, чтобы указать присоединяемую базу данных. В диалоговом окне Поиск файлов базы данных выберите расположение базы данных и разверните дерево каталогов, чтобы найти и выбрать ее MDF-файл, например:

    C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf

    Внимание

    При попытке выбора базы данных, которая уже присоединена, возникает ошибка.

    Базы данных для присоединения
    Отобразятся сведения о выбранных базах данных.

    <без заголовка столбца>
    Отображается значок, указывающий на состояние операции присоединения. Возможные варианты значков перечислены в описании Состояние ниже.

    Расположение файла MDF
    Отображается путь и имя выбранного MDF-файла.

    Имя базы данных
    Отображается имя базы данных.

    Присоединить как
    Необязательный параметр, указывает другое имя, под которым присоединяется база данных.

    Ответственное лицо
    Содержит раскрывающийся список возможных владельцев базы данных, из которого при необходимости можно выбрать другого владельца.

    Состояние
    Отображает состояние базы данных в соответствии со следующей таблицей:

    Значок Текст состояния Description
    (Нет значка) (Нет текста) Присоединение не начато или находится в режиме ожидания для этого объекта. Это состояние по умолчанию при открытии диалогового окна.
    Зеленый, указывающий направо треугольник В процессе Операция присоединения была запущена, но не завершена.
    Зеленый флажок Удачное завершение Объект успешно присоединен.
    Красный кружок с белым крестом внутри Ошибка При выполнении операции присоединения возникла ошибка, и операция не была успешно завершена.
    Кружок с двумя черными квадратами (слева и справа) и двумя белыми квадратами (сверху и снизу) Остановлено Присоединение не было завершено, поскольку вы остановили его выполнение.
    Кружок, содержащий изогнутую стрелку, указывающую в направлении против часовой стрелки Выполнен откат Операция присоединения была успешной, но был выполнен ее откат из-за ошибки, возникшей при вложении другого объекта.

    Сообщение
    Отображается пустое сообщение или гиперссылка «Файл не найден».

    Прибавить
    Найдите необходимые основные файлы базы данных. Когда вы выбираете MDF-файл, необходимые сведения автоматически вводятся в соответствующие поля сетки Базы данных для присоединения.

    Удалить
    Удаляет выбранный файл из сетки Базы данных для присоединения .

    Сведения о базе данных "<database_name">
    Отображаются имена файлов, которые необходимо присоединить. Чтобы проверить или изменить путь к файлу, нажмите кнопку Обзор ().

    Заметка

    Если файл не существует, в столбце сообщения отображается сообщение "Не найдено". Если файл журнала не найден, он существует в другом каталоге или удален. Необходимо или обновить путь файла в сетке Сведения о базе данных таким образом, чтобы этот путь указывал на правильное расположение, или удалить файл журнала из сетки. Если MDF-файл не найден, необходимо обновить путь этого файла в сетке таким образом, чтобы этот путь указывал на правильное расположение.

    Имя исходного файла
    Отображается имя присоединенного файла, принадлежащего базе данных.

    Тип файла
    Указывается тип файла: Данные или Журнал.

    Текущий путь к файлу
    Отображается путь к выбранному файлу базы данных. Путь может быть изменен вручную.

    Сообщение
    Отображается пустое сообщение или гиперссылка "Файл не найден".

Использование Transact-SQL

Перед перемещением базы данных

Если вы перемещаете базу данных, перед ее отсоединением от существующего экземпляра SQL Server просмотрите связанные с ней файлы и их текущее расположение в представлении системного каталога sys.database_files. Для получения дополнительной информации см. sys.database_files (Transact-SQL).

  1. В СРЕДЕ SQL Server Management Studio выберите новый запрос , чтобы открыть редактор запросов.

  2. Скопируйте следующий скрипт Transact-SQL в редактор запросов и нажмите кнопку "Выполнить". Этот скрипт показывает расположение физических файлов базы данных. Убедитесь, что при перемещении базы данных путем отсоединения и присоединения вы проверили все файлы.

    USE [database_name] 
    GO  
    SELECT type_desc, name, physical_name from sys.database_files;
    

Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем переходите к этапам отсоединения, копирования файлов и присоединения базы данных, описанным в следующем разделе. Дополнительные сведения см. в разделе Отсоединение базы данных.

Присоединение базы данных

  1. Соединитесь с ядром СУБД .

  2. На стандартной панели выберите пункт Создать запрос.

  3. Выполните инструкцию CREATE DATABASE с предложением FOR ATTACH.

    Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. Этот пример присоединяет все файлы базы данных AdventureWorks2022 и переименовывает базу данных MyAdventureWorksв .

    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),   
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')   
        FOR ATTACH;  
    

    Если в вашей базе данных содержатся дополнительные файлы данных (чаще всего .MDF или .NDF), их необходимо включить в инструкцию CREATE DATABASE ... FOR ATTACH. Кроме того, в инструкцию также следует включить все файловые группы для данных FILESTREAM. Дополнительные сведения о присоединении базы данных с поддержкой FILESTREAM см. в статье Перемещение базы данных с поддержкой FILESTREAM.

    Заметка

    Кроме того, можно вызвать хранимую процедуру sp_attach_db или sp_attach_single_file_db . Однако эти процедуры будут удалены в будущей версии Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого рекомендуется использовать CREATE DATABASE ... FOR ATTACH .

После обновления базы данных SQL Server

Уровень совместимости базы данных

После обновления базы данных с помощью присоединения она становится доступной. База данных автоматически обновится до уровня внутренней версии нового экземпляра. Если база данных содержит полнотекстовые индексы, то в процессе обновления будет произведен их импорт, сброс или перестроение в зависимости от установленного значения свойства сервера Режим обновления полнотекстового каталога . Если выбран режим обновления Импортировать или Перестроить, полнотекстовые индексы будут недоступны во время обновления. В зависимости от объема индексируемых данных импорт может занять несколько часов, а перестроение — в несколько (до 10) раз больше. Обратите внимание, что если при обновлении выбран режим Импортировать, а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены.

После обновления уровень совместимости базы данных останется неизменным, если только он не является в новой версии неподдерживаемым. В последнем случае обновленный уровень совместимости базы данных устанавливается как самый низкий из поддерживаемых. Например, если вы подключаете базу данных, которая была уровнем совместимости 90 перед присоединением к экземпляру SQL Server 2019 (15.x), после обновления уровня совместимости установлено значение 100, что является самым низким поддерживаемым уровнем совместимости в SQL Server 2019 (15.x). Дополнительные сведения см. в разделе Уровень совместимости ALTER DATABASE (Transact-SQL).

Система отслеживания измененных данных (CDC)

Если вы подключаете базу данных из экземпляра SQL Server 2014 (12.x) или более ранней версии, включив запись измененных данных (CDC), необходимо выполнить следующую команду, чтобы обновить метаданные отслеживания измененных данных (CDC):

USE <database name>
EXEC sys.sp_cdc_vupgrade  

Дополнительные сведения см. в статье Ошибка при присоединении базы данных с поддержкой CDC к экземпляру SQL Server 2016 или 2017 на Windows.

См. также

Далее