【发布时间】:2013-03-05 10:01:35
【问题描述】:
我一直在创建一些强大的 shell 脚本,我主要使用 Invoke-Sqlcmd 作为查询数据库或输入 .sql 文件的一种方式,但我在包含访问和终止进程方面遇到了一些麻烦。
我一直在使用 SMO 来杀死进程
$SQlSvr1 = New-Object Microsoft.SqlServer.Management.Smo.Server $serverInstance
$SQlSvr1.KillAllprocesses($databaseMain)
然后使用 Invoke-Sqlcmd 运行我的进程,一切运行良好,直到我开始收到诸如
之类的错误A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
如果我没有杀死它返回的进程
无法获得独占访问权限,因为数据库正在使用中。
所以我的问题是,重新生成或保持稳定连接的最佳过程是什么?每次我使用调用时都重新排队。
有问题的脚本首先备份我的数据库,使用 try/catch 中的补丁脚本运行和更新,如果出现错误,脚本将在 catch 中备份,所有操作都使用 Invoke-Sqlcmd,除了 kill 进程。
【问题讨论】:
标签: powershell smo sqlconnection sqlcmd