我需要您的帮助来解决我在进行大型更新时遇到的问题。嗨,我们想为开发人员/测试人员创建一个服务器,并且我们希望从生产中获得一个副本,所以我们想用我执行更新时生成的随机 NSS 来混淆 NSS,所以我创建了一个执行此操作的函数过程。这是它的更新:
UPDATE CUSTOMERS SET
NAME = 'John',
LAST NAME ='Doe',
NSS = RandomNSS
plan '(i_scan PK_CUSTOMERS CUSTOMERS)'
更新工作正常,除了表的长度为 900 万,因此我暂停了日志或您没有锁定的消息,因此该过程永远不会完成,所以我尝试实现以下内容:
SET ROWCOUNT 10000
WHILE (1 = 1)
BEGIN
BEGIN TRANSACTION
UPDATE CUSTOMERS SET
NAME = 'John',
LAST NAME ='Doe',
NSS = RandomNSS
plan '(i_scan PK_CUSTOMERS CUSTOMERS)'
IF @@ROWCOUNT = 0
BEGIN
COMMIT TRANSACTION
BREAK
END
COMMIT TRANSACTION
END
SET ROWCOUNT 0
但这并没有解决问题,因为我没有 where 子句,所以即使所有客户的名字都是 John Doe,更新也永远不会完成,所以你能帮我创建一个查询来帮助我完成这个过程吗?