1

我有一个存储过程(sql2005)需要调用远程服务器上的表值函数(sql2000)。如何远程执行Sql-Server 2000/5中的表值函数?

我的查询如下:

select 
    * 
from 
    mytable mt 
    cross apply 
     opendatasource('sqloledb','Data Source=remoteserver;UID=user;Password=pass').mydatabase.dbo.mytvf 
     (cast(param1 as numeric(20,0)), @param2, mt.param3) 

我发现了一个不正确的语法错误附近“投”。用这个表示法可以执行一个tvf吗?我应该以某种方式使用openrowset?任何帮助表示赞赏。

+0

我不是积极的,这就是为什么我没有列出答案,但我认为你需要指定WITH NOLOCK以防止远程服务器阻塞。你很容易被脏读,但这可能是问题。 – RThomas 2011-05-11 18:15:21

+0

我从哪里开始?选择*从mytable mt(nolock)? – IronicMuffin 2011-05-11 18:16:33

+0

可以做一个TVD的opendatasource吗? – IronicMuffin 2011-05-11 18:17:37

回答