Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
При востановление базы выставляется исходное значение базы.

История , база называлась SD я сделал полную копию базы данных , резервную копию залил в новую базу 1C82_SD , при востановление исходное имя SD . Как это можно поправить , помогите разобраться !?

Картинка с другого сайта.

Картинка с другого сайта.

Картинка с другого сайта.

Из-за этого у меня не работает скрипт копирования базы =(

автор
declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = '1C82_SD'
AND type = 'D' AND backup_start_date = (
SELECT MAX(i.backup_start_date)
FROM msdb.dbo.backupset i
WHERE i.database_name = b.database_name
AND i.type = type AND i.is_copy_only = 0
)

set @pathBackUp = 'H:\SQL\1C82_SD\'+ @baseBackUp + '.bak'

RESTORE DATABASE [copy_ut_ak]
FROM DISK = @pathBackUp
WITH FILE = 1,
MOVE N'1C82_SD' TO N'E:\BASE\COPY_1C82_SD.mdf',
MOVE N'1C82_SD_log' TO N'E:\LOG\COPY_1C82_SD_log.ldf',
NOUNLOAD, REPLACE, STATS = 10
GO
16 янв 12, 13:33    [11910504]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Justbox,

Извините , вот ошибка SQL когда пытаюсь запустить задание копирования :

автор
Сообщение 3234, уровень 16, состояние 2, строка 15
Логический файл "1C82_SD" не является частью базы данных "COPY_1C82_SD". Используйте RESTORE FILELISTONLY для вывода списка имен логических файлов.
Сообщение 3013, уровень 16, состояние 1, строка 15
RESTORE DATABASE прервано с ошибкой.
16 янв 12, 13:52    [11910693]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
qwerty777
Member

Откуда:
Сообщений: 158
если я правильно понял, должно помочь http://www.kodyaz.com/articles/change-sql-server-database-file-names.aspx
16 янв 12, 13:52    [11910698]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Логические имена только лишь от одной смены имени базы не поменяются.
16 янв 12, 13:53    [11910704]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Гавриленко Сергей Алексеевич
Логические имена только лишь от одной смены имени базы не поменяются.


А что мне лучше сделать чтобы все стало правильно ?
16 янв 12, 13:56    [11910733]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Justbox
А что мне лучше сделать чтобы все стало правильно ?
Сначала определиться, что такое "правильно".
16 янв 12, 14:11    [11910891]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Гавриленко Сергей Алексеевич
Justbox
А что мне лучше сделать чтобы все стало правильно ?
Сначала определиться, что такое "правильно".


Чтобы имя исходной базы было такойже как и база данных .
16 янв 12, 14:19    [11910978]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Justbox
Чтобы имя исходной базы было такойже как и база данных .
Чего?
16 янв 12, 14:20    [11910984]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Гавриленко Сергей Алексеевич,

Картинка с другого сайта.

Ивините , вот как мне имзменить чтобы было не SD а 1C82_SD ?
16 янв 12, 14:30    [11911055]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Justbox
Ивините , вот как мне имзменить чтобы было не SD а 1C82_SD ?
Вам же уже дали ссылку, как.

Сообщение было отредактировано: 16 янв 12, 14:33
16 янв 12, 14:33    [11911083]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Гавриленко Сергей Алексеевич,

Создаю SQL запрос :

ALTER DATABASE 1C82_SD
MODIFY FILE (NAME = sd, NEWNAME = 1C82_SD)

Ошибка:

Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис около конструкции "1".


Что я не так делаю ?
16 янв 12, 15:01    [11911337]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
invm
Member

Откуда: Москва
Сообщений: 9833
Justbox
Что я не так делаю ?
Документацию не читаете и не хотите читать.
ALTER DATABASE [1C82_SD]
MODIFY FILE (NAME = 'sd', NEWNAME = '1C82_SD') 
16 янв 12, 15:14    [11911464]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Данки всем !
16 янв 12, 15:16    [11911484]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Когда делаю запрос ,

автор
declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = '1C82_SD'
AND type = 'D' AND backup_start_date = (
SELECT MAX(i.backup_start_date)
FROM msdb.dbo.backupset i
WHERE i.database_name = b.database_name
AND i.type = type AND i.is_copy_only = 0
)

set @pathBackUp = 'H:\SQL\1C82_SD\'+ @baseBackUp + '.bak'

RESTORE DATABASE [COPY_1C82_SD]
FROM DISK = @pathBackUp
WITH FILE = 1,
MOVE N'1C82_SD' TO N'E:\BASE\COPY_1C82_SD.mdf',
MOVE N'1C82_SD_log' TO N'E:\LOG\COPY_1C82_SD_log.ldf',
NOUNLOAD, REPLACE, STATS = 10
GO


Выдается вот такая ошибка

автор
Сообщение 3234, уровень 16, состояние 2, строка 15
Логический файл "1C82_SD" не является частью базы данных "COPY_1C82_SD". Используйте RESTORE FILELISTONLY для вывода списка имен логических файлов.
Сообщение 3013, уровень 16, состояние 1, строка 15
RESTORE DATABASE прервано с ошибкой.


в чем может быть проблема
16 янв 12, 15:35    [11911745]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Justbox
в чем может быть проблема


Логический файл "1C82_SD" не является частью базы данных "COPY_1C82_SD". Используйте RESTORE FILELISTONLY для вывода списка имен логических файлов.
16 янв 12, 15:59    [11912034]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Glory,
А как это правильно сделать ?
17 янв 12, 10:28    [11915720]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Justbox
А как это правильно сделать ?

Как правильно запустить команду RESTORE FILELISTONLY ?
Написать ее с нужными параметрами и взять из результата имена логических файлов
17 янв 12, 11:36    [11916243]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
автор
USE SRV1C_UT11

declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)
DECLARE @FILELISTONLY nvarchar(100),
@QRESTORE nvarchar(300),
@DBName nvarchar(100)

