gpt4 book ai didi

sql-server-2005 - 如何使用跨多个服务器链接的过程的事务?

转载 作者:行者123 更新时间:2023-12-04 07:13:13 26 4
gpt4 key购买 nike

我正在尝试测试我们的一个供应商向我们提出的用于访问他们的产品数据库的命题,它涉及跨多个服务器的查询和事务。我以前从来没有直接在数据库上做过这个,坦率地说,我一无所知,所以我试图模拟一个证明这至少在概念上有效的证据。

我有两台 SQL Server 2005 服务器。为了争论,我们称它们为 Server1 和 Server2 [保持你的掌声] 每个都包含一个虚拟数据库。 Server1 上的虚拟数据库称为 Source,Server2 上的虚拟数据库称为 Destination,只是为了简单起见。每个数据库分别保存一个名为 Input 和 Output 的表,因此该结构准解释如下:

  • Server1.Source.dbo.Input
  • Server2.Destination.dbo.输出

  • 我在 Server2 上有一个名为 WriteDataToOutput 的存储过程,它接收单个 Varchar 参数并将其内容写入输出表。

    现在棘手的问题开始了:
  • 我想在 Server1.Source 上创建一个存储过程,它调用在 Server2 上定义的 WriteDataToOutput 存储过程,这看起来很简单。
  • 我希望此调用成为事务的一部分,以便如果调用它的过程失败,则回滚整个事务。

  • 至此,我不知道该做什么了。谁能指出我正确的方向?我在同一台服务器上的两个不同数据库上试过这个,它工作得很好,让我假设它可以在不同的服务器上工作,问题是,我该怎么做这样的事情?我从哪里开始?

    最佳答案

    正如其他人所指出的,我同意链接服务器是最好的方法。

    这是我第一次处理链接服务器时吸引我的一些建议:

  • 如果链接服务器是实例,请确保将名称括起来。例如 [服务器名称\实例名称]。
  • 为链接服务器中的表或 View 使用别名,否则您将收到“无法绑定(bind)多部分标识符”错误。有 4 部分命名约定的限制。例如 SERVER.DATABASE.dbo.TABLE.FIELD 有五个部分,会报错。但是,SELECT linked.FieldName FROM SERVER.DATABASE.dbo.TABLE AS linked可以正常工作
  • 关于sql-server-2005 - 如何使用跨多个服务器链接的过程的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/448401/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com