我运行单个PowerShell脚本的多个实例,该脚本监视共享文件夹中的新JSON文件,然后将这些JSON文件上传到Azure SQL数据库以转换为表格数据。我运行脚本的多个实例,因此可以有冗余和更多的带宽来上传文件,因为共享文件夹中通常需要上传几十个JSON文件。
我的问题是,有时脚本的一个实例将开始运行ExecuteNonQuery()
类中的System.Data.SqlClient.SqlCommand
方法,并且该脚本只是挂起。这通常只会导致脚本的一个实例挂起,但有时会冻结正在运行的脚本的一个或多个其他实例。关闭有问题的实例后,其他所有内容将再次正常运行。
昨天我还注意到,一个完全不相关的PowerShell脚本(它也使用System.Data.SqlClient.SqlCommand
类)在另一个脚本挂起时启动,并且也冻结了,直到关闭第一个脚本窗口。
我的问题是,如何调查和解决此问题?我假设PowerShell以某种方式在脚本之间共享资源,如果一个脚本锁定了这些资源,那么所有其他脚本都不走运。有没有解决的办法,或者在发生这种情况时可以使用的编程最佳实践?