我尝试使用存储过程创建临时表from this link
在字符串中,他定义了sql server版本。从2005年到2012年,我们的客户拥有不同类型的sql服务器。
字符串:' SQLNCLI','服务器=(本地)\ SQL2008; Trusted_Connection = yes;',' EXEC getBusinessLineHistory'
如何独立于sql server plataform
使用该命令答案 0 :(得分:0)
OPENROWSET创建一个到远程服务器的动态链接。
http://technet.microsoft.com/en-us/library/ms190312.aspx
您可以使用更改参数创建对动态链接的动态TSQL调用。以下是示例代码。这可以转换为存储过程,并将@my_Server作为参数传递。
请注意,这不会同时支持多个呼叫,因为只有一个表存在。
您不能使用本地临时表,因为EXEC在存储过程中调用sp_executesql可能存在一个范围问题。
这些是你需要研究的东西。
-- Set the server info
DECLARE @my_Server SYSNAME;
SET @my_Server = 'Server=(local)\SQL2008';
-- Clear the staging table
truncate table STAGE.dbo.MYTABLE;
-- Allow for dynamic server location
DECLARE @my_TSQL NVARCHAR(2048);
SET @my_TSQL =
'INSERT INTO STAGE.dbo.MYTABLE SELECT * FROM OPENROWSET(''SQLNCLI'',' + @my_TSQL +
';Trusted_Connection=yes;'', ''EXEC usp_My_Stored_Procedure'')';
-- Run the dynamic remote TSQL
exec sp_executesql @my_TSQL;