• 环回链接服务器


    USE [master]
    GO
    --查看测试环境
    SELECT @@SERVERNAME,@@VERSION
    
    /*
    Roy-PC	Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)   Apr  2 2010 15:48:46   Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 
    */
    
    --创建链接服务器ROY_LNK
    EXEC master.dbo.sp_addlinkedserver @server = N'ROY_LNK', @srvproduct=N'ROY_LNK', @provider=N'SQLOLEDB', @datasrc=N'XXX.XXX.X.XXX'--也可用SQLNCLI\SQLOLEDB
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'ROY_LNK', @locallogin = NULL , @useself = N'False', @rmtuser = N'sa', @rmtpassword = N'wuxi'
    GO
    USE Test
    GO 
    IF OBJECT_ID('T') IS NULL
    	SELECT 1 AS ID INTO T
    go
    SELECT 
    go
    IF OBJECT_ID('P1','P') IS NOT NULL
    	DROP PROCEDURE P1
    go
    CREATE PROCEDURE P1
    AS
    SELECT * FROM [ROY_LNK].test.dbo.T
    go
    
    IF OBJECT_ID('P2','P') IS NOT NULL
    	DROP PROCEDURE P2
    GO
    CREATE PROCEDURE P2
    AS
    SET XACT_ABORT ON;
    BEGIN TRAN
    	EXEC [ROY_LNK].test.dbo.P1
    COMMIT TRAN
    GO
    --第1次运行出现
    
    exec P2
    
    --提示以下错误时
    /*
    消息 7411,级别 16,状态 1,过程 P2,第 5 行
    未将服务器 'ROY_LNK' 配置为用于 RPC。
    */
    
    --开启RPC
    
    EXEC master.dbo.sp_serveroption @server=N'ROY_LNK', @optname=N'rpc out', @optvalue=N'true'
    
    GO
    --第2次运行(环回链接服务器)
    exec P2
    /*
    消息 3910,级别 16,状态 2,第 1 行
    其他会话正在使用事务的上下文。
    
    */
    
    --解决方法
    
    GO
    ALTER PROCEDURE P1
    AS
    SELECT * FROM test.dbo.T
    GO
    
    exec P2 
    /*
    ID
    1
    */
    DROP PROC p1,p2
    DROP TABLE T



  • 相关阅读:
    MyBatis-Plus使用(4)-集成SpringBoot
    MyBatis-Plus使用(3)-条件构造器
    Logback日志格式优化,解决输出***@2b193f2d问题
    MyBatis-Plus使用(2)-CRUD接口
    数组
    switch结构
    if的使用
    new函数
    指针
    常量和iota
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463059.html
Copyright © 2020-2023  润新知