#tsql #sql-server-2008-r2
#tsql #sql-server-2008-r2
Вопрос:
Я пытаюсь создать резервную копию базы данных только для полной копии со связанного сервера на диск E на другом сервере SAN. Не нахожу никакой помощи. Связанный сервер SAPRS02 работает и изменил параметры RPC, но по-прежнему не работает.
Приветствуется любая помощь.
JJ
DECLARE @DateStr nvarchar(500), @ArchivePath nvarchar(500),
@FileName nvarchar(500), @DestFileName nvarchar(500),
@dbName nvarchar(255), @SvrName nvarchar(200),
@RADBACKUP nvarchar(MAX)
SET @dbName = 'MYDB'
SET @ArchivePath = 'E:SQLBackupsMyDIR'
SET @SvrName = REPLACE(@@SERVERNAME,'','-')
SET @DateStr = CONVERT(NVARCHAR(20),GETDATE(),120)
SET @DateStr = REPLACE(REPLACE(REPLACE(REPLACE(@DateStr,'',''),':',''),'-','_'),' ','')
SET @FileName = @SvrName '_' @DBName '_CopyOnly_backup_' @DateStr '.bak'
SET @DestFileName = @ArchivePath @FileName
SET @RADBACKUP = 'BACKUP DATABASE @dbName
TO DISK = @DestFileName
WITH COMPRESSION
COPY_ONLY,
CHECKSUM, COMPRESSION,
NAME = @FileName, SKIP, STATS = 10'
--SELECT * FROM @RADBACKUP
EXECUTE SAPRS02.master.dbo.sp_executesql @RADBACKUP
ОШИБКА:
Сообщение 137, уровень 15, состояние 2, строка 1
Должно объявлять скалярную переменную «@dbName».
Комментарии:
1. Сообщение 137, уровень 15, состояние 2, строка 1 Должна объявлять скалярную переменную «@dbName».
2. Когда вы выполняете строку в @RADBACKUP, ни для одной из переменных там нет области видимости. Либо объедините их в виде строк, либо используйте функцию параметра
sp_execute_sql
. Под объединением в виде строк я подразумеваю сделать это:SET @RADBACKUP = 'BACKUP DATABASE ' @dbName ' '
Ответ №1:
SET @RADBACKUP = 'BACKUP DATABASE ' QUOTENAME(@dbName) '
TO DISK = ''' @DestFileName '''
WITH COMPRESSION
COPY_ONLY,
CHECKSUM, COMPRESSION,
NAME = ''' @FileName ''', SKIP, STATS = 10';
Комментарии:
1. Теперь я понимаю это. Спасибо
2. Синтаксис некорректных6 рядом с ‘Copy_Only’.
3. Я просто пропустил запятую. Теперь по какой-то причине он пытается поместить резервную копию на диск H:. У меня нет диска H. Хм. Все еще исследую.
4. Сообщение 3013, уровень 16, состояние 1, строка 1, БАЗА ДАННЫХ РЕЗЕРВНОГО КОПИРОВАНИЯ завершается аварийно. Сообщение 262, уровень 14, состояние 1, строка 1 Отказано в разрешении РЕЗЕРВНОГО КОПИРОВАНИЯ БАЗЫ ДАННЫХ в базе данных ‘RAD’.
5. Я обошелся, загрузив данные во временную таблицу и используя SSMS, экспортировал их на другой сервер, но все равно нужно создать пакет SSIS, чтобы выполнить это своевременно, при вызове.