我一直在创建一些强大的 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 进程。