我是从SQL Server 2008 R2运行的。
在编写查询以从sys.servers查询时是否可以使用变量名?
DECLARE @hostname varchar(20)
SET @hostname = '192.168.110.101'
SELECT TOP(10) * FROM [@hostname].databasename.dbo.tablename
返回“无法在sys.servers中找到服务器'@hostname'。验证是否指定了正确的服务器名称。如有必要,执行存储过程sp_addlinkedserver将服务器添加到sys.servers。”。
看来它正在尝试使用@hostname,而不是实际设置的变量。我也尝试删除括号,这也不起作用。有什么想法吗?
答案 0 :(得分:1)
DECLARE @SQL as varchar(max)
SET @SQL = 'SELECT TOP 10 * FROM '
DECLARE @hostname varchar(20)
SET @hostname = '192.168.110.101'
SET @SQL = SQL + @hostname + '.databasename.dbo.tablename'
EXEC (@SQL)