• 相关软件
    >sp_getbindtoken 创建者:webmaster 更新时间:2006-02-16 15:51

    返回事务的唯一标识符。 该唯一标识符被引用为绑定令牌。sp_getbindtoken 返回用于在客户端之间共享事务的字符串表示法。



    语法


    sp_getbindtoken [@out_token =] 'return_value' OUTPUT [, @for_xp_flag]



    参数


    [@out_token =] 'return_value'



    是用于共享事务的令牌。return_value 的数据类型为 varchar(255),没有默认值。



    @for_xp_flag



    常量。如果等于 1,则创建一个绑定令牌,该令牌可被传递给扩展存储过程以回调服务器。



    返回代码值




    结果集




    注释


    在 Microsoft SQL Server 2000 中,sp_getbindtoken 仅当在活动事务内部执行该存储过程时才返回有效令牌。 否则,SQL Server 将返回一个错误信息。例如:



    说明  在 SQL Server 7.0 中,即使在活动事务外部执行该存储过程,sp_getbindtoken 也返回有效令牌。下例工作于 SQL Server 7.0 环境中。



    /*open a database*/
    USE MYDB
    GO
    /*declare bind token; no active transaction*/
    DECLARE @bind_token varchar(255)
    /*return bind token*/
    EXECUTE sp_getbindtoken @bind_token OUTPUT
    /*get an error message*/
    Server: Msg 3921, Level 16, State 1, Procedure sp_getbindtoken, Line 4
    Cannot get a transaction token if there is no transaction active.
    Reissue the statement after a transaction has been started.


    sp_getbindtoken 用于在打开的事务内登记分布式事务连接时,SQL Server 2000 返回同一令牌。例如:



    USE MYDB
      DECLARE @bind_token varchar(255)
      BEGIN TRAN
        EXECUTE sp_getbindtoken @bind_token OUTPUT
        SELECT @bind_token AS Token
        BEGIN DISTRIBUTED TRAN
          EXECUTE sp_getbindtoken @bind_token OUTPUT
          SELECT @bind_token AS Token
    /*returns the same token*/
    Token
    -----
    PKb'gN5<9aGEedk_16>8U=5---/5G=--
    (1 row(s_) affected)

    Token
    -----
    PKb'gN5<9aGEedk_16>8U=5---/5G=--
    (1 row(s_) affected)


    绑定令牌可以与 sp_bindsession 一起使用,将新会话绑定到同一事务上。绑定令牌仅在每个 SQL Server 的本地机上有效且不能在多个 SQL Server 实例中共享。



    若要获得并传递绑定令牌,则必须在运行 sp_bindsession 之前运行 sp_getbindtoken,以共享同一锁空间。如果获得绑定令牌,则 sp_bindsession 可正确运行。



    说明  建议使用 srv_getbindtoken 开放式数据服务 API 来获得从扩展存储过程处使用的绑定令牌。



    权限


    执行权限默认授予 public 角色。



    示例


    A. 获得绑定令牌


    下面的示例获得绑定令牌并显示绑定令牌名称。



    DECLARE @bind_token varchar(255)
    BEGIN TRAN
    EXECUTE sp_getbindtoken @bind_token OUTPUT
    SELECT @bind_token AS Token


    下面是结果集:



    Token
    ----------------------------------------------------------
    \0]---5^PJK51bP<1F<-7U-]ANZ


    B. 使用 @for_xp_flag 参数


    下面的示例指定用于向服务器回叫的常量。



    DECLARE @bind_token varchar(255)
    BEGIN TRAN
    EXECUTE sp_getbindtoken @bind_token OUTPUT, 1
    SELECT @bind_token AS Token


    如果 @for_xp_flag 没有使用常量,将返回下列错误信息:



    Msg 214, Level 16, State 1, Server <server_name>, Procedure <procedure_name>, Line 5
    Cannot convert parameter @for_xp_flag to type constant expected by procedure.
    相关文章
    本页查看次数: