Sql server 2008 如何在视图中使用OpenRowSet使用temp调用SP?
我试图从一个只支持连接表和视图的应用程序运行存储过程。我的工作是使用一个通过Openrowset从SP获取结果的视图。SP使用临时表存储中间结果,这是一个DDL操作,分布式查询似乎不支持该操作。我可以用@temp table变量替换temp,但这会大大降低整个代码的速度。我在t1中使用bulkinsert select*对temp进行加速 我收到的错误消息是 无法处理对象exec DW.dbo.testspwithtentable。 链接服务器null的OLE DB提供程序SQLNCLI10指示 对象没有列或当前用户没有列 拥有该对象的权限 我是否可以在SP中使用临时表并使用OpenRowSet从视图中调用它 我创建的视图是:Sql server 2008 如何在视图中使用OpenRowSet使用temp调用SP?,sql-server-2008,tsql,view,temp,openrowset,Sql Server 2008,Tsql,View,Temp,Openrowset,我试图从一个只支持连接表和视图的应用程序运行存储过程。我的工作是使用一个通过Openrowset从SP获取结果的视图。SP使用临时表存储中间结果,这是一个DDL操作,分布式查询似乎不支持该操作。我可以用@temp table变量替换temp,但这会大大降低整个代码的速度。我在t1中使用bulkinsert select*对temp进行加速 我收到的错误消息是 无法处理对象exec DW.dbo.testspwithtentable。 链接服务器null的OLE DB提供程序SQLNCLI10指示
CREATE VIEW SelectDataFromSP
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=(local);TRUSTED_CONNECTION=YES;',
'exec DW.dbo.TestSpWithTempTable') AS a
工作正常但速度较慢的代码是
CREATE PROC TestSpWithTempTable
AS
declare @TxnTypes table(TxnType varchar(100))
insert into @TxnTypes
Select distinct TxnType from Transactions
-- lot of other stuffs going on here
select TxnType from @TxnTypes
GO
您能否访问该sql server实例中的用户定义函数?如果是,请参阅此链接是,我可以访问视图。我问的是如何访问用户定义函数,而不是视图。抱歉。。我指的是视图、函数和所有其他对象。我也检查了链接,但没有发现它们有帮助。这里的问题是SQL server不喜欢远程过程调用中的DML。我正在寻找解决这个问题的方法。与其尝试使用临时表,不如尝试优化存储过程以完全删除它们。
CREATE PROC TestSpWithTempTable
AS
declare @TxnTypes table(TxnType varchar(100))
insert into @TxnTypes
Select distinct TxnType from Transactions
-- lot of other stuffs going on here
select TxnType from @TxnTypes
GO