Инструкция backup log недопустима в модели восстановления simple

If you get an error that reads The statement BACKUP LOG is not allowed while the recovery model is SIMPLE when trying to back up a database in SQL Server or Azure SQL Edge, it’s because you’re trying to back up the transaction logs on a database that uses the simple recovery model.

To fix this, change the recovery model to either full or bulk logging.

The Error

Here’s an example of T-SQL code that results in the error:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Result:

Msg 4208, Level 16, State 1, Line 1
The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.

The Cause

As mentioned, the error is caused when you try to back up the transaction logs on a database that uses the simple recovery model.

The simple recovery model doesn’t support log backups.

The Solution

To overcome this issue, set the database recovery model to either FULL or BULK_LOGGED:

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

That example set the database to full recovery mode.

However, you will also need to perform at least one full database backup before you start backing up your transaction logs. If you don’t do this, you’ll get error 4214, which states that BACKUP LOG cannot be performed because there is no current database backup.

Here’s an example of performing a full database backup:

BACKUP DATABASE Music 
    TO DISK = '/var/opt/mssql/backups/Music.bak' 
    WITH FORMAT;

Now the transaction logs can be backed up as required:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Result:

Processed 3 pages for database 'Music', file 'Music_log' on file 1.

Using Azure SQL Edge?

If you use Azure SQL Edge, you might find this issue happens a lot. That’s probably because databases created with SQL Edge use the simple recovery model by default. And that’s because the model database uses the simple recovery model.

You can always change the recovery model on the model database to FULL, which will result in subsequent databases using full recovery mode by default.

Чтобы выбрать хороший план восстановления, для начала нужно понять, какие модели восстановления имеются в наличии. Модель восстановления базы данных определяет типы резервных копий, которые могут быть задействованы, что, в свою очередь, определяет различные точки во времени, в которым может быть восстановлена база данных.

Понимание моделей восстановления SQL Server

Каждая база данных на SQL Server имеет установку модели восстановления. SQL Server имеет три различных модели восстановления: простая (Simple), полная (Full) и с неполным протоколированием (Bulk-Logged). Установка модели восстановления определяет, какие варианты создания резервных копий и восстановления доступны для базы данных, а также то, каким образом ядро базы данных обрабатывает сохранение записей в журнале транзакций.

Журнал транзакций представляет собой подробный файл, который используется для записи обновлений, выполняемых в каждой транзакции. Ядро SQL Server использует этот журнал для поддержания целостности базы данных. В случае, если транзакция требует отката, или база данных повреждается по какой-то причине, журнал транзакций используется для восстановления базы данных в согласованное состояние. Модель восстановления для базы данных определяет, как много данных требуется записать SQL Server в журнал транзакций, и может ли быть выполнено восстановление к некоторой точке во времени. Начальная установка модели восстановления для новой базы данных определяется моделью восстановления системной базы данных model. Настройка модели восстановления базы данных может быть легко изменена либо с помощью SSMS, либо кодом T-SQL. Чтобы лучше понять детали каждой модели восстановления и то, как они влияют на доступные варианты резервирования и восстановления, позвольте мне сделать обзор каждой из имеющихся моделей восстановления.

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

Simple recovery model является самой простой из моделей восстановления. Когда используется эта модель, каждая транзакция по-прежнему записывается в журнал транзакций. Записи журналов транзакций будут автоматически удаляться , если используется простая модель восстановления. Этот процесс удаления происходит для всех завершенных транзакций, когда устанавливается контрольная точка. Поскольку записи журнала удаляются при возникновении контрольной точки, резервирование журналов транзакций не поддерживается при использовании простой модели восстановления. Это означает, что восстановление к заданному моменту времени не может быть выполнено, если для базы данных модель восстановления установлена в SIMPLE. Поскольку в данном режиме журнал транзакций автоматически очищается, это позволяет сохранять его малый размер и избежать контроля над его ростом.

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

Полная модель восстановления

Как следует из названия, полная модель восстановления поддерживает все варианты для создания резервных копий и восстановления базы данных. Подобно простой модели восстановления, все транзакции записываются в журнал транзакций, но они остаются в журнале транзакций и после завершения транзакции. Записи остаются в журнале транзакций до тех пор, пока не будет сделана резервная копия журнала. При выполнении резервирования журнала транзакций для базы, которая находится в режиме полного восстановления, записи журнала записываются в бэкап журнала транзакций, и записи завершенных транзакций удаляются из журнала транзакций.

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

Помимо транзакций вставки и обновления, в журнал записывается множество информации, связанной с другими операциями, подобными созданию/изменению индекса и массовой загрузки. Если вы обнаружили, что ваш журнал транзакций заполняется вследствие операций с индексами или массовой загрузки (например, SELECT INTO), вы можете рассмотреть вариант перехода на модель восстановления с неполным протоколированием, пока эти операции выполняются.

Модель восстановления с неполным протоколированием

Модель восстановления с неполным протоколированием минимизирует использование пространства журнала транзакций при операциях с неполным протоколированием, подобных BULK INSERT, SELECT INTO или CREATE INDEX. Функцилнальность этой модели подобна полной модели восстановления за исключением того, что записи в журнал транзакции минимально протоколируются при выполнении указанных операций. Минимальное протоколирование помогает поддерживать журнал меньших размеров, но при этом журнализируется не так много информации.

Модель восстановления с неполным протоколированием улучшает производительность операций с загрузкой больших объемов данных посредством сокращения количества журнализируемой информации. Кроме того, поскольку транзакции с неполным протоколированием не полностью журнализируются, это сокращает количество места при записи в журнал транзакций, что уменьшает шансы переполнения журнала транзакций. Поскольку операции с неполным протоколированием минимально журнализируются, это оказывает влияние на восстановление к определенному моменту времени.

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

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

Какая модель восстановления используется?

