加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 一个事务中SQL Server中的备用同义词

发布时间:2021-01-18 23:22:11 所属栏目:MsSql教程 来源:网络整理
导读:我是Transact SQL编程的新手. 我创建了一个存储过程,它将删除并创建一个现有的同义词,以便它指向另一个表.存储过程包含2个参数: synonymName – 现有的同义词 nextTable – 要指向的表 这是代码片段: ...BEGIN TRAN SwitchTran SET @SqlCommand='drop synon

我是Transact SQL编程的新手.

我创建了一个存储过程,它将删除并创建一个现有的同义词,以便它指向另一个表.存储过程包含2个参数:

> synonymName – 现有的同义词
> nextTable – 要指向的表

这是代码片段:

...
BEGIN TRAN SwitchTran
   SET @SqlCommand='drop synonym ' + @synonymName
   EXEC sp_executesql @SqlCommand
   SET @SqlCommand='create synonym ' + @synonymName + ' for ' + @nextTable
   EXEC sp_executesql @SqlCommand
COMMIT SwitchTran
...

我们有一个应用程序可以定期使用同义词写入数据.

我的问题是,我是否会遇到同义词被删除的竞争条件,而应用程序尝试写入同义词?

如果以上是一个问题,有人可以给我解决方案的建议.

谢谢

解决方法

是的,你有一个竞争条件.

管理此方法的一种方法是在事务模式下在BEGIN TRAN之后使用sp_getapplock并根据需要捕获/处理返回状态.这将在字面上串行(在执行意义上,而不是隔离)调用者,因此在任何时候只执行一个SPID.

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读