断开与SMO的活动SQL连接

时间:2012-02-15 20:28:20

标签: sql-server powershell smo

有没有办法使用SMO断开所有活动用户与SQL数据库的连接,这样我就可以执行数据库恢复了?

与以下相关的问题类似,但未讨论SMO的使用。

When restoring a backup, how do I disconnect all active connections?

这个链接也是一个类似的问题,但仍然没有答案:

http://us.generation-nt.com/answer/smo-detach-fails-due-active-connection-help-122972951.html

2 个答案:

答案 0 :(得分:6)

您可以使用KillAllProcesses方法。

add-type -AssemblyName "Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$serverObject = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server -argumentList 'YourServerNameHere'
$serverObject.KillAllProcesses('YourDatabaseNameHere')
如果要检查,可以使用GetActiveDBConnectionCount方法。但是你可能想要等待几秒钟来回滚等等
$serverObject.GetActiveDBConnectionCount('YourDatabaseNameHere')

答案 1 :(得分:1)

断开所有活动用户的连接不是构建功能。您必须使用ExecuteNonQuery。我在这里找到了一个例子:http://www.techtalkz.com/microsoft-windows-powershell/132252-run-transact-sql-using-smo.html