Существует много способов для определения того, какая модель восстановления для базы данных используется. Одним вариантом определения модели восстановления является SQL Server Management Studio. Для этого сначала щелкните правой кнопкой на базе данных и выберите пункт «Properties» (свойства) из меню. В окне свойств выберите пункт «Options» (опции) в левом контекстном меню. Выполнив эти действия, вы увидите нижеприведенное окно.


Рис.1: Опция Recovery Model

Рисунок 1 показывает, что для базы данных AdventureWorks2017 модель восстановления установлена в значение Simple.

Другим способом отображения свойств восстановления базы данных является выполнение кода T-SQL, показанного в листинге 1.

Листинг 1: Код для отображения модели восстановления

SELECT name, recovery_model_desc  
FROM sys.databases
WHERE name = 'AdventureWorks2017' ;

Изменение модели восстановления

С течением времени может потребоваться изменить модель восстановления. Это может произойти, когда приложению требуется больше или меньше вариантов восстановления базы данных. Если требуется изменить модель восстановления, это можно легко сделать с помощью кода в листниге 2.

Листинг 2: Изменение модели восстановления с помощью кода T-SQL

USE master; 
GO
ALTER DATABASE AdventureWorks2017 SET RECOVERY FULL;
GO

В листинге 2 модель восстановления для базы данных AdventureWorks2017 была изменена на FULL. Кроме того, вы можете изменить модель восстановления базы данных с помощью страницы свойств SSMS, показанного на рисунке 1. Для этого просто выберите требуемый вариант в поле Recovery Model, а затем щелкните OK.

Восстановление баз данных для каждой модели восстановления

Модель восстановления определяет вид резервных копий, которые могут быть сделаны для базы данных, который, в свою очередь, определяет имеющиеся варианты для восстановления поврежденной базы данных. Давайте рассмотрим то, как каждая модель восстановления может повлиять на варианты восстановления для типичной проблемы, приводящей к повреждению базы данных. Типичная проблема, которую я рассмотрю, заключается в некорректном обновлении программистом T-SQL базы данных, который затем просит администратора баз данных восстановить базы данных к некоторому моменту времени, предшествующему ошибочному процессу обновления, повредившего базу данных. В реальных условиях администратору чаще приходится восстанавливать базу данных в результате выполнения некорректного кода, чем в результате повреждения из-за аппаратных сбоев. Ниже я исследую, по крайней мере, один вариант, который может быть использован для восстановления поврежденной базы данных в результате программной ошибки для каждой из различных моделей восстановления.

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

Когда база данных использует простую модель восстановления, вы можете использовать полный бэкап или полный и дифференциальный бэкап для восстановления поврежденной базы данных в результате, например, программистской ошибки. Поскольку при использовании простой модели восстановления нельзя взять бэкапы журнала транзакций, то восстановления к определенному моменту времени выполнить невозможно, за исключением момента конца диффренциала, если он имеется. Следовательно, чтобы восстановить поврежденную базу данных, вам нужно восстановить полный бэкап базы данных и по-возможности дифференциальный бэкап базы данных, который был сделан как раз перед повреждением. Восстановление полного и дифференциальных бэкапов приводят базу данных в состояние, в котором она находилась на момент, когда были сделаны бэкапы. Все обновления базы данных, сделанные после этих бэкапов будут потеряны вместе с обновлением, выполненным ошибочным кодом.

Полная модель восстановления

В отличие от простой модели восстановления, полная модель восстановления предлагает много способов восстановления от ошибочного обновления или удаления. Первый вариант — это использовать последний полный бэкап. Если используется только последний бэкап, то восстановленная база данных потеряла бы такое же количество обновлений, как и при восстановлении по простой модели, описанной выше.

Другим вариантом является использование опций восстановления к определенному моменту времени, доступных для полной модели восстановления. Восстановление к определенному моменту времени означает, что администратор баз данных может восстановить базу данных к моменту времени (минуте), непосредственно предшествующему выполнению ошибочного обновления. Любые обновления, которые были сделаны с базой данных после полного бэкапа, но перед моментом восстановления, не будут потеряны, в отличие от простой модели восстановления.

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

Имеются и другие варианты, которые могут быть использованы для восстановления к определенному моменту времени после полного бэкапа. Одним из таких вариантов может быть использование дифференциального бэкапа. Дифференциальный бэкап — это бэкап, который содержит все изменения с базой данных, произошедшие после последнего полного бэкапа.

Модель восстановления в неполным протоколированием

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

Модели восстановления

Модель восстановления базы данных определяет доступные варианты резервирования/восстановления. Она также сообщает SQL Server, как должен обслуживаться журнал транзакций. Модель восстановления также определяет доступные варианты восстановления для базы данных. При простой модели восстановления база данных может быть восстановлена только к моменту времени последнего полного бэкапа или дифференциального. Для полной модели и модели восстановления с неполным протоколированием возможно восстановление базы данных к моменту времени после полного бэкапа с помощью восстановления к определенному моменту времени. Важно убедиться, что каждая база данных на экземпляре имеет установку модели восстановления, соответствующую требованиям приложения, использующего эту базу данных, к резервированию и восстановлению. Только понимание этих требований позволит правильно выбрать модель восстановления. Если вы хотите больше узнать о резервировании и восстановлении базы данных, обратитесь к документации Майкрософт.

0 / 0 / 0

Регистрация: 15.05.2020

Сообщений: 10

1

Инкрементальный бэкап

10.01.2023, 21:11. Показов 722. Ответов 8


Студворк — интернет-сервис помощи студентам

