Сценарий резервного копирования SQL Server 2008 R2 T-SQL для доступа к связанному серверу

#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, чтобы выполнить это своевременно, при вызове.