Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在Windows 7上的SQL Server 2008中动态创建分布式查询_Sql Server_Tsql_Sql Server 2008_Windows 7_Msdtc - Fatal编程技术网

Sql server 在Windows 7上的SQL Server 2008中动态创建分布式查询

Sql server 在Windows 7上的SQL Server 2008中动态创建分布式查询,sql-server,tsql,sql-server-2008,windows-7,msdtc,Sql Server,Tsql,Sql Server 2008,Windows 7,Msdtc,我只是在多台服务器上进行一些统计收集,作为测试,我正在使用本地网络上的我的机器(机器a)和另一台机器(机器B) 我的机器(A)正在从另一台机器(B)收集暂存表中的所有信息。我有一个运行并动态创建如下内容的sp: exec ('exec SprocName ?', 1000) at [Machine B] 上面所做的是从机器B中提取1000行批次所需的信息。这将循环,直到检索到所有数据 下次使用不同的存储过程名运行时,它实际上不会调用机器B,将@@rowcount视为0并继续运行。它只运行第一

我只是在多台服务器上进行一些统计收集,作为测试,我正在使用本地网络上的我的机器(机器a)和另一台机器(机器B)

我的机器(A)正在从另一台机器(B)收集暂存表中的所有信息。我有一个运行并动态创建如下内容的sp:

 exec ('exec SprocName ?', 1000) at [Machine B]
上面所做的是从机器B中提取1000行批次所需的信息。这将循环,直到检索到所有数据

下次使用不同的存储过程名运行时,它实际上不会调用机器B,将@@rowcount视为0并继续运行。它只运行第一个存储过程,使其返回到上面的语句

因此,psuedo代码:

while (each sproc)
{
 set @qry =  exec ('exec SprocName ?', 1000) at [Machine B]
 while (rowcount <> 0)
 {  exec (@qry) }
}
while(每个存储过程)
{
在[机器B]上设置@qry=exec('exec SprocName',1000)
while(行计数0)
{exec(@qry)}
}
我以前尝试过这个方法,比如“从openquery中选择*”([Machine B],“exec SprocName@batchsize”),但这次我尝试了不同的方法。有人知道为什么Servername上的exec()只想使用一个存储过程名称吗?它将循环并拉动所有行,但移动到第二个存储过程名称显然甚至不会调用机器B

出于性能原因,我不打算使用Servername.Table.Schema.Sproc

一些统计数据:
计算机A-Windows 7 Sql Server 2008 SP1未安装CU
计算机B-Windows 2003 Sql SErver 2005 SP3未安装CU
除XA事务外,这两个数据库都有与此相关的所有MSDTC选项


如果有人真正理解我的问题并能提供帮助,请提前感谢。

我需要每隔一段时间远离代码一点。。。回来后发现循环逻辑中有一个缺陷。psuedo代码基本上是正确的。。。它没有重置我正在使用的
@rowcount
变量