Всем привет, перерыл множество ссылок, книг, но так и не нашел как создавать инкрементальный бэкап, везде только определения, либо программы по автоматическому созданию бэкапа, а мне нужен скрипт на скюле(
Я почти год делаю диф (разностный) бэкап, но как я понял, есть его тип -> Инкрементальный бэкап (инкрементный бэкап) — тип разностной резервной копии, когда копируются не все файлы источника, а только новые и измененные с момента создания предыдущей копии — полной или добавочной.
Хотел скрин вставить, но почему-то не вставляется, нельзя походу, суть такая:

вс ФУЛЛ — 60 гигов

пн дифф — 26 гигов

вт дифф — 37 гигов

ср дифф — 38 гигов

чт дифф — 40 гигов

пт дифф — 45 гигов

сб дифф — 48 гигов

И как я понимаю инкрементный бэкап писал бы только разницу между диффами (ну и в пн разницу с фулла), то есть существенно меньше (примерно 11, 1, 2, 5, 3).
ОБЪЯСНИТЕ ПОЖАЛУЙСТА, ТАК ЛИ ЭТО? И ЕСЛИ МОЖНО СКРИПТ К MSSQL НА ИНКРЕМЕНТНЫЙ БЭКАП.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.01.2023, 21:11

Ответы с готовыми решениями:

Бэкап MS SQL БД
Здравствуйте! Нужен совет спецов.. Есть два совершенно одинаковых системника, один используется как…

Бэкап базы…
Здравствуйте друзья.

Не могли бы Вы (у кого из вас конечно она есть) выложить бэкап базы данных…

Бэкап Базы
скажите, как сделать бэкап базы, чтобы я скопировал потом нужные файлы на флешку, и мог запустить…

Не удалось выполнить бэкап БД
при задании резервной копии бд через SQL MS выходит сообщение об ошибке "Не удалось выполнить…

Бэкап средствами SQL?
Подскажите как сделать бэкапы по времени средствами SQL?
Заранее благодарен…

8

79 / 79 / 27

Регистрация: 14.10.2022

Сообщений: 299

11.01.2023, 11:39

2

Эээ… Инкрементальный бэкап, в терминах MSSQLSERVER — и есть разностный.
Вначале делаешь полный (опорный) бэкап, потом — дифференциальные бэкапы.
Пара из полного бэкапа и ближайшего снизу по времени дифференциального бэкапа — и есть тот бэкап, который вам нужно восстановить на нужный момент времени.
Если вам нужно приблизиться к моменту времени, на который вы хотите получить восстановленную копию базы как можно ближе к какому то моменту (напр. вам нужно состояние восстанавливаемой базы на определенный момент времени или на определенный LSN транзакции) — ваша база должна была быть в full recovery mode, и вы должны регулярно производить бэкапы логов.
Тогда вашим набором для восстановления будет:
1. Пара из опорного полного бэкапа, ближайший снизу по времени дифференциальный бэкап — их нужно восстановить в режиме Norecovery
2. Все бекапы лога, начиная с последнего LSN, зафиксированного в дифбэкапе (на практике просто берешь все бэкапы лога с момента начала дифбэкапа, или если нет дифбэкапа — фулбекапа и не паришься).
Их нужно последовательно ВСЕ восстановить в WITH NORECOVERY, STOPAT = ‘Необходимое_вам_время_на которое_будут_актуальны_данные_в_восстановленной_к опии’, а потом сделать restore log with recovery.

Всё, больше никаких чудес.

Можно, конечно, делать бэкапы отдельных файловых групп и т.д., но вам это не нужно.
Т.к. необходимость в этом возникает, если у вас бэкап на десятки терабайт, а база, соответственно, на сотни, и т.д. и т.п.
Не ваш случай, короче.
(был бы ваш, вы б подобных вопросов не задавали).



1



87 / 65 / 24

Регистрация: 27.07.2022

Сообщений: 186

11.01.2023, 12:41

3

Цитата
Сообщение от uaggster
Посмотреть сообщение

Эээ… Инкрементальный бэкап, в терминах MSSQLSERVER — и есть разностный.

А разве не бэкап лога, по сути?



1



Даниил001

0 / 0 / 0

Регистрация: 15.05.2020

Сообщений: 10

11.01.2023, 13:57

 [ТС]

4

Да, похоже действительно это бэкап лога, спасибо!
Я накидал скрипт, но возникает ошибка из-за BACKUP LOG: Инструкция BACKUP LOG недопустима в модели восстановления SIMPLE. Используйте инструкцию BACKUP DATABASE или измените модель восстановления с помощью инструкции ALTER DATABASE.


САМ СКРИПТ:

T-SQL
1
2
3
4
5
6
7
8
9
10
DECLARE @BDName NVARCHAR(512) = 'primer';
DECLARE @pathName NVARCHAR(512) 
DECLARE @h NVARCHAR(512) = DATEPART ( hh , GETDATE() ); 
DECLARE @m NVARCHAR(512) = DATEPART ( mi , GETDATE() );
DECLARE @s NVARCHAR(512) = DATEPART ( ss , GETDATE() ); 
DECLARE @myTime NVARCHAR(512) = @h + '-' + @m + '-' + @s;
SET @pathName = 'C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLBackup' + @BDName + '_' + Convert(varchar(10), GETDATE(), 121) + '[' + @myTime + ']' +  '.bak'
 
BACKUP LOG @BDName TO  DISK = @pathName WITH NOFORMAT, NOINIT, NAME = N'@BDName-log', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Ведь если я заменю на BACKUP DATABASE, получится просто бэкап базы данных, а не ее лога. Поможет ли если изменить модель восстановления с помощью инструкции ALTER DATABASE, как рекомендует скюль?



0



276 / 167 / 86

Регистрация: 12.04.2022

Сообщений: 685

11.01.2023, 14:13

5

Да.



0



79 / 79 / 27

Регистрация: 14.10.2022

Сообщений: 299

11.01.2023, 14:15

6

Цитата
Сообщение от katamoto
Посмотреть сообщение

А разве не бэкап лога, по сути?

Да черт его знает. Нет такого понятия.
Полный, дифференциальный, бекап лога.
Нет такого понятия, как инкрементальный.
Это в Windows backup есть. И по смыслу он соответствует как раз диффбэкапу. В инкрементальный бэкап помещаются:
1. Новые файлы.
2. Изменившиеся файлы.
Бэкап лога… это запись операций, которые применялись к данным. Соответственно, если их последовательно применить к исходным данным — получим итоговое состояние на какой то момент.
А диффбэкап — это как раз сумма добавленных данных, измененных данных и отметок об удалении данных между данными в базе на момент полного бэкапа и данными в базе на момент окончания диффбэкапа.
ИМХО, это как раз и есть инкрементальный?



0



0 / 0 / 0

Регистрация: 15.05.2020

Сообщений: 10

11.01.2023, 14:49

 [ТС]

7

Alter database ведь изменяет саму базу данных, производит манипуляции с ней, вроде вот этого
Синтаксис
ИЗМЕНИТЬ БАЗУ ДАННЫХ
{ ДОБАВИТЬ ФАЙЛ < спецификация файла > [ ,…n ] [ В ФАЙЛОВУЮ ГРУППУ имя_файла]
| ДОБАВИТЬ ФАЙЛ ЖУРНАЛА < спецификация файла > [ ,…n ]
| УДАЛИТЬ ФАЙЛ logical_file_name
| ДОБАВИТЬ ФАЙЛОВУЮ ГРУППУ имя_файла_группы
| УДАЛИТЬ ФАЙЛОВУЮ ГРУППУ имя_файла_группы
| ИЗМЕНИТЬ ФАЙЛ < спецификация файла >
| ИЗМЕНИТЬ ИМЯ = new_dbname
| ИЗМЕНИТЬ ФАЙЛОВУЮ ГРУППУ имя_файла {filegroup_property | NAME = new_filegroup_name }
| УСТАНОВИТЬ < optionspec > [ ,…n ] [ С < завершением > ]
| СОПОСТАВИТЬ < имя_файла >}

Если сделать так с имеющимися БД, продолжат ли они нормально функционировать
ALTER DATABASE MyDatabase SET RECOVERY BULK-LOGGED;
Или лучше уже забить на это дело? Просто места жуть как не хватает на дисках, а каждый день пишется диф приблизительно для 100 баз. На одних серверах их по 25, на других меньше.



0



79 / 79 / 27

Регистрация: 14.10.2022

Сообщений: 299

11.01.2023, 15:34

8

Цитата
Сообщение от Даниил001
Посмотреть сообщение

ALTER DATABASE MyDatabase SET RECOVERY BULK-LOGGED;

Будьте осторожны.
Режим BULK_LOGGED имеет очень своеобразные особенности. Он полностью тождественен режиму FULL, но все операции BULK INSERT и тому подобные (например аналогичные BULK операции, произведенные с помощью data tier application) не отражаются в логе, и соответственно, если вы произвели массовую загрузку после full копии базы — вы не сможете восстановиться на любой момент времени после этой массовой загрузки только с помощью бэкапов лога.

Вы должны будете:
Сделать полную копию.
Сделать полную или дифференциальную копию перед массовой загрузкой
Выполнить массовую загрузку
Сделать полную или дифференциальную копию после массовой загрузки
Ну и независимо от этого делать бэкапы лога.
Ну и соответственно, следить за всем этим и хранить эти разные бэкапы до и после загрузки.

Не используйте BULK_LOGGED.
Вам это не нужно.

Используйте simple, если вы собираетесь восстанавливаться по состоянию на момент создания бэкапа, или используйте FULL, если вы хотите иметь возможность восстановиться на любой момент времени.



1



0 / 0 / 0

Регистрация: 15.05.2020

Сообщений: 10

11.01.2023, 19:17

 [ТС]

9

Спасибо, учту!



0



  • Remove From My Forums
  • Question

  • Hi All,

    SQL newbie here. I just looked at my Job Activity monitor and found that my Transaction log backups are failing. I looked at the error and it read as follows:

    Executing the query «BACKUP LOG [OperationsManager] TO  DISK = N’D:\SQL\MSSQL.1\MSSQL\Backup\OperationsManager\OperationsManager_backup_200805061000.trn’ WITH  RETAINDAYS = 1, NOFORMAT, NOINIT,  NAME = N’OperationsManager_backup_20080506100001′, SKIP, REWIND, NOUNLOAD,  STATS = 10
    » failed with the following error: «The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.
    BACKUP LOG is terminating abnormally
    .». Possible failure reasons: Problems with the query, «ResultSet» property not set correctly, parameters not set correctly, or connection not established correctly.

    I read some of the posts regarding this error, but I am not sure how to do the steps. How do I change the recovery model? I am new to this so I have no clue how to do this.

    Any help would be greatly appreciated.

    Thank you.

Answers

  • To set FULL RECOVERY on all databases, you can do the following:

    Code Snippet

    EXEC sp_msforeachdb ‘ALTER DATABASE [?] SET RECOVERY FULL’


    This is an undocumented procedure that will execute the command in quotes for every database, while substituting the database name for the ?.

SQL Server 2012 Troubleshooting: Restore of database failed


Table of Contents

  • Problem
  • Solution
  • References

Problem

From within SQL Server Management Studio (SSMS), you attempt to restore a SharePoint Server 2013 database, but then experience this error message: 

TITLE: Microsoft SQL Server Management Studio
------------------------------
Restore of database 'YOURDATABASE' failed. 
(Microsoft.SqlServer.Management.RelationalEngineTasks) 

------------------------------
ADDITIONAL INFORMATION:

System.Data.SqlClient.SqlError: The operating system returned 
the error '32(The process cannot access the file because it 
is being used by another process.)' while attempting 
'RestoreContainer::ValidateTargetForCreation' on 
'D:Program FilesMicrosoft SQL ServerMSSQL11.CSSPMSSQLDATAYOURDATABASE.mdf'. 
(Microsoft.SqlServer.SmoExtended)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=
11.0.5058.0+((SQL11_PCU_Main).140514-1820+)&LinkId=20476

