我的设置 - 一台服务器包含两个SQL Server 2000实例INSTANCE1和INSTANCE2。每个实例都有1个DB,DBprod和DBstag。SQL Server 2000独占锁定
我有一种情况,我需要为几个客户准备发票,所以我想在表格上放置一个排它锁,同时我从INSTANCE1.DBprod.LastInvoiceNumber获取一个发票号码到INSTANCE2.DBstag,执行soem计算,准备发票,然后将发票(标题和明细)插入到INSTANCE1.DBprod中,然后更新INSTANCE1.DBprod.LastInvoiceNumber,为下一个客户重复,然后在完成所有客户后释放锁。
开始反式INV
独占锁定 INSTANCE1.DBprod.LastInvoiceNumber
开放客户光标
从 INSTANCE1.DBprod.LastInvoiceNumber下次提取从客户
获得发票号码
制备发票
插入发票INSTANCE1.DBprod
更新 INSTANCE1.DBprod.LastInvoiceNumber (由1增量)
从顾客下一个取指令(准备下一个 客户发票)
靠近客户光标
commit trans inv
释放锁ON INSTANCE1.DBprod.LastInvoiceNumber
这会是我的解决方案
SET事务隔离级别 SERIALIZABLE
有使用INSTANCE1.DBprod的会计应用.LastInvoiceNumber这就是为什么我想完全锁定表格,直到我完成发布所有发票。
我正在通过存储过程准备发票。我的意图是阻止所有应用程序使用INSTANCE1.DBprod.LastInvoiceNumber,直到我完成发布所有发票为止......我会研究您的建议。 – 2011-04-15 18:53:32