首页 > 解决方案 > 使用powershell——如何防止SQL访问同一条记录

问题描述

我想运行多个 powershell 实例来从 Exchange 收集数据。在 powershell 中,我使用 invoke-sqlcmd 从 powershell 运行各种 SQL 命令。

SELECT TOP 1 SmtpAddress FROM [MMC].[dbo].[EnabledAccounts]
where [location] = '$Location' and Script1 = 'Done' and (Script2 = '' or 
Script2 is null)

运行多个脚本时,我看到两个脚本都访问同一记录。我知道有一种方法可以更新记录,锁定它,但不知道如何写出来。TIA:-)

标签: sqlpowershell

解决方案


数据库管理系统(我假设是 SQL Server)将为您处理争用。这意味着,如果您有两个会话尝试更新同一组记录,SQL Server 将阻止一个会话,而另一个会话完成。你不需要做任何事情来明确地做到这一点。也就是说,如果您将多个更新作为一个单元应用,那么在事务中运行更新是个好主意;隐式事务中发生单个更改。以下线程更多地讨论了使用Invoke-SqlCmd.

多个 Invoke-SqlCmd 和 Sql Server 事务


推荐阅读