The solution is simple and involves the databases files Relocate all files to folder parameter.

Solution

  1. In SSMS, launch the Restore Database dialog,
  2. Select Files, and then enable Relocate all files to folder.

  3. Click OK.

References

  • Restore a Database Backup (SQL Server Management Studio)

  

Одинесю

26.05.15 — 13:14

Модель восстановления — Полная. Имеется Полная резервная копия базы. При попытке восстановления выпадает ошибка System.Data.SqlClient.SqlError: Инструкцию BACKUP LOG невозможно выполнить, так как не существует резервной копии текущей базы данных. (Microsoft.SqlServer.SmoExtended)

Подскажите, что может быть?

PS Восстанавливаю через Management Studio.

  

fisher

1 — 26.05.15 — 13:17

Первый раз восстанавливаешь? Тогда что-то не так сделал.

  

Heckfy

2 — 26.05.15 — 13:17

Телепатирую: у вас файл не фулл бекапа, а дифф.

  

Jaap Vduul

3 — 26.05.15 — 13:27

Наверное, включена опция «Take tail-log backup before restore»

  

Одинесю

4 — 26.05.15 — 13:34

(3) При создании резервной копии?

  

Одинесю

5 — 26.05.15 — 13:34

(2) Фулл

  

Alexey_Morov

