【发布时间】:2010-10-01 16:40:53
【问题描述】:
我正在尝试测试我们的一个供应商为访问他们的产品数据库而向我们提出的命题,该命题涉及跨多个服务器的查询和事务。我以前从来没有直接在数据库上做过这个,坦率地说,我一无所知,所以我试图模拟一个证明,证明这至少在概念上是有效的。
我有两台 SQL Server 2005 服务器。为了争论,我们称它们为 Server1 和 Server2 [保持你的掌声] 每个都包含一个虚拟数据库。 Server1 上的虚拟数据库称为 Source,Server2 上的虚拟数据库称为 Destination,只是为了简单起见。每个数据库都有一个单独的表,分别称为 Input 和 Output,因此该结构准解释如下:
- Server1.Source.dbo.Input
- Server2.Destination.dbo.Output
我在 Server2 上有一个名为 WriteDataToOutput 的存储过程,它接收单个 Varchar 参数并将其内容写入输出表。
现在开始棘手了:
- 我想在 Server1.Source 上创建一个存储过程,它调用在 Server2 上定义的 WriteDataToOutput 存储过程,这似乎是一个简单的步骤。
- 我希望此调用成为事务的一部分,以便在调用它的过程失败时,回滚整个事务。
至此,我不知道该做什么了。谁能指出我正确的方向?我在同一台服务器上的两个不同数据库上试过这个,它工作得很好,让我假设它可以在不同的服务器上工作,问题是,我该怎么做这样的事情?我从哪里开始?
【问题讨论】:
标签: sql-server-2005 tsql transactions