Sql 在存储过程中执行sp_addlinkedserver

Sql 在存储过程中执行sp_addlinkedserver,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有以下存储过程: CREATE Procedure [dbo].[sc_Server_Link] @ServerName varchar(255), @ServerSource varchar(255), @DatabaseName varchar(255), @UserName varchar(255), @UserPass varchar(255) AS BEGIN IF NOT EXISTS ( SELECT 1 FROM sys.syss

我有以下存储过程:

CREATE Procedure [dbo].[sc_Server_Link]
    @ServerName varchar(255),
    @ServerSource varchar(255),
    @DatabaseName varchar(255),
    @UserName varchar(255),
    @UserPass varchar(255)
AS
BEGIN
    IF NOT EXISTS ( SELECT 1 FROM sys.sysservers WHERE srvname = @ServerName )
    BEGIN
        EXEC sp_addlinkedserver
                @server = @ServerName,
                @srvproduct = '',
                @provider = 'sqlncli',
                @datasrc = @ServerSource,
                @location = '',
                @provstr = '',
                @catalog = @DatabaseName

        --Add credentials and options to this linked server
        IF NOT EXISTS ( SELECT 1 FROM sys.linked_logins WHERE remote_name = @UserName)
            EXEC sp_addlinkedsrvlogin
                @rmtsrvname = @ServerName,
                @useself = 'false',
                @rmtuser = @UserName,
                @rmtpassword = @UserPass

        --Set Options
        EXEC sp_serveroption @ServerName, 'rpc out', true;
    END
END
执行该过程可以很好地工作,但之后,每次我尝试执行事务时。。。事务正常,但我收到以下错误:

Msg 15002,16级,状态1,程序sp_addlinkedserver,第71行
无法在事务中执行过程“sys.sp_addlinkedserver”

Msg 15002,第16级,状态1,程序sp_addlinkedsrvlogin,第35行
无法在事务中执行过程“sys.sp_addlinkedserver”

Msg 15002,16级,状态1,程序sp_服务器选项,第37行
无法在事务中执行过程“sys.sp_addlinkedserver”

  • 我怎样才能阻止这些错误
  • 如何更正存储过程以避免再次发生这种情况

谢谢你的帮助

这个答案可能会有帮助:错误消息是否已经告诉您所有您需要知道的信息???即使我停止使用此sp。。。每次插入/更新/删除本地数据库时,我都会遇到这3个错误。如果会话仍处于打开状态,请关闭事务。否则,请关闭会话。只是一个猜测。如果这没有帮助(或者您不知道如何),请重新启动SQL Server数据库引擎(如何)