6 — 26.05.15 — 13:35

(3)

Провёл восстановление своей базы при указанных параметрах (полная модель восстановления). Всё отлично и на MS SQL 2005, 2008, 2012.

Может быть проблема в том, что восстанавливается бэкап от старшей версии MS SQL на младшей (т.е. бэкап, сделанный в 2012 на, допустим, 2005ом)?

  

Одинесю

7 — 26.05.15 — 13:35

(1) У себя на копии делал раньше — все нормально восстанавливалось.

  

Одинесю

8 — 26.05.15 — 13:36

(6) Наоборот на 14 восстанавливаю копию, созданную на 2008, но я так делал уже.

  

Alexey_Morov

9 — 26.05.15 — 13:39

(1)

Непонятно причём тут BACKUP LOG, если делается наоборот восстановление?

  

leonidkorolev

10 — 26.05.15 — 13:39

скрипт сюда выложи

  

Jaap Vduul

11 — 26.05.15 — 13:39

(4) При восстановлении естественно.

  

Jaap Vduul

12 — 26.05.15 — 13:39

(9) см. (3)

  

Heckfy

13 — 26.05.15 — 13:40

(5) А я говорю Дифф.

  

Alexey_Morov

14 — 26.05.15 — 13:42

(13)

Не, при диффе должна быть другая ошибка.

(12) Выложи, пожалуйста, скриншоты.

  

Jaap Vduul

15 — 26.05.15 — 13:42

  

Одинесю

16 — 26.05.15 — 13:46

(14) Скриншот чего, я через Мэнэджмент Студио загружаю, вот полное описание ошибки, сейчас покажу окно настройки копирования

===================================

Ошибка восстановления базы данных «Aksol_UPP». (Microsoft.SqlServer.Management.RelationalEngineTasks)

——————————

Расположение программы:

   в Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.PerformTask(ITaskExecutionContext context)

   в Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.Perform(ITaskExecutionContext context)

   в Microsoft.SqlServer.Management.TaskForms.TaskExecutionManager.ExecuteTaskSequence(ISfcScriptCollector collector)

===================================

System.Data.SqlClient.SqlError: Инструкцию BACKUP LOG невозможно выполнить, так как не существует резервной копии текущей базы данных. (Microsoft.SqlServer.SmoExtended)

——————————

Чтобы получить справку, щелкните: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=12.0.2000.8+((SQL14_RTM).140220-1752)&LinkId=20476

——————————

Расположение программы:

   в Microsoft.SqlServer.Management.Smo.RestorePlan.Execute()

   в Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.PerformTask(ITaskExecutionContext context)

  

Jaap Vduul

17 — 26.05.15 — 13:48

(16) см. (15)

  

Одинесю

18 — 26.05.15 — 13:50

  

Одинесю

19 — 26.05.15 — 13:50

(17) Сейчас

  

Одинесю

20 — 26.05.15 — 13:53

  

Alexey_Morov

21 — 26.05.15 — 13:53

(20) Вот. Наверняка эта ошибка из-за двух галок «Создать резервную копию…»).

  

Alexey_Morov

22 — 26.05.15 — 13:54

Надо срочно отключить эти галки, так как они мешают при проведении восстановления полного бэкапа.

  

Одинесю

23 — 26.05.15 — 13:56

(22) Я пробовал…

  

Одинесю

24 — 26.05.15 — 13:58

(22) Вроде пошло, сделал кроме отключения галок еще и NORECOVERY, вышла уже другая ошибка, что база отличается. Спасибо, буду дальше пробовать.

  

Jaap Vduul

25 — 26.05.15 — 14:00

(24) Включи «Перезаписать существующую…»

  

Господин ПЖ

26 — 26.05.15 — 14:00

>вышла уже другая ошибка, что база отличается

у новой базы id другой поставь галку replace

  

Alexey_Morov

27 — 26.05.15 — 14:03

(26)

Согласен. Должно помочь.

  

Одинесю

28 — 26.05.15 — 14:12

(26) (27) Спасибо!

  

Одинесю

29 — 26.05.15 — 14:13

