如何在不创建分布式事务的情况下从远程存储过程插入表?

Gui*_*rez 7 sql-server-2005 sql-server stored-procedures remote distributed-transactions

如何在不创建分布式事务的情况下从远程存储过程插入本地表?我想在远程服务器上运行一个存储过程,并将输出用作插入本地表的源。

And*_*mar 12

对于SQL Server 2008 及更高版本,您可以禁用链接服务器的促销。它位于“高级”属性选项卡上,或者您可以像这样编写脚本:

EXEC master.dbo.sp_serveroption 
    @server=N'YourLinkedServer', 
    @optname=N'remote proc transaction promotion', 
    @optvalue=N'false'
Run Code Online (Sandbox Code Playgroud)


对于SQL Server 2005,您可以添加 OLE DB 链接服务器。这允许您在连接字符串中输入详细选项。

下面是如何配置这样一个链接服务器。单击Server Objects,然后右键单击Linked Servers并选择New Linked Server...。配置服务器如下:

  • 标签“常规”:
    • 链接服务器:输入链接服务器的名称
    • 检查其他数据源
    • 选择提供程序Microsoft OLE DB Provider for SQL Server
    • 产品名称:在此处输入任何内容,例如 ZzzZZzzzz
    • 输入提供者字符串
      Data Source=<server or ip>,1433;Network Library=DBMSSOCN;Initial Catalog=<database name>;Enlist=false;
  • 标签“安全”:
    • 选择Be made using this security context
    • 输入用户名和密码

Enlist=false连接字符串中应防止分布式事务。