SQL OpenQuery 变量表名

SQL OpenQuery variable tablename

我需要将数据从链接服务器传输到我们的主 SQL 服务器。问题是,table 名称每天都在变化。 我浏览了这个网站,想看看是否有可能有一个可变的数据库名称,确实如此,但也想看看是否有可能在 OPENQUERY 中有变量,它也是。

但我正在努力结合这些需求,所以我在 OPENQUERY.

中有一个变量 table 名称

我需要这样的东西:

Declare @LinkedServer as varchar(max) = 'LinkedServer'
Declare @TName as varchar(max) = 'TName'+substring(cast(cast(getdate() as date) as
varchar(50)),1,4)+substring(cast(cast(getdate() as date) as
varchar(50)),6,2)+substring(cast(cast(getdate() as date) as
varchar(50)),9,2)

SELECT * FROM OPENQUERY(@LinkedServer, 'SELECT * FROM dbo.@TName')

有什么方法可以在 OPENQUERY 中创建变量 table 名称?

感谢您的帮助。

/米克尔

我会写一个同义词,它会在您开始数据提取工作之前每天更新。然后你不需要更新(可能是一吨)参考文献。

CREATE SYNONYM LinkedTableA
FOR
ServerName.DBName.dbo.TName20170331

SELECT * FROM LinkedTableA

我的答案是这样的:

USE [DataBase]
GO

DROP SYNONYM [dbo].[eCallByCallStat]
GO

declare @tablename varchar(50) 

set @tablename = 'Server1..dbo.eCallByCallStat'+substring(cast(cast(getdate()-1 as date) as varchar(50)),1,4)+substring(cast(cast(getdate()-1 as date) as varchar(50)),6,2)+substring(cast(cast(getdate()-1 as date) as varchar(50)),9,2)

declare @sql varchar(500)

set @sql = 'CREATE SYNONYM [dbo].[eCallByCallStat] FOR ' + @tablename 

exec (@sql)

这将 运行 每天早上更新同义词中的 table 名称,然后我们将该数据插入探测器 table 这样我们就有了所有数据。