(25) Спасибо!

  • Remove From My Forums
  • Question

  • Hi , 

    I tried to restore database in sql server 2012 in windows 8. but getting this error , there are several files which already worked before in restoration now not working :

    TITLE: Microsoft SQL Server Management Studio
    ——————————

    Restore of database ‘classifiedspak’ failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)

    ——————————
    ADDITIONAL INFORMATION:

    System.Data.SqlClient.SqlError: BACKUP LOG cannot be performed because there is no current database backup. (Microsoft.SqlServer.SmoExtended)

    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1846+)&LinkId=20476

    ——————————
    BUTTONS:

    OK
    ——————————


    Thank You , Shan Ali Khan

Answers

  • You are getting this error because the database you are trying to restore to is not the same from which the backups were taken. The backups were taken from different database and you are trying to restore to a different database.

    You have 2 options here.

    1. Use WITH REPLACE while using the RESTORE command. This will overwrite the existing database and restore the database state represented by the backup files.
    2. Delete the database to which you are trying to restore to and restore again using RESTORE command. This will create a new database with the state represented by the backup files.

    Please note that in both these options you will lose the existing data of the database you are trying to restore to.

    Refer to
    http://blog.sqlauthority.com/2007/09/27/sql-server-fix-error-3154-the-backup-set-holds-a-backup-of-a-database-other-than-the-existing-database/ for more details about the error you are facing.

    Refer to http://msdn.microsoft.com/en-us/library/ms186858.aspx for more details about the WITH REPLACE option.

    If this does not help, can you please share more details about your scenario. Like Which database was backed up? Where are those files? Which database are you trying to restore to?


    Vatsalya — MSFT The views and opinions expressed herein are those of the author and do not necessarily reflect the views of Microsoft.

    • Edited by

      Saturday, November 10, 2012 4:15 PM
      Added reference link.

    • Marked as answer by
      Shan Khan
      Monday, November 12, 2012 7:38 AM
  • Remove From My Forums
  • Question

  • Hi , 

    I tried to restore database in sql server 2012 in windows 8. but getting this error , there are several files which already worked before in restoration now not working :

    TITLE: Microsoft SQL Server Management Studio
    ——————————

    Restore of database ‘classifiedspak’ failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)

    ——————————
    ADDITIONAL INFORMATION:

    System.Data.SqlClient.SqlError: BACKUP LOG cannot be performed because there is no current database backup. (Microsoft.SqlServer.SmoExtended)

    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1846+)&LinkId=20476

    ——————————
    BUTTONS:

    OK
    ——————————


    Thank You , Shan Ali Khan

Answers

  • You are getting this error because the database you are trying to restore to is not the same from which the backups were taken. The backups were taken from different database and you are trying to restore to a different database.

    You have 2 options here.

    1. Use WITH REPLACE while using the RESTORE command. This will overwrite the existing database and restore the database state represented by the backup files.
    2. Delete the database to which you are trying to restore to and restore again using RESTORE command. This will create a new database with the state represented by the backup files.

    Please note that in both these options you will lose the existing data of the database you are trying to restore to.

    Refer to
    http://blog.sqlauthority.com/2007/09/27/sql-server-fix-error-3154-the-backup-set-holds-a-backup-of-a-database-other-than-the-existing-database/ for more details about the error you are facing.

    Refer to http://msdn.microsoft.com/en-us/library/ms186858.aspx for more details about the WITH REPLACE option.

    If this does not help, can you please share more details about your scenario. Like Which database was backed up? Where are those files? Which database are you trying to restore to?


    Vatsalya — MSFT The views and opinions expressed herein are those of the author and do not necessarily reflect the views of Microsoft.

    • Edited by

      Saturday, November 10, 2012 4:15 PM
      Added reference link.

    • Marked as answer by
      Shan Khan
      Monday, November 12, 2012 7:38 AM

SQL Server 2014 Developer SQL Server 2014 Enterprise SQL Server 2014 Enterprise Core SQL Server 2014 Standard Еще…Меньше

Проблемы

Предположим, что вы создали базу данных клонов с включенным хранилищем запросов в экземпляре SQL Server 2014. При восстановлении базы данных копии в другом экземпляре SQL Server происходит сбой восстановления, и появляется следующее сообщение об ошибке:

Восстановление database_name базы данных завершилось сбоем. (Microsoft. SqlServer. Management. RelationalEngineTasks) System. Data. SqlClient. SqlError: восстановление базы данных аварийно завершается. (Microsoft.SqlServer.SmoExtended)

Кроме того, системное утверждение заносится в журнал ошибок SQL Server.

Решение

Эта проблема устранена в следующем накопительном обновлении SQL Server:

Накопительное обновление 3 для SQL Server 2014 с пакетом обновления 2

Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.

Последнее накопительное обновление для SQL Server 2014

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».

Ссылки

Ознакомьтесь с терминологией , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.

Нужна дополнительная помощь?

Perform the following commands in SQL Server Management Studio (SSMS) on the SQL Server instance you are trying to restore the database to.

Verify BAK File

RESTORE VERIFYONLY FROM DISK = 'T:DIRECTORYDATAWAREHOUSE_FULL_20200115_190000.bak'

This should provide you with a result set that looks like this:

The backup set on file 1 is valid.

Possible Errors

If the check terminates abnormally then the cause could be because one of these checks have failed:

Checks performed by RESTORE VERIFYONLY include:

  • That the backup set is complete and all volumes are readable.
  • Some header fields of database pages, such as the page ID (as if it were about to write the data).
  • Checksum (if present on the media).
  • Checking for sufficient space on destination devices.

Reference: RESTORE Statements — VERIFYONLY (Transact-SQL) (Microsoft | SQL Docs)

Check the BAK Fileheader

RESTORE HEADERONLY FROM DISK = 'T:DIRECTORYDATAWAREHOUSE_FULL_20200115_190000.bak'

This should provide you with a result set that looks like this:

