我有一个存储过程,它将对存储在同一链接服务器上的链接服务器上的数据文件进行备份。从每个公司的表中检索链接的服务器名称。因此,链接服务器的名称保存在变量中。因此,在存储过程中,我运行以下备份数据库命令:
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)
如何在备份数据库命令中将服务器名称作为变量传递。
因为@servername
是sysname
存储过程中的sp_addlinkedserver
变量,所以您不能在@Sql
文本命令中包含那些双引号,所以您必须编写:
IF NOT EXISTS(SELECT * FROM sys.servers where name = @ServerName )
SET @Sql = 'sp_addlinkedserver @server = ' + @ServerName + ''
EXECUTE( @SQL)