禁止为链接服务器推广分布式事务的安全隐患

Yar*_*lav 8 sql-server-2008-r2 linked-server distributed-transactions

我有一个链接服务器,我需要运行以下语句:

INSERT INTO...EXEC linkedserver.sp @parameter
Run Code Online (Sandbox Code Playgroud)

两台服务器都是 SQL Server 2008R2 SP1。一旦我运行它,我就会收到此错误:

消息 7391,级别 16,状态 2,第 6 行 由于链接服务器“MY.LINKED.SERVER”的 OLE DB 提供程序“SQLNCLI10”无法开始分布式事务,因此无法执行该操作。

搜索错误后,我看到很多建议运行:

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

我应该注意此操作是否有任何安全隐患?

其他选项是在主服务器上使用链接服务器对象的高级属性:

在此处输入图片说明

Kin*_*hah 10

当您在INSERT INTO...EXEC本地执行时,sql server 会遵守它,但是当您使用 Linked server 时,sql server 必须启动本地事务并提升/升级为分布式事务。

来自 -->如何在 SQL Server 2008 中创建自治事务

远程进程事务提升”是 SQL Server 2008 上的一个新选项,它允许您控制是否要在分布式事务中登记远程存储过程调用。当此选项关闭 (FALSE) 时,本地事务将不会提升为分布式事务。这就是我们如何能够以“自主事务”的方式分离外部和内部事务。

据我所知,没有安全隐患。

此外,有关详细信息,请参阅sp_serveroption