BackupName  BackupDescription     BackupType ExpirationDate Compressed Position DeviceType UserName                         ServerName    DatabaseName         DatabaseVersion DatabaseCreationDate    BackupSize  FirstLSN              LastLSN               CheckpointLSN         DatabaseBackupLSN     BackupStartDate         BackupFinishDate        ........
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ........
NULL        NULL                  1          NULL           0          1        2          NT SERVICESQLSERVERAGENT        NOTHING       StackExchange        782             2019-07-24 09:17:00.000 1688399872  568000013810400037    568000013813600001    568000013810400037    568000013524000037    2020-01-15 19:25:27.000 2020-01-15 19:25:29.000 ........

Check the Contents of the BAK File

RESTORE FILELISTONLY FROM DISK = 'T:DIRECTORYDATAWAREHOUSE_FULL_20200115_190000.bak'

This should provide you with a result set that looks like this:

LogicalName              PhysicalName                                   Type FileGroupName    Size         MaxSize         FileId  CreateLSN           DropLSN  UniqueId                             ReadOnlyLSN         ReadWriteLSN       BackupSizeInBytes  SourceBlockSize FileGroupId LogGroupGUID  DifferentialBaseLSN  DifferentialBaseGUID                 IsReadOnly IsPresent TDEThumbprint 
------------------------ ---------------------------------------------- ---- ---------------- ------------ --------------- ------- ------------------- -------- ------------------------------------ ------------------- ------------------ ------------------ --------------- ----------- ------------- -------------------- ------------------------------------ ---------- --------- --------------
StackExchange            C:SQLSQL_DATAStackExchange.mdf              D    PRIMARY          2623537152   35184372080640  1       0                   0        725120E9-8DF3-4E09-9A89-94433A6EB49B 0                   0                  1687224320         4096            1           NULL          568000013524000037   707694EC-A36C-444A-8879-C807B2137455 0          1         NULL
StackExchange_DefRO      C:SQLSQL_DATAStackExchangeRO.ndf            D    DEFAULTRO        5242880      35184372080640  3       89000000045300001   0        05C6BA44-123A-4749-8FB5-A0A16EF49A51 102000000014600005  90000000013100004  131072             4096            2           NULL          568000013524000037   707694EC-A36C-444A-8879-C807B2137455 1          1         NULL
StackExchange_PUBL_SNAP  C:SQLSQL_DATAStackExchange_PUBL_SNAP.ndf    D    PUBL_SNAP_DBASE  5242880      35184372080640  4       286000001633700001  0        DCA761C4-6260-4BE3-8280-64099C98911D 0                   0                  131072             4096            3           NULL          568000013524000037   707694EC-A36C-444A-8879-C807B2137455 0          1         NULL
StackExchange_log        C:SQLSQL_LOGSStackExchange_log.ldf          L    NULL             21798322176  2199023255552   2       0                   0        364124B1-081E-45C5-971C-2CD1CBBF13EC 0                   0                  0                  4096            0           NULL          0                    00000000-0000-0000-0000-000000000000 0          1         NULL

If the Steps Fail

If any of the above steps fail, then you will have to determine what the issue is. The RESTORE ... command should provide enough information to assist you in finding the root cause.

Example Solutions

If the backup file is corrupt, then you will have to find a backup file that works.
If the disk is full, then you will have to add additional space.
If all else fails, then you might have to open a case with Microsoft Support.

Best Practice

(emphasis mine)

Test your backups!

You do not have a restore strategy until you have tested your backups. It is very important to thoroughly test your backup strategy for each of your databases by restoring a copy of the database onto a test system. You must test restoring every type of backup that you intend to use. It is also recommended that once you restore the backup, you perform database consistency checks via DBCC CHECKDB of the database to validate the backup media was not damaged.

Reference: Back Up and Restore of SQL Server Databases (Microsoft | SQL Docs)

  • Remove From My Forums
  • Question

  • i have  .bak file  downloaded from internet , and i also have istalled  sql server  2012.

    my problem that i can not restore  this  .bak file and get this error massage :

    TITLE: Microsoft SQL Server Management Studio
    ——————————
    Restore of database ‘SRO_VT_SHARD’ failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)
    ——————————
    ADDITIONAL INFORMATION:
    System.Data.SqlClient.SqlError: The operating system returned the error ‘5(Access is denied.)’ while attempting ‘RestoreContainer::ValidateTargetForCreation’ on ‘C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATASRO_VT_SHARD.mdf’. (Microsoft.SqlServer.SmoExtended)

    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1846+)&LinkId=20476

    — .bak file  version  = 661  10  50  1600 = sql server  2008R

    — my sql version     = Microsoft SQL Server 2012 — 11.0.2100.60 (Intel X86)

    any help please

Answers

  • Hello Alaa — The message «System.Data.SqlClient.SqlError: The operating system returned the error
    ‘5(Access is denied.)’», 
    itself indicating permission issues while restoring on the path  «C:Program
    FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATA»

    Few Possible Solutions:

    • Change your SQL Server service account to an identity that has permissions. For testing purpose you can use «Local System», restart the service and perform the restoration again. It should succeed.
    • OR You can create a folder on root of C or D drive & give full control to everyone and then try restoration again by changing the path of restoration file to these drives/ folders by using WITH MOVE option or by using GUI
    • OR You can talk to your server support team and ask them to give full control/ permission to SQL Server service account on the folder «C:Program
      FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATA»
      and then try your restore action again 

    Hope this helps !


    Good Luck!
    Please Mark This As Answer if it solved your issue.
    Please Vote This As Helpful if it helps to solve your issue

    • Marked as answer by

      Thursday, August 6, 2015 9:57 AM

Restoration of a database from a backup file sometimes can be very tricky. Especially when you don’t know on what server (what environment or what SQL Server version) it was taken. Sometimes you, as a DBA, are just asked to restore database from a given backup on the pointed server. You have got a backup file, you do everything as always but for some reason, the restore operation fails.

