Sql server 在Windows 7上的SQL Server 2008中动态创建分布式查询
我只是在多台服务器上进行一些统计收集,作为测试,我正在使用本地网络上的我的机器(机器a)和另一台机器(机器B) 我的机器(A)正在从另一台机器(B)收集暂存表中的所有信息。我有一个运行并动态创建如下内容的sp: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并继续运行。它只运行第一
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
变量