Не восстанавливается база из полного бэкапа MS SQL
☑
0
Одинесю
26.05.15
✎
13:14
Модель восстановления — Полная. Имеется Полная резервная копия базы. При попытке восстановления выпадает ошибка System.Data.SqlClient.SqlError: Инструкцию BACKUP LOG невозможно выполнить, так как не существует резервной копии текущей базы данных. (Microsoft.SqlServer.SmoExtended)
Подскажите, что может быть?
PS Восстанавливаю через Management Studio.
1
fisher
26.05.15
✎
13:17
Первый раз восстанавливаешь? Тогда что-то не так сделал.
2
Heckfy
26.05.15
✎
13:17
Телепатирую: у вас файл не фулл бекапа, а дифф.
3
Jaap Vduul
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) Фулл
6
Alexey_Morov
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, но я так делал уже.
9
Alexey_Morov
26.05.15
✎
13:39
(1)
Непонятно причём тут BACKUP LOG, если делается наоборот восстановление?
10
leonidkorolev
26.05.15
✎
13:39
скрипт сюда выложи
11
Jaap Vduul
26.05.15
✎
13:39
(4) При восстановлении естественно.
12
Jaap Vduul
26.05.15
✎
13:39
(9) см. (3)
13
Heckfy
26.05.15
✎
13:40
(5) А я говорю Дифф.
14
Alexey_Morov
26.05.15
✎
13:42
(13)
Не, при диффе должна быть другая ошибка.
(12) Выложи, пожалуйста, скриншоты.
15
Jaap Vduul
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)
17
Jaap Vduul
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
21
Alexey_Morov
26.05.15
✎
13:53
(20) Вот. Наверняка эта ошибка из-за двух галок «Создать резервную копию…»).
22
Alexey_Morov
26.05.15
✎
13:54
Надо срочно отключить эти галки, так как они мешают при проведении восстановления полного бэкапа.
23
Одинесю
26.05.15
✎
13:56
(22) Я пробовал…
24
Одинесю
26.05.15
✎
13:58
(22) Вроде пошло, сделал кроме отключения галок еще и NORECOVERY, вышла уже другая ошибка, что база отличается. Спасибо, буду дальше пробовать.
25
Jaap Vduul
26.05.15
✎
14:00
(24) Включи «Перезаписать существующую…»
26
Господин ПЖ
26.05.15
✎
14:00
>вышла уже другая ошибка, что база отличается
у новой базы id другой поставь галку replace
27
Alexey_Morov
26.05.15
✎
14:03
(26)
Согласен. Должно помочь.
28
Одинесю
26.05.15
✎
14:12
(26) (27) Спасибо!
29
Одинесю
26.05.15
✎
14:13
(25) Спасибо!
Возможно проблема в чистке журнала транзакций (база переводится в simple, shkrink ну и обратно в full), но на другом сервере проблем не наблюдаю с этим.
Да, это как раз может вызывать вашу ошибку: если после полного резервного копирования происходит изменение модели восстановления базы (full->simple->full), и в момент, когда БД находится в simple, происходит усечение журнала транзакций, то цепочка записей транзакций после полного копирования оказывается нарушенной. А если усечения не происходит, как на другом сервере, — то вам везет. Поэтому так, как вы делаете, делать не надо.
Вы сжимаете именно журнал транзакций, а не саму БД, я правильно понял? В таком случае посмотрите, а надо ли это вам. Потому что резервное компирование журнала транзакций очищает занятое место в его файле. И это место в дальнейшем (через некоторый промедуток времени — после переключения на другой логический журнал) может использоваться повторно. В результате в стационарном случае — при примерно одинакой частоте трназакций — файл журнала расти перестает.
Если же вам действительно потребуется сжать журнал — например, после массовй операции типа загрузки большого объема данных — то это можно сделать, не меняя модель восстановления БД. Делается это последовательностью операций «резервное копирование журнала»->»повторное резервное копирование журнала»(лучше после паузы, чтобы преключение на следующий пустой логический журнал, который будет в начале файла, точно произошло)->»усечение журнала с конца»(truncate). Иногда, правда, эту последовательность может потребоваться повторить (если переключения на пустой логиченский журнал в начале файла не произошло).
А усечение журнала трназакций с конца — это очень быстрая операция (потому что никакие записи журнала никуда не перемещаются), так что ее можно делать обычно даже в период номинальной нагрузки, днем.
I tried to restore a database but this message showed. How do I restore this database?
Restore of database ‘farhangi_db’ 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)
asked Oct 27, 2013 at 22:07
8
Originally, I created a database and then restored the backup file to my new empty database:
Right click on Databases > Restore Database > General : Device: [the
path of back up file] → OK
This was wrong. I shouldn’t have first created the database.
Now, instead, I do this:
Right click on Databases > Restore Database > General : Device: [the
path of back up file] → OK
Jeremy Caney
7,702106 gold badges55 silver badges83 bronze badges
answered Oct 28, 2013 at 7:14
SamanSaman
5,5736 gold badges18 silver badges17 bronze badges
1
Another cause of this issue is when the Take tail-log backup before restore «Options» setting is enabled.
On the «Options» tab, Disable/uncheck Take tail-log backup before restore before restoring to a database that doesn’t yet exist.
answered Apr 7, 2015 at 16:57
PeachPeach
2,7974 gold badges24 silver badges26 bronze badges
2
Please see below image and apply changes in SqlServer :
first right click on Database —> Task —> Restore —> Select Backup File —>
Finally Apply Change in Options Tab.
answered Jun 25, 2018 at 6:02
Amin GolmahallehAmin Golmahalleh
4,2663 gold badges29 silver badges38 bronze badges
1
- Make sure there is a new database.
- Make sure you have access to your database (user, password etc).
- Make sure there is a backup file with no error in it.
Dharman♦
33.5k27 gold badges101 silver badges149 bronze badges
answered Oct 27, 2013 at 22:46
OskarOskar
2,56233 silver badges37 bronze badges
0
In our case it was due to the Recovery Model on the primary database having been changed after we did the backup in preparation for setting up log shipping.
Ensuring the Recovery Model was set to Full Recovery before doing the backup and setting up log shipping resolved it for us.
answered Jul 21, 2015 at 2:21
You can use following SQL to restore if you’ve already created database
RESTORE DATABASE [YourDB]
FROM DISK = 'C:\YourDB.bak'
WITH MOVE 'YourDB' TO 'C:\YourDB.mdf',
MOVE 'YourDB_Log' TO 'C:\YourDB.ldf', REPLACE
answered Apr 15, 2016 at 8:13
HasanGHasanG
13.2k31 gold badges102 silver badges159 bronze badges
Another cause for this is if you have the same database restored under a different name.
Delete the existing one and then restoring solved it for me.
answered Mar 26, 2018 at 10:41
1
I fixed my error on restoring to non-existing DB from SQL 2008 to SQL 2014 by putting a check mark on Relocating to the new SQL2014 folder location.
answered Mar 14, 2016 at 17:41
I just deleted the existing DB that i wanted to override with the backup and restored it from backup and it worked without the error.
answered Jul 25, 2018 at 8:07
I am not sure whether the database backup file, you trying to restore, is coming from the same environment as you trying to restore it onto.
Remember that destination path of .mdf and .ldf files lives with the backup file itself.
If this is not a case, that means the backup file is coming from a different environment from your current hosting one, make sure that .mdf and .ldf file path is the same (exists) as on your machine, relocate these otherwise.
(Mostly a case of restoring db in Docker image)
The way how to do it:
In Databases -> Restore database -> [Files] option -> (Check «Relocate all files to folder» — mostly default path is populated on your hosting environment already)
answered Jun 9, 2019 at 22:02
st35lyst35ly
1,25518 silver badges24 bronze badges
In case the problem still exists go to Restoration Database page and Check «Restore all files to folder» in «Files» tab This might help
answered Aug 2, 2019 at 9:08
In my case I am restoring a SQL Server 2008 R2 Database to SQL Server 2016
After selecting the file in the General tab, you should go to the Options tab and do 2 things:
- You must activate Overwrite existing database
- You must deactivate end of record copy
answered Dec 14, 2019 at 16:49
Simply you can use this method:
- If you have a database with same name:
WIN+R->services.msc->SQL SERVER(MSSQLSERVER)->Stop - Go to your MySQL Data folder path and delete previews database files
- Start sql service
- Right click on database and select Restore database
- in Files tab change Data file folder and Log file folder
- Click on OK to restore your database
my problem was solved with this method
BY…
EnriMR
3,9805 gold badges41 silver badges59 bronze badges
answered Sep 7, 2015 at 13:38
Click Right Click On Your Database The Press tasks>Back Up and take a back up from your database before restore your database i’m using this way to solve this Problem
answered Mar 1, 2017 at 19:13
Start asking to get answers
Find the answer to your question by asking.
Ask question
Explore related questions
See similar questions with these tags.
I have a SQL Server 2005 database using the full recovery model. If I execute the following commands:
ALTER DATABASE test SET RECOVERY SIMPLE;
ALTER DATABASE test SET RECOVERY FULL;
or
BACKUP LOG test WITH truncate_only;
Then try to run a log backup:
BACKUP LOG test TO DISK = 'backupfile.bak'
I receive the error message:
BACKUP LOG cannot be performed because there is no current database backup.
Question:
How do I check that I will not be able to take a log backup, without running a backup log command?
Paul White♦
92.9k30 gold badges431 silver badges677 bronze badges
asked Jun 22, 2013 at 18:52
1
You need to do a full backup of your database before you can take a log backup.
Execute the below T-SQL to see if a log backup can be performed:
SELECT db_name(database_id) as 'database', last_log_backup_lsn
FROM sys.database_recovery_status
Note : sys.database_recovery_status is an undocumented system view. If the value of last_log_backup_lsn is NULL, it means the database is not maintaining a sequence of log backups and is in auto-truncate mode. Refer to the following Microsoft Knowledge Base article:
You must perform a full database backup before you back up the transaction log for a database
Below is a script from SQLSkills to check if your database is in «pseudo-simple» mode.
USE [msdb];
GO
IF EXISTS (SELECT * FROM sys.objects WHERE [name] = N'SQLskillsIsReallyInFullRecovery')
DROP FUNCTION [SQLskillsIsReallyInFullRecovery];
GO
CREATE FUNCTION [SQLskillsIsReallyInFullRecovery] (
@DBName sysname)
RETURNS BIT
AS
BEGIN
DECLARE @IsReallyFull  BIT;
DECLARE @LastLogBackupLSN NUMERIC (25,0);
DECLARE @RecoveryModel TINYINT;
SELECT
@LastLogBackupLSN = [last_log_backup_lsn]
FROM
sys.database_recovery_status
WHERE
[database_id] = DB_ID (@DBName);
SELECT
@RecoveryModel = [recovery_model]
FROM
sys.databases
WHERE
[database_id] = DB_ID (@DBName);
IF (@RecoveryModel = 1 AND @LastLogBackupLSN IS NOT NULL)
SELECT @IsReallyFull = 1
ELSE
SELECT @IsReallyFull = 0;
RETURN (@IsReallyFull);
END;
GO
answered Jun 22, 2013 at 19:10
Kin ShahKin Shah
62.4k6 gold badges122 silver badges242 bronze badges
4
Start asking to get answers
Find the answer to your question by asking.
Ask question
Explore related questions
See similar questions with these tags.
Добрый день всем !
Поставил тут недавно на MS Windows 2019 Essentials — 64 bit сиё чудо программного обеспечения MSSQL 2019 — 64 bit сервер.
Встало сиё чудо программного обеспечения без ошибок. Создал в нем базы данных. Как будто все работает нормально.
Данные из баз извлекаются и соответственно заносятся туда. То есть базы работают нормально. Казалось бы живи и радуйся, но не тут то было.
1. В системный лог Windows 2019 Essentials стала «валиться» ошибка
Параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID
{571FCE7E-C4EB-41CF-B9D1-1CBCBFC6D2BD}
и APPID
{82F02F0C-0E3A-472E-BAA5-0BC0AE548818}
пользователю NT SERVICE\SQLSERVERAGENT с ИД безопасности (S-1-5-80-344959196-2060754871-2302487193-2804545603-1466107430) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно). Это разрешение безопасности можно изменить с помощью средства администрирования служб компонентов.
Понятно что это ошибка от DistributedCOM и понятно как ее исправлять. Только не понятно где взять пользователя NT SERVICE\SQLSERVERAGENT ? У меня на сервере такого пользователя нет ? Как его найти ?
2. Настроил планы обслуживания, а именно Полный бэкап баз данных в определенное время это одно задание. При запуске ручками оно выполняется успешно и без ошибок.
Далее настроил второе задание. Это естественно бэкап логов транзанкций. Причем взял бэкап логов транзанкций как базы model, так и всех своих баз данных. Бэкап лога танзанкций базы model проходит успешно, а вот бэкап логов транзанкций моих баз данных не проходит и выдается нижеследующая ошибка (показана на примере одной моей базы данных, чтобы уменьшить лог)
Microsoft(R) Server Maintenance Utility (Unicode) Version 15.0.2000
Отчет был сформирован на «OCTAGON».
План обслуживания: Transanctions_Backup
Продолжительность: 00:00:00
Состояние: Внимание! Не удалось выполнить одну или несколько задач.
Подробности:
Резервное копирование базы данных (журнал транзакций) (OCTAGON)
Создать резервную копию базы данных на Соединение с локальным сервером
Базы данных с уровнем совместимости 70 (SQL Server версия 7.0) будут пропущены.
Базы данных Все базы данных
Тип: Журнал транзакций
Добавить к существующему
Начало задачи: 2022-01-25T16:00:00.
Конец задачи: 2022-01-25T16:00:00.
Ошибка:(-1073548784) Сбой выполнения запроса «BACKUP LOG [acc_npf_ed] TO DISK = N’E:\\backup\\DB1…» со следующей ошибкой: «Инструкцию BACKUP LOG невозможно выполнить, так как не существует резервной копии текущей базы данных.
BACKUP LOG прервано с ошибкой.». Возможные причины сбоя: проблемы с этим запросом, свойство «ResultSet» установлено неправильно, параметры установлены неправильно или соединение было установлено неправильно.
Команда:EXECUTE master.dbo.xp_create_subdir N»E:\backup\DB1C8Backup\Tran\model»
GO
EXECUTE master.dbo.xp_create_subdir N»E:\backup\DB1C8Backup\Tran\acc_npf_ed»
GO
BACKUP LOG [model] TO DISK = N»E:\backup\DB1C8Backup\Tran\model\model_backup_2022_01_25_160000_8840128.trn» WITH NOFORMAT, NOINIT, NAME = N»model_backup_2022_01_25_160000_8840128», SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO
BACKUP LOG [acc_npf_ed] TO DISK = N»E:\backup\DB1C8Backup\Tran\acc_npf_ed\acc_npf_ed_backup_2022_01_25_160000_8840128.trn» WITH NOFORMAT, NOINIT, NAME = N»acc_npf_ed_backup_2022_01_25_160000_8840128», SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO
Пробовал делать полную копию своих баз данных — НЕ ПОМОГАЕТ, без оных тоже — НЕ ПОМОГАЕТ
Пробовал сжатие, без сжатия резервной копии баз данных — НЕ ПОМОГАЕТ
Пробовал пути к папке куда идет бэкап указывать со слЭшами и без слЭшев — НЕ ПОМОГАЕТ
Ткните носом куда надо копать ?
Заранее спасибо за помощь
