使用系统表存储标记

       有这样一个场景,要把一段SQL Script发布到多个产品服务器,并且必须保证这段Script可以重复执行。最自然的想法当然是在数据库中放置一个标记,根据这个标记来决定判断是否 是首次执行。问题在于把这个标记放到哪里,在应用数据库某个表中新增记录?显然不是个好主意!我想到的比较好的方法是,借用sysproperties 来帮我们存储这个标记。见下面的范例:

SET XACT_ABORT ON
GO

IF NOT EXISTS(SELECT * FROM ::fn_listextendedproperty ('FLAG', 'USER', 'dbo', 'TABLE', '
TABLE_NAME', default, default))
BEGIN
    BEGIN TRAN
         Sql statements
        ....      
        EXEC sp_addextendedproperty 'FLAG', 'Y', 'USER', dbo, 'TABLE',
TABLE_NAME        --Add done flag
    COMMIT TRAN
END
SET XACT_ABORT OFF

关于sysproperties::fn_listextendedproperty的说明可以参考SQLServer的在线文档。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值