Restore of database failed

In this blog post, I describe what is the reason behind the below error.

SSMS GUI error

Error message:

TITLE: Microsoft SQL Server Management Studio
------------------------------

Restore of database 'AdventureWorks2017' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)

------------------------------
ADDITIONAL INFORMATION:

System.Data.SqlClient.SqlError: The database was backed up on a server running version 14.00.1000. That version is incompatible with this server, which is running version 13.00.5026. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server. (Microsoft.SqlServer.SmoExtended)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=14.0.17254.0+((SSMS_Rel_17_4).180502-0908)&LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------

So… what we can do in such case?

Let’s ask for help 🙂

First of all, as you already noticed, in the left bottom corner we have a help button. Did you try to use it? I can bet you didn’t. Let’s see how Microsoft will try to help us in our case.

SSMS GUI error - get help 01

As you can see the help for the first error is not available. This option in the menu is grayed out. However, the help for the second, more detailed error seems to be available. It is quite promising, isn’t it? When we click this we’re getting a new dialog with the notification that some data will be sent to Microsoft and we need to agree on that if we want to see the help for our problem.

SSMS GUI error - get help 02

Product Name, Product Version, and LinkId… I think I’m not afraid to share this data if that suppose to give me a solution for my problem. So what I get after clicking [Yes] button? I get nothing… New webpage opens in my browser and the only thing we get is an advertisement to buy new Surface Pro… I’m not kidding…

SSMS GUI error - surface

Additional funny thing is that Microsoft collects data about SSMS version I use: 14.0.17254.0+((SSMS_Rel_17_4).180502-0908), but why they described it as release 17.4 while I use 17.7?

SSMS version

Ok. Now we know that MSFT will not help us in this case.

Let’s try using T-SQL

We’re not able to restore a database using SSMS GUI so maybe it will work when using T-SQL? Let’s give it a try:

USE [master]
RESTORE DATABASE [AdventureWorks2017] 
FROM DISK = N'C:isoDB - AdventureWorksAdventureWorks2017.bak' WITH FILE = 1, 
MOVE N'AdventureWorks2017' TO N'C:Program FilesMicrosoft SQL ServerMSSQL13.SS2016MSSQLDATAAdventureWorks2017.mdf', 
MOVE N'AdventureWorks2017_log' TO N'C:Program FilesMicrosoft SQL ServerMSSQL13.SS2016MSSQLDATAAdventureWorks2017_log.ldf', 
NOUNLOAD, STATS = 5
GO

No, it doesn’t work neither.

Msg 3169, Level 16, State 1, Line 2 The database was backed up on a server running version 14.00.1000. That version is incompatible with this server, which is running version 13.00.5026. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server. Msg 3013, Level 16, State 1, Line 2 RESTORE DATABASE is terminating abnormally.
That version is incompatible with this server

So what does it mean? It simply means that database backup was taken on newer SQL Server version than the SQL Server version on which you’re trying to restore it. Unfortunately, such an operation is not supported. All SQL Servers are backward compatible and you’re always able to restore a database from a backup taken on an older version to the newer one but not vice versa.

If you want to decrypt build numbers from the error message you can use this simple cheat sheet:

Build number SQL Server version
14.0 SQL Server 2017
13.0 SQL Server 2016
12.0 SQL Server 2014
11.0 SQL Server 2012
10.50 SQL Server 2008 R2
10.0 SQL Server 2008
9.0 SQL Server 2005
8.0 SQL Server 2000
7.0 SQL Server 7.0

You can find much more details about SQL Server builds on this page: https://sqlserverbuilds.blogspot.com/. I recommend, to add it to your bookmarks in your favorite browser. It’s invaluable when you need to quickly check SQL Server version or find latest Service Pack or Cumulative Update.

Now, armed with this knowledge, you know that this database backup file has been created on SQL Server 2017. That is the reason why I cannot restore it on SQL Server 2016.

On what SQL Server version this backup was created?

You don’t have to try to restore a database from a backup file in order to check on what version it was created. You can safely verify it using simple RESTORE HEADERONLY command.

RESTORE HEADERONLY FROM DISK = 'C:isoDB - AdventureWorksAdventureWorks2017.bak';
GO

In the resultset, you will find such information as:

  • Backup Name and Description
  • Who created it and on what Server (Login Name, Server Name, and version)
  • Database Name
  • Creation Date (Start and Finish)
  • and much more…

SQL Server RESTORE HEADERONLY

What to do when we cannot restore database from backup?

You already know that you will not be able to restore your database on the SQL Server you need. What can you do in such a situation? The solution is simple – you need to use a different database migration method. Here is a short list of few possibilities you have:

Option 1

In the case of very small databases, you can use SSMS to generate the SQL script that includes schema and data (INSERT statements). In next step, you can use this script to generate a new database on the target server.

Option 2

For bigger databases, you can generate the SQL script with the schema only and then use it to create an empty database on the target server. In the second step, you can use Import and Export Wizard or BCP command to migrate data from one database to another.

Option 3

You can also use the Export Data-Tier Application functionality to generate BACPAC file consisting of database schema and data. On the target server, you can use the Import Data-Tier Application functionality to create the new database from this file.

Do not mistake DACPAC with BACPAC. The former includes only database schema, and the latter includes database schema and data.

Option 4

Another possibility is to use the Copy Database Wizard with the SMO transfer method.

Option 5

The last solution is to use some available third-party tools that deliver Data Compare functionality.

Thanks for reading!

-Marek

Share it:

Понравилась статья? Поделить с друзьями:
  • Водонагреватель хаер на 50 литров инструкция
  • Машинка индезит стиральная инструкция по стирке 13 программ
  • Ингеоком руководство кидяев
  • Инструкция по охране труда при использовании телевизора в доу
  • M9t руководство по ремонту