SQL Server绑定连接的类型


  本文标签:SQL Server绑定连接

  SQL Server绑定连接是为了降低SQL Server锁冲突,下面就为您详细介绍SQL Server绑定连接的类型,如果您感兴趣的话,不妨一看  。

  SQL Server绑定连接的类型:

  在SQL Server数据库中,提供了两种SQL Server绑定连接的类型,分别为本地绑定连接和分布式绑定连接  。本地绑定连接允许绑定连接共享单个服务器上的单个事务的事务空 间  。而分布式绑定连接则允许绑定连接共享分布式事务处理协调器提交或者回滚整个事务之前,共享跨越两个或者多个服务器的同一事务  。在一些大型的数据库应用 中,往往会部署多个SQL Server服务器,搭建一个分布式事务处理环境,来提高数据库的访问性能  。此时,就需要用到分布式绑定连接才可以起到应有的效果  。

  不过分布式绑定连接的实现原理跟本地绑定连接的实现原理还是有点区别  。本地绑定连接中,其采用的是字符串绑定令牌的方式;而在分布式绑定连接 中,不是用字符串绑定令牌,而是用分布式事务标识符  。其他技术,如令牌的传递技术等等,两者没有本质的区别  。

  不过索性的是,作为数据库管理员,往往不需要了解其后面的实现原理,而只要懂得应用即可  。所以,在绑定连接的应用中,笔者有一个建议  。这个建议 是笔者在日常工作中总结出来的,并不代表微软SQLServer数据库的官方意见  。大家若对这个建议有什么意见的话,可以说出来供大家讨论  。

  这个建议就是不要把绑定连接搞的太过于复杂  。如不要在同一个绑定连接中加入太多的连接;或者在同一个绑定连接中所涉及的连接,最好都来自同一个 应用程序进程等等  。通过这些方法可以有效的降低绑定连接的复杂性  。从而在提高并发性处理数据的同时,也不会对数据的一致性带来很大的不利影响  。

  另外一点,就是数据库管理员可以放心的是,绑定连接技术基本上不会对数据库原有的性能产生负面的影响  。由于其只是对数据库连接进行捆绑,所以即 使是采用了捆绑连接,也不会给数据库带来额外的开销  。

  --绑定连接的使用示例(在查询分析器中进行)

  --首先创建一个测试表
create   table   tb(a   int)
go

  --不使用绑定连接的测试(a窗口)
begin   tran
insert   tb   values(100)

  --开始一个新窗口(b窗口),写上如下代码并执行
begin   tran
update   tb   set   a=50

  --此时的执行结果是产生的阻塞,b窗口的处理要等a窗口的处理完成后才能进行下一步
--------------------------------------------------------------------------

  --使用绑定连接的测试(a窗口)
declare   @bind_token   varchar(255)
begin   tran
execute   sp_getbindtoken   @bind_token   output
print   @bind_token --记下这个结果,后面要用到
insert   tb   values(100)

  --开始一个新窗口(b窗口),写上如下代码并执行(不会产生阻塞)
EXEC   sp_bindsession   Q[Bi.QbB\AC8\:d9kdY\UM5----;G]--      --这个是值是上面要求记下的结果
begin   tran
update   tb   set   a=50
rollback   tran

  --回a窗口执行
select   *   from   tb

  /*--结果:

  此会话中的活动事务已由另外一个会话提交或终止  。

  (所影响的行数为   0   行)
--*/
go

  --最后删除测试环境
drop   table   tb