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 这样我们就有了所有数据。
我需要将数据从链接服务器传输到我们的主 SQL 服务器。问题是,table 名称每天都在变化。
我浏览了这个网站,想看看是否有可能有一个可变的数据库名称,确实如此,但也想看看是否有可能在 OPENQUERY
中有变量,它也是。
但我正在努力结合这些需求,所以我在 OPENQUERY
.
我需要这样的东西:
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 这样我们就有了所有数据。