在存储过程

时间:2015-12-16 16:06:48

标签: 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.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

执行程序工作正常但之后,每次我尝试进行交易时...交易有效,但我收到以下错误:

  

消息15002,级别16,状态1,过程sp_addlinkedserver,第71行
  程序' sys.sp_addlinkedserver'无法在交易中执行。

     

消息15002,级别16,状态1,过程sp_addlinkedsrvlogin,第35行   程序' sys.sp_addlinkedserver'无法在交易中执行。

     

Msg 15002,Level 16,State 1,Procedure sp_serveroption,Line 37
  程序' sys.sp_addlinkedserver'无法在交易中执行。

  • 如何阻止这些错误?
  • 如何更正我的存储过程,以免再次发生?

感谢您的帮助!

0 个答案:

没有答案