SET @DBName = 'COPY_UT11'

CREATE TABLE #tFILELISTONLY(
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
Type char(1),
FileGroupName nvarchar(128),
[Size] numeric(20,0),
[MaxSize] numeric(20,0)
)

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = 'SRV1C_UT11'
AND type = 'D' AND backup_start_date = (
SELECT MAX(i.backup_start_date)
FROM msdb.dbo.backupset i
WHERE i.database_name = b.database_name
AND i.type = type AND i.is_copy_only = 0
)

set @pathBackUp = 'H:\SQL\SRV1C_UT11\'+ @baseBackUp + '.bak'

SET @FILELISTONLY = N'RESTORE FILELISTONLY from DISK = N''@pathBackUp'''
INSERT #tFILELISTONLY EXEC(@FILELISTONLY)

SELECT @QRESTORE = 'RESTORE DATABASE [' + @DBName + ']
FROM DISK = ''@pathBackUp''
WITH
MOVE ''' + t1.LogicalName + ''' TO ''E:\BASE\' + @DBName + '.mdf'',
MOVE ''' + t2.LogicalName + ''' TO ''E:\LOG\' + @DBName + '.ldf'',
REPLACE;
'
FROM #tFILELISTONLY t1
JOIN #tFILELISTONLY t2
ON t2.Type = 'L'
WHERE t1.Type = 'D'

use master

EXECUTE(@QRESTORE)

DROP TABLE #tFILELISTONLY
GO


Проверяю запрос ошибок не найденно

Выполняю запрос , вылетает ошибка :

Сообщение 3201, уровень 16, состояние 2, строка 1
Невозможно открыть устройство резервного копирования 'F:\SQL LOCAL BACKUP\+ @pathBackUp +'. Ошибка операционной системы 3(Системе не удается найти указанный путь.).
Сообщение 3013, уровень 16, состояние 1, строка 1
RESTORE FILELIST прервано с ошибкой.

(строк обработано: 0)

Где мне убрать старый путь в скуле в резервным копиям 'F:\SQL LOCAL BACKUP\' и почему он выскакивает ?
17 янв 12, 14:02    [11917587]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Justbox
автор
USE SRV1C_UT11

declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)
DECLARE @FILELISTONLY nvarchar(100),
@QRESTORE nvarchar(300),
@DBName nvarchar(100)

SET @DBName = 'COPY_UT11'

CREATE TABLE #tFILELISTONLY(
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
Type char(1),
FileGroupName nvarchar(128),
[Size] numeric(20,0),
[MaxSize] numeric(20,0)
)

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = 'SRV1C_UT11'
AND type = 'D' AND backup_start_date = (
SELECT MAX(i.backup_start_date)
FROM msdb.dbo.backupset i
WHERE i.database_name = b.database_name
AND i.type = type AND i.is_copy_only = 0
)

set @pathBackUp = 'H:\SQL\SRV1C_UT11\'+ @baseBackUp + '.bak'

SET @FILELISTONLY = N'RESTORE FILELISTONLY from DISK = N''@pathBackUp'''
INSERT #tFILELISTONLY EXEC(@FILELISTONLY)

SELECT @QRESTORE = 'RESTORE DATABASE [' + @DBName + ']
FROM DISK = ''@pathBackUp''
WITH
MOVE ''' + t1.LogicalName + ''' TO ''E:\BASE\' + @DBName + '.mdf'',
MOVE ''' + t2.LogicalName + ''' TO ''E:\LOG\' + @DBName + '.ldf'',
REPLACE;
'
FROM #tFILELISTONLY t1
JOIN #tFILELISTONLY t2
ON t2.Type = 'L'
WHERE t1.Type = 'D'

use master

EXECUTE(@QRESTORE)

DROP TABLE #tFILELISTONLY
GO


Проверяю запрос ошибок не найденно

Выполняю запрос , вылетает ошибка :

Сообщение 3201, уровень 16, состояние 2, строка 1
Невозможно открыть устройство резервного копирования 'F:\SQL LOCAL BACKUP\+ @pathBackUp +'. Ошибка операционной системы 3(Системе не удается найти указанный путь.).
Сообщение 3013, уровень 16, состояние 1, строка 1
RESTORE FILELIST прервано с ошибкой.

(строк обработано: 0)

Где мне убрать старый путь в скуле в резервным копиям 'F:\SQL LOCAL BACKUP\' и почему он выскакивает ?


Пардон правильный скрипт :

USE SRV1C_UT11

declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)
DECLARE @FILELISTONLY nvarchar(100),
 @QRESTORE nvarchar(300),
 @DBName nvarchar(100)

SET @DBName = 'COPY_UT11'

CREATE TABLE #tFILELISTONLY
(
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
[Type] char(1),
FileGroupName nvarchar(128),
[Size] numeric(20,0),
[MaxSize] numeric(20,0),
FileID bigint, 
CreateLSN numeric(25,0),
DropLSN numeric(25,0),
UniqueID uniqueidentifier, 
ReadOnlyLSN numeric(25,0), 
ReadWriteLSN numeric(25,0), 
BackupSizeInBytes bigint, 
SourceBlockSize int,
FileGroupID int, 
LogGroupGUID uniqueidentifier, 
DifferentialBaseLSN numeric(25,0), 
DifferentialBaseGUID uniqueidentifier, 
IsReadOnly bit, 
IsPresent bit, 
TDEThumbprint varbinary(32)
) 

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = 'SRV1C_UT11'
   AND type = 'D' AND backup_start_date = (  
   SELECT MAX(i.backup_start_date)
    FROM msdb.dbo.backupset i
 WHERE i.database_name = b.database_name
     AND i.type = type AND i.is_copy_only = 0 
)

set @pathBackUp = 'H:\SQL\SRV1C_UT11\'+ @baseBackUp + '.bak'

SET @FILELISTONLY = N'RESTORE FILELISTONLY from DISK = ''+ @pathBackUp + '''
INSERT #tFILELISTONLY EXEC(@FILELISTONLY)

SELECT @QRESTORE = 'RESTORE DATABASE [' + @DBName + ']
FROM DISK = ''@pathBackUp'' 
WITH 
 MOVE ''' + t1.LogicalName + ''' TO ''E:\BASE\' + @DBName + '.mdf'',
 MOVE ''' + t2.LogicalName + ''' TO ''E:\LOG\' + @DBName + '.ldf'',
 REPLACE;
'
FROM #tFILELISTONLY t1
JOIN #tFILELISTONLY t2
   ON t2.Type = 'L'
WHERE t1.Type = 'D'

use master

EXECUTE(@QRESTORE)

DROP TABLE #tFILELISTONLY
GO
17 янв 12, 14:04    [11917609]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Justbox
Где мне убрать старый путь в скуле в резервным копиям 'F:\SQL LOCAL BACKUP\' и почему он выскакивает ?

Вы не имеете привычки выводить содержимое переменной с текстом сформированной команды ДО того, как выполнять ее в EXECUTE() ?
17 янв 12, 14:12    [11917676]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Glory,

Да понимаю но откуда он берет настройку старого пути для резервной копии , а лучше как ее вообще убрать ?
17 янв 12, 14:21    [11917751]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Justbox
Да понимаю но откуда он берет настройку старого пути для резервной копии , а лучше как ее вообще убрать ?

Он(сервер) берет ее из вами написанного кода.
17 янв 12, 14:23    [11917776]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Glory,

я в упор не вижу 'F:\SQL LOCAL BACKUP\' помогите убрать эту настройку так как у меня все пути для резервного копирования идут на другой диск
17 янв 12, 14:45    [11918030]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
USE SRV1C_UT11

declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)
DECLARE @FILELISTONLY nvarchar(100),
 @QRESTORE nvarchar(300),
 @DBName nvarchar(100)

SET @DBName = 'COPY_UT11'

CREATE TABLE #tFILELISTONLY
(
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
[Type] char(1),
FileGroupName nvarchar(128),
[Size] numeric(20,0),
[MaxSize] numeric(20,0),
FileID bigint, 
CreateLSN numeric(25,0),
DropLSN numeric(25,0),
UniqueID uniqueidentifier, 
ReadOnlyLSN numeric(25,0), 
ReadWriteLSN numeric(25,0), 
BackupSizeInBytes bigint, 
SourceBlockSize int,
FileGroupID int, 
LogGroupGUID uniqueidentifier, 
DifferentialBaseLSN numeric(25,0), 
DifferentialBaseGUID uniqueidentifier, 
IsReadOnly bit, 
IsPresent bit, 
TDEThumbprint varbinary(32)
) 

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = 'SRV1C_UT11'
   AND type = 'D' AND backup_start_date = (  
   SELECT MAX(i.backup_start_date)
    FROM msdb.dbo.backupset i
 WHERE i.database_name = b.database_name
     AND i.type = type AND i.is_copy_only = 0 
)

set @pathBackUp = 'H:\SQL\SRV1C_UT11\'+ @baseBackUp + '.bak'

SET @FILELISTONLY = 'RESTORE FILELISTONLY from DISK = ' + CHAR(39) + @pathBackUp + CHAR(39) 
--print @FILELISTONLY
INSERT #tFILELISTONLY EXEC(@FILELISTONLY)

SELECT @QRESTORE = 'RESTORE DATABASE [' + @DBName + ']
FROM DISK = ' + CHAR(39) + @pathBackUp + CHAR(39)+
'WITH 
 MOVE ''' + t1.LogicalName + ''' TO ''E:\BASE\' + @DBName + '.mdf'',
 MOVE ''' + t2.LogicalName + ''' TO ''E:\LOG\' + @DBName + '.ldf'',
 REPLACE;
'
FROM #tFILELISTONLY t1
JOIN #tFILELISTONLY t2
   ON t2.Type = 'L'
WHERE t1.Type = 'D'

use master

EXECUTE(@QRESTORE)

DROP TABLE #tFILELISTONLY
GO


Спаибо сделал !

Но хочется понять откуда SQL сервер берет настройку старого пути резервного копирования как ее убрать или указать правильный путь !?
17 янв 12, 15:03    [11918275]     Ответить | Цитировать Сообщить модератору
 Re: Востановление базы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Justbox
я в упор не вижу 'F:\SQL LOCAL BACKUP\'

А где в вашем коде хоть какой то отладочный вывод, чтобы хоть что то видеть ?
Вы наверное даже полный текст команды своей не знаете
17 янв 12, 15:07    [11918315]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить