gpt4 book ai didi

sql - 在存储过程事务中执行 addlinkedServer 错误

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

我正在尝试在 T-SQL 的存储过程中执行链接服务器。

但是,我收到错误

The procedure 'sys.sp_addlinkedserver' cannot be executed within a transaction.

这似乎很明显。但之后我需要使用动态 SQL 执行 2 个查询,但是我尝试在执行查询之前添加链接服务器,所以不确定为什么会出现错误。

这是代码。

  @sqlDBName VARCHAR(MAX),
@sqlServerName VARCHAR(MAX)
AS

EXEC sp_addlinkedserver
@sqlServerName,
N'SQL Server';


DECLARE @impUpd VARCHAR(MAX)

SET @impUpd = '

UPDATE Customers SET NAME = 'Name'
FROM Customers c
JOIN ['+@sqlServerName +'].['+@sqlDBName +'].[dbo].[CUSTOMERS2]
..etc


exec(@impUpd)

任何帮助都会很好。

谢谢

最佳答案

我找到了解决问题的方法。它与 SQL 无关,它与从 C# 和 Entity Freamework 执行存储过程有关。

当我用以下命令调用 SP 时发生错误

m_Context.Database.ExecuteSqlCommand("usp_storedprocedureName");

并且它适用于

m_Context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction,"usp_storedprocedureName");

如果不研究额外参数的作用,我无法提供它起作用的原因(枚举所说的内容不明显!),但是这里提供了更多信息。

Stored procedure working when calling exec sp and throws with EF6 on SQL Azure

关于sql - 在存储过程事务中执行 addlinkedServer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23733671/

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