Подключить sql базу без лог файла
Проверено - файла базы mdf - нет. Лог ldf есть, модель - full. Есть full backup. Почти свежий, от 09.2016 но имея лог от 14.10.2016, хотелось бы свежее.
Что попытался сделать сам:
- Создал бэкап сохранившегося лога: Создал базу KA на другом сервере, ALTER DATABASE [KA] SET OFFLINE . удалил файлы, залил свой ka_log.ldf ALTER DATABASE [KA] SET ONLINE , получил свой Unable to open the physical file mdf и т.д. сделал BACKUP LOG [ka] TO DISK = N'D:\Tail.bak' WITH NO_TRUNCATE;
- Восстановил базу из имеющегося бк - RESTORE DATABASE [ka] FROM DISK = N'C:\2016.Bak' WITH NORECOVERY, REPLACE
- Попытался вернуть лог - RESTORE LOG [ka] FROM DISK = N'D:\Tail.bak' WITH FILE = 1, NOUNLOAD, STATS = 1, NORECOVERY, CONTINUE_AFTER_ERROR
Результат - Произошла ошибка во время обработки журнала для базы данных "ka". Если возможно, восстановите из резервной копии. Если резервная копия недоступна, возможно, понадобится перестроить журнал.
Все. В этом месте я кончился. Нутром чувствую, что должен быть какой-то способ добраться до данных, но не пойму как.
Перестроить лог не могу - я сижу в рекавери стейт. Выйти из рекавери не могу - у меня проблемы с восстановленным журналом транзакций.
Предварительные требования
Прежде чем продолжить, ознакомьтесь со следующими предварительными требованиями:
Если вы перемещаете базу данных из одного экземпляра в другой, ее необходимо сначала отсоединить от любого существующего экземпляра SQL. Попытка присоединить неотсоединенную базу данных приведет к возникновению ошибки. Дополнительные сведения см. в разделе Отсоединение базы данных.
При присоединении базы данных должны быть доступны все ее файлы данных. Они часто имеют расширения .MDF или .NDF (файлы данных), а также .LDF (файлы журнала транзакций). Кроме того, должны присутствовать и быть доступными все файловые группы для данных FILESTREAM. Дополнительные сведения о присоединении базы данных с поддержкой FILESTREAM см. в статье Перемещение базы данных с поддержкой FILESTREAM.
Если у какого-либо файла данных путь отличается от того, каким он был при первом создании или последнем присоединении, необходимо указать текущий путь к файлу.
Учетная запись службы ядра СУБД должна обладать разрешениями на чтение файлов в их новом расположении.
Если MDF-файлы и LDF-файлы находятся в разных каталогах и один из путей содержит \\?\GlobalRoot , при присоединении базы данных произойдет сбой.
Отсоединение базы данных
Отсоединение базы данных означает удаление ее с экземпляра SQL Server , но сама база данных остается неповрежденной со всеми своими файлами данных и журналов транзакций. Эти файлы затем можно использовать для присоединения базы данных к любому экземпляру SQL Server, включая сервер, от которого она была отсоединена.
Базу данных невозможно отсоединить в следующих случаях.
База данных реплицируется и публикуется. При репликации база данных должна быть снята с публикации. Перед тем как отсоединить базу данных, необходимо отключить публикацию, выполнив процедуру sp_replicationdboption.
Если невозможно использовать процедуру sp_replicationdboption, можно удалить репликацию, выполнив процедуру sp_removedbreplication.
Имеется моментальный снимок базы данных.
Перед отсоединением базы данных необходимо удалить все моментальные снимки. Дополнительные сведения см. в разделе Удаление моментального снимка базы данных (Transact-SQL).
Невозможно отсоединить или присоединить моментальный снимок базы данных.
Эта база данных является частью группы доступности AlwaysOn.
База данных не может быть отсоединена, пока она не будет удалена из группы доступности. Дополнительные сведения см. в разделе Удаление базы данных — источника из группы доступности Always On.
База данных находится в сеансе зеркального копирования.
Отключить базу данных невозможно, пока этот сеанс не завершится. Дополнительные сведения см. в разделе Удаление зеркального отображения базы данных (SQL Server).
База данных помечена как подозрительная. Подозрительную базу данных невозможно отсоединить. Для отсоединения ее необходимо перевести в аварийный режим. Дополнительные сведения о переводе базы данных в аварийный режим см. в разделе ALTER DATABASE (Transact-SQL).
База данных является системной базой данных.
Пример
В следующем примере создается копия базы данных AdventureWorks2012 с именем MyAdventureWorks . Инструкции Transact-SQL выполняются в окне редактора запросов, подключенном к экземпляру сервера, к которому выполнено присоединение.
Отсоедините базу данных AdventureWorks2012 . Для этого выполните следующие инструкции Transact-SQL .
Скопируйте любым образом файлы базы данных (AdventureWorks208R2_Data.mdf и AdventureWorks208R2_log) в папки C:\MySQLServer\AdventureWorks208R2_Data.mdf и C:\MySQLServer\AdventureWorks208R2_Log.ldf, соответственно.
При работе с производственными базами данных помещайте базу данных и журналы транзакций на отдельные диски.
При копировании файлов по сети на диск удаленного компьютера укажите имя удаленного места в формате UNC. Имя UNC имеет следующий формат: \\ имя_сервера \ имя_общего_хранилища \ путь \ имя_файла. Как и при записи файлов на жесткий диск локального компьютера, для записи (или считывания) файла на диск удаленного компьютера учетной запись пользователя, которая используется экземпляром SQL Server, должны быть предоставлены соответствующие разрешения.
Присоедините перемещенную базу данных и, возможно, ее журнал, выполнив следующие инструкции Transact-SQL :
В среде SQL Server Management Studioтолько что присоединенная база данных отображается в обозревателе объектов не сразу. Чтобы отобразить базу данных, щелкните в обозревателе объектов пункт Вид , а затем Обновить. Теперь, раскрыв в обозревателе объектов узел Базы данных , можно увидеть в списке присоединенную базу данных.
В этой статье описывается, как присоединить базу данных в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Эту функцию можно использовать для копирования, перемещения или обновления базы данных SQL Server.
Ограничения
Присоединение базы данных
В обозревателе объектов SQL Server Management Studio подключитесь к экземпляру Компонент SQL Server Database Engine и разверните его представление в SSMS.
Щелкните правой кнопкой мыши узел Базы данных и выберите Присоединить.
В диалоговом окне Присоединение базы данных выберите Добавить, чтобы указать присоединяемую базу данных. В диалоговом окне Поиск файлов базы данных выберите расположение базы данных и разверните дерево каталогов, чтобы найти и выбрать ее MDF-файл, например:
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf
При попытке выбора базы данных, которая уже присоединена, возникает ошибка.
Базы данных для присоединения
Отобразятся сведения о выбранных базах данных.
Отображается значок, указывающий на состояние операции присоединения. Возможные варианты значков перечислены в описании Состояние ниже.
Расположение файла MDF
Отображается путь и имя выбранного MDF-файла.
Имя базы данных
Отображается имя базы данных.
Присоединить как
Необязательный параметр, указывает другое имя, под которым присоединяется база данных.
Владелец
Содержит раскрывающийся список возможных владельцев базы данных, из которого при необходимости можно выбрать другого владельца.
Состояние
Отображает состояние базы данных в соответствии со следующей таблицей:
Значок | Текст состояния | Описание |
---|---|---|
(Нет значка) | (Нет текста) | Присоединение не начато или находится в режиме ожидания для этого объекта. Это состояние по умолчанию при открытии диалогового окна. |
Зеленый, указывающий направо треугольник | Выполняется | Операция присоединения была запущена, но не завершена. |
Зеленый флажок | Успешно | Объект успешно присоединен. |
Красный кружок с белым крестом внутри | Error | При выполнении операции присоединения возникла ошибка, и операция не была успешно завершена. |
Кружок с двумя черными квадратами (слева и справа) и двумя белыми квадратами (сверху и снизу) | Остановлена | Присоединение не было завершено, поскольку вы остановили его выполнение. |
Кружок, содержащий изогнутую стрелку, указывающую в направлении против часовой стрелки | Выполнен откат | Операция присоединения была успешной, но был выполнен ее откат из-за ошибки, возникшей при вложении другого объекта. |
Добавление
Найдите необходимые основные файлы базы данных. Когда вы выбираете MDF-файл, необходимые сведения автоматически вводятся в соответствующие поля сетки Базы данных для присоединения.
Удалить
Удаляет выбранный файл из сетки Базы данных для присоединения .
Сведения о базе данных " "
Отображаются имена файлов, которые необходимо присоединить. Чтобы проверить или изменить путь к файлу, нажмите кнопку Обзор ( … ).
Имя исходного файла
Отображается имя присоединенного файла, принадлежащего базе данных.
Тип файла
Указывается тип файла: Данные или Журнал.
Текущий путь к файлу
Отображается путь к выбранному файлу базы данных. Путь может быть изменен вручную.
Изменение метаданных при присоединении базы данных
Если база данных, доступная только для чтения, отсоединяется, а затем снова присоединяется, то данные о текущей базовой копии для разностного копирования будут утеряны. Базовая копия для разностного копирования — это последняя из полных резервных копий всех данных из базы данных или из подмножества файлов и файловых групп, содержащихся в базе данных. Без сведений о базовой резервной копии база данных master утрачивает синхронизацию с базой данных, доступной только для чтения, и дальнейшее создание разностных резервных копий может привести к непредвиденным результатам. Таким образом, если с базой данных, доступной только для чтения, используются разностные резервные копии, то после повторного присоединения базы данных необходимо установить новую базовую копию для разностного копирования, создав полную резервную копию. Сведения о разностных резервных копиях см. в разделе Разностные резервные копии (SQL Server).
После присоединения происходит запуск базы данных. Обычно присоединение базы данных переводит ее в то же состояние, в котором она находилась на момент отсоединения или копирования. Однако операции присоединения и отсоединения отключают создание межбазовых цепочек владения для этой базы данных. Сведения о том, как включить цепочки владения, см. в разделе Параметр конфигурации сервера "cross db ownership chaining".
По умолчанию в целях безопасности параметры is_broker_enabled, is_honor_broker_priority_on и is_trustworthy_on устанавливаются в значение OFF при подключении базы данных. Сведения о том, как установить эти параметры в значение ON, см. в статье ALTER DATABASE (Transact-SQL). Дополнительные сведения о метаданных см. в статье Управление метаданными при предоставлении доступа к базе данных на другом сервере.
безопасность
Разрешения на доступ к файлам устанавливаются во время ряда операций с базами данных, включая их отсоединение и присоединение. При присоединении и отсоединении базы данных ядро СУБД пытается олицетворить учетную запись Windows работающего подключения, чтобы предоставить учетной записи разрешения для доступа к файлам базы данных и журналов. Для учетных записей со смешанным режимом безопасности, использующих учетные данные SQL Server, олицетворение может завершиться сбоем.
В следующей таблице перечислены разрешения файлов базы данных и журналов после завершения присоединения или отсоединения, а также указано, может ли ядро СУБД олицетворить подключающуюся учетную запись.
Операция | Возможно олицетворение учетной записи подключения | Кому предоставляются разрешения на доступ к файлам |
---|---|---|
Detach | Да | Только учетной записи, выполняющей операцию. Администратор операционной системы может добавить дополнительные учетные записи, если они понадобятся после отсоединения базы данных. |
Detach | Нет | Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows. |
Attach | Да | Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows. |
Attach | Нет | Учетной записи службы SQL Server (MSSQLSERVER). |
Дополнительные сведения о разрешениях файловой системы, предоставляемых идентификаторам безопасности служб для SQL Server, см. в статье Настройка разрешений файловой системы для доступа к ядру СУБД.
Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код. Дополнительные сведения о присоединении баз данных и сведения об изменениях, вносимых при присоединении баз данных в метаданные, см. в статье Присоединение и отсоединение базы данных (SQL Server).
Permissions
Требуется разрешение CREATE DATABASE , CREATE ANY DATABASE или ALTER ANY DATABASE .
безопасность
Разрешения на доступ к файлам устанавливаются во время выполнения определенных операций с базами данных, включая отсоединение и присоединение баз данных.
Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных.
Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.
Резервное копирование, восстановление и присоединение
Подобно любой базе данных, которая полностью или частично вне сети, база данных с восстановлением файлов не может быть присоединена. Базу данных можно присоединить после остановки последовательности восстановления. Затем можно снова запустить последовательность восстановления.
Присоединение базы данных без файла журнала транзакций
Что если вы перемещаете базу данных на новый сервер, отсоединяя (detach) и снова присоединяя файлы базы данных, и кто-то (конечно, не вы) потерял файл журнала? Что если требуется перевести старую базу данных в режим онлайн, но к вам пришел человек, у которого имеется только mdf файл? Можно все же присоединить базу данных в подобных случаях? Давайте это выясним.
Сейчас у нас имеются файлы mdf и ldf для базы данных ExampleDB.
Чтобы перейти к нашему тесту, давайте отсоединим базу данных в SSMS:
Теперь мы можем выбрать наш файл ExampleDB_log.ldf в проводнике Windows и удалить его. Останется только mdf.
Давайте вернемся в SSMS, выполним щелчок правой кнопкой на папке Databases в браузере объектов и выберем “Attach…”:
Щелкнем кнопку Add в районе середины окна и выберем наш файл ExampleDB.mdf:
Резервное копирование, восстановление и отсоединение
Для разностных резервных копий отсоединение базы данных, доступной только для чтения, приводит к потере сведений о базовой копии для разностного копирования. Дополнительные сведения см. в разделе Разностные резервные копии (SQL Server).
Уровень совместимости базы данных
После обновления базы данных с помощью присоединения она становится доступной. База данных автоматически обновится до уровня внутренней версии нового экземпляра. Если база данных содержит полнотекстовые индексы, то в процессе обновления будет произведен их импорт, сброс или перестроение в зависимости от установленного значения свойства сервера Режим обновления полнотекстового каталога . Если выбран режим обновления Импортировать или Перестроить, полнотекстовые индексы будут недоступны во время обновления. В зависимости от объема индексируемых данных импорт может занять несколько часов, а перестроение — в несколько (до 10) раз больше. Обратите внимание, что если при обновлении выбран режим Импортировать, а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены.
После обновления уровень совместимости базы данных останется неизменным, если только он не является в новой версии неподдерживаемым. В последнем случае обновленный уровень совместимости базы данных устанавливается как самый низкий из поддерживаемых. Например, если подключить к экземпляру SQL Server 2019 (15.x) базу данных, имеющую уровень совместимости 90, то после обновления он будет изменен на 100, что является наименьшим поддерживаемым уровнем для SQL Server 2019 (15.x). Дополнительные сведения см. в разделе Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).
Присоединение базы данных
Можно присоединить скопированную или отсоединенную базу данных SQL Server . Когда базу данных SQL Server 2005 (9.x) с файлами полнотекстовых каталогов присоединяют к экземпляру сервера SQL Server , то присоединение файлов каталогов выполняется из их предыдущего расположения вместе с другими файлами баз данных, как и в SQL Server 2005 (9.x). Дополнительные сведения см. в разделе Обновление полнотекстового поиска.
При присоединении базы данных должны быть доступны все файлы данных (файлы MDF и NDF). Если у какого-либо файла данных путь отличается от того, каким он был при первом создании или последнем присоединении, необходимо указать текущий путь к файлу.
Если присоединяемый первичный файл данных доступен только для чтения, компонент Компонент Database Engine предполагает, что и база данных доступна только для чтения.
Когда зашифрованная база данных впервые присоединяется к экземпляру SQL Server, владелец базы данных должен открыть главный ключ базы данных, выполнив следующую инструкцию: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password' . Рекомендуется включить автоматическую расшифровку главного ключа, выполнив следующую инструкцию: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY . Дополнительные сведения см. в разделах CREATE MASTER KEY (Transact-SQL) и ALTER MASTER KEY (Transact-SQL).
Требования для присоединения файлов журналов частично зависят от того, доступна база данных для записи и чтения или только для чтения.
Для базы данных, доступной для записи и чтения, обычно можно присоединить файл журнала в новом расположении. Однако в некоторых случаях для повторного соединения базы данных требуются файлы ее существующих журналов. Поэтому всегда храните все отсоединенные файлы журналов, пока база данных не будет успешно присоединена без них.
Если у базы данных, доступной для записи и чтения, только один файл журнала и для него не указано новое расположение, операция присоединения использует старое расположение файла. Если он найден, применяется старый файл журнала независимо от того, была ли база данных выключена чисто. Однако если старый файл журнала не найден и база данных была выключена чисто и не имеет активной цепочки журналов, то операция присоединения пытается построить новый файл журнала для базы данных.
Если присоединяемый первичный файл данных доступен только для чтения, компонент Компонент Database Engine предполагает, что и база данных доступна только для чтения. Для базы данных, доступной только для чтения, файл или файлы журнала должны быть доступны в расположении, указанном в первичном файле базы данных. Новый файл журнала построить невозможно, так как SQL Server не может обновить расположение журнала, указанное в первичном файле.
Использование SQL Server Management Studio (SSMS)
Перед перемещением базы данных
Если вы перемещаете базу данных, перед ее отсоединением от существующего экземпляра SQL Server просмотрите связанные с ней файлы и их текущее расположение на странице Свойства базы данных.
В обозревателе объектов среды SQL Server Management Studio подключитесь к экземпляру компонента Компонент SQL Server Database Engine , а затем раскройте его.
Раскройте список Базы данных и выберите имя пользовательской базы данных, которую необходимо отсоединить.
Щелкните правой кнопкой мыши имя базы данных и выберите Свойства. Выберите страницу Файлы и просмотрите записи в таблице Файлы базы данных.
Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем переходите к этапам отсоединения, копирования файлов и присоединения базы данных, описанным в следующем разделе. Дополнительные сведения см. в разделе Отсоединение базы данных.
Реакция на ошибки отсоединения
Заново присоедините все файлы, связанные с базой данных, а не только первичный файл.
Отсоедините базу данных повторно.
Для чего использовать присоединение?
При перемещении файлов базы данных в пределах одного экземпляра рекомендуется использовать запланированное перемещение ALTER DATABASE вместо отсоединения и присоединения. Дополнительные сведения см. в статье Move User Databases.
Не рекомендуется использовать отсоединение и присоединение для резервного копирования и восстановления. При отсоединении файлов для внешнего резервного копирования из SQL Server резервные копии журналов транзакций или восстановление до точки во времени будут недоступны.
Присоединить здесь
Звучит просто. Давайте нажмем ОК и посмотрим, сделает ли SQL Server то, что обещает:
Нет. Щелкнем ОК, чтобы вернуться к окну присоединения. Прокрутим вправо ниже “Databases to attach” и щелкнем Message, чтобы увидеть подробную информацию:
Щелкнем еще раз ОК, чтобы вернуться к окну Attach. Давайте заглянем под капот. Чтобы выяснить, что пытается выполнить SQL Server, щелкнем “Script” и выберем Script Action to New Query Window (вывести действие скрипта в новое окно запроса):
Это приведет нас к окну со следующим скриптом, который SQL Server использует для присоединения базы данных. Если выполнить скрипт, то мы получим ошибку того же типа, что и прежде:
SQL Server пытается помочь, добавляя этот файл журнала. Что если мы удалим эту строку, и просто попытаемся создать базу с одним mdf:
Сбой активации файла. Возможно, имя физического файла “C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB_log.ldf” указано неверно.
Был создан новый файл журнала “C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\ExampleDB_log.ldf”.
База данных присоединена успешно, и мы снова в деле. Вместо изменения скрипта мы могли также выполнить это с помощью GUI, удалив ldf ниже деталей базы данных и щелкнув ОК:
Файлы данных и журналов транзакций базы данных можно отсоединить, а затем снова присоединить к тому же или другому экземпляру SQL Server. Отсоединение и присоединение базы данных полезно, если необходимо переместить базу данных на другой экземпляр SQL Server на том же компьютере либо перенести базу данных.
Перед перемещением базы данных
Если вы перемещаете базу данных, перед ее отсоединением от существующего экземпляра SQL Server просмотрите связанные с ней файлы и их текущее расположение в представлении системного каталога sys.database_files . Для получения дополнительной информации см. sys.database_files (Transact-SQL).
В SQL Server Management Studio выберите Создать запрос, чтобы открыть редактор запросов.
Скопируйте скрипт Transact-SQL ниже в редактор запросов и нажмите Выполнить. Этот скрипт показывает расположение физических файлов базы данных. Убедитесь, что при перемещении базы данных путем отсоединения и присоединения вы проверили все файлы.
Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем переходите к этапам отсоединения, копирования файлов и присоединения базы данных, описанным в следующем разделе. Дополнительные сведения см. в разделе Отсоединение базы данных.
Присоединение базы данных к другому экземпляру сервера
База данных, созданная в более поздней версии SQL Server, не может быть присоединена в ранних версиях. Это физически исключает возможность использования базы данных с более старой версией Компонент Database Engine. Тем не менее это относится к состоянию метаданных и не влияет на режим совместимости базы данных. Дополнительные сведения см. в разделе Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).
При присоединении базы данных к другому экземпляру сервера для обеспечения ее согласованного функционирования для пользователей и приложений может понадобиться повторное создание некоторых или всех метаданных базы данных, например имен входа и задания, на другом экземпляре сервера. Дополнительные сведения см. в статье Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера (SQL Server).
В этом разделе описывается перемещение отсоединенной базы данных в другое местоположение и ее повторное присоединение к тому же или другому экземпляру сервера в SQL Server. Однако рекомендуется переносить базы данных с помощью процедуры запланированного переноса ALTER DATABASE, а не путем отсоединения и присоединения. Дополнительные сведения см. в статье Move User Databases.
Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.
Система отслеживания измененных данных (CDC)
Для подключения базы данных из экземпляра SQL Server 2014 (12.x) или более ранней версии, в котором было включено отслеживание измененных данных (CDC), необходимо выполнить следующую команду, чтобы обновить метаданные отслеживания изменений:
Использование Transact-SQL
После обновления базы данных SQL Server
Присоединение базы данных
Установите соединение с компонентом Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Выполните инструкцию CREATE DATABASE с предложением FOR ATTACH .
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере производится присоединение всех файлов базы данных AdventureWorks2012 с ее последующим переименованием в MyAdventureWorks .
Если в вашей базе данных содержатся дополнительные файлы данных (чаще всего .MDF или .NDF), их необходимо включить в инструкцию CREATE DATABASE . FOR ATTACH . Кроме того, в инструкцию также следует включить все файловые группы для данных FILESTREAM. Дополнительные сведения о присоединении базы данных с поддержкой FILESTREAM см. в статье Перемещение базы данных с поддержкой FILESTREAM.
Кроме того, можно вызвать хранимую процедуру sp_attach_db или sp_attach_single_file_db . Но эти расширенные хранимые процедуры в будущих версиях SQL Serverбудут удалены. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого рекомендуется использовать CREATE DATABASE . FOR ATTACH .
1 ответ 1
Если восстановление журнала с CONTINUE_AFTER_ERROR (либо со STOP_ON_ERROR )
завершается с ошибкой, после которой невозможно выполнить
то можно попытаться восстановиться до какого-то LSN в журнале (максимально возможного), при котором RESTORE LOG ещё не вызывает ошибок.
Для этого читаем заголовки бэкапов БД и журнала
в которых сверяем значения столбцов FirstLSN и LastLSN (убеждаемся, что цепочка LSN не разорвана, и в журнале действительно есть дополнительная информация).
Значение LastLSN из заголовка БД (равное 64000000017600001) переводим из десятичного представления в двоичное (см. здесь, функция fn_convertnumericlsntobinary ), получаем 00000040:000000B0:0001.
Теперь с помощью sys.fn_dump_dblog читаем последовательность LSN из дампа лога (можно отфильтровать только операции завершения транзакций Operation = 'LOP_COMMIT_XACT' ):
Допустим, получили, следующий список:
Заново инициализируем восстановление:
Теперь берём из списка первое значение LSN, которое следует позднее, чем LastLSN в бэкапе БД (позднее чем 00000040:000000B0:0001 ) и делаем RESTORE LOG к этой отметке:
Если операция прошла без ошибок, повторяем то же самое для следующей отметки, и т.д., пока не дойдём до отметки, восстановление к которой будет вызывать ошибку.
Если отметок много, то можно применить дихотомический поиск, учитывая, однако, что при движении вперёд достаточно выполнять лишь RESTORE LOG к новой отметке, но если необходимо вернуться назад, то цепочку восстановления нужно выполнять заново ( RESTORE DATABASE . WITH REPLACE . , затем RESTORE LOG . к нужной отметке).
После того как последняя не вызвавшая ошибку отметка определена, заново восстановим БД и журнал до этой отметки:
Процедура
Перемещение базы данных при помощи операций отсоединения и присоединения
Отсоединение базы данных. Дополнительные сведения см. в разделе Отсоединение базы данных.
Переместите в «Проводнике» или окне командной строки файлы отсоединенной базы данных и журналов в новое место.
Перенос файлов журналов обязателен, даже если нужно создать новые файлы журналов. В некоторых случаях для повторного присоединения базы данных требуются файлы ее существующих журналов. Поэтому всегда храните все файлы отсоединенных журналов, пока база данных не будет успешно присоединена без них.
При попытке присоединить базу данных, не указывая файл журнала, операцией присоединения будет произведен поиск файла журнала в его исходном месте. Если копия журнала все еще хранится в исходном месте, она будет присоединена. Чтобы избежать применения исходного файла журнала, либо укажите путь к новому файлу журнала, либо удалите исходную его копию (после его копирования в новое место).
Присоединение скопированных файлов. Дополнительные сведения см. в статье Attach a Database.
Читайте также: