存储过程对存储在链接服务器上的数据文件进行备份

问题描述 投票:0回答:1

我有一个存储过程,它将对存储在同一链接服务器上的链接服务器上的数据文件进行备份。从每个公司的表中检索链接的服务器名称。因此,链接服务器的名称保存在变量中。因此,在存储过程中,我运行以下备份数据库命令:

SET @Sql='BACKUP DATABASE  [' + @datafileID  + '] TO DISK = ''' + @fullPath + ''' WITH INIT, COMPRESSION;'
EXEC (@Sql) AT [@ServerName]

@datafileID是数据文件名

[@fullPath具有链接服务器上备份文件夹的路径

@ServerName具有链接的服务器名称

运行存储过程时,出现以下错误:

在sys.servers中找不到服务器'@ServerName'。验证指定了正确的服务器名称。如有必要,执行存储的过程sp_addlinkedserver将服务器添加到sys.servers。

链接的服务器是在代码的前面创建的

IF NOT EXISTS(SELECT * FROM sys.servers where name = @ServerName  )
SET @Sql = 'sp_addlinkedserver @server = '' ' + @ServerName + ''''
EXECUTE( @SQL)

如何在备份数据库命令中将服务器名称作为变量传递。

sql-server variables stored-procedures backup linked-server
1个回答
0
投票

因为@servernamesysname存储过程中的sp_addlinkedserver变量,所以您不能在@Sql文本命令中包含那些双引号,所以您必须编写:

IF NOT EXISTS(SELECT * FROM sys.servers where name = @ServerName  )
SET @Sql = 'sp_addlinkedserver @server = ' + @ServerName + ''
EXECUTE( @SQL)
© www.soinside.com 2019 - 2024. All rights reserved.