gpt4 book ai didi

sql-server - 使用Powershell脱机设置数据库

转载 作者:行者123 更新时间:2023-12-03 00:13:08 24 4
gpt4 key购买 nike

我正在使用Powershell开发自动数据库还原脚本,并尝试对其进行强化。从高层次来看,它是这样的:

$s = new-object microsoft.sqlserver.management.smo.server '.';
$db = $s.Databases['myDb'];

$db.SetOffline();
# start restore here

这里的问题是,如果数据库中有任何连接, SetOffline()命令将被阻止。我知道Server对象上有 KillDatabase()KillAllProcesses()方法,但是前者使我不得不再次将日志文件清零,而后者在繁忙的服务器上出现了竞争情况。我正在寻找的是SMO等效于 alter database [myDb] set offline with rollback immediate;

这样的事情存在吗?我可以求助于 ExecuteNonQuery()恶作剧,但似乎应该有一种更优雅的方法。

最佳答案

那么,如果您先在防火墙中阻止对SQL的访问,然后再阻止KillAllProcesses,该怎么办?
这样一来,任何东西都将无法重新连接,也就不会出现竞争状况。

New-NetFirewallRule -DisplayName BlockSQL -Service MSSQL -Direction Inbound -Action Block -Enabled True
当然,您将需要在本地调用SetOffline方法,因为MSSQL被阻止通过网络进行任何通信。
将数据库脱机后,只需删除防火墙规则...
Remove-NetFirewallRule -DisplayName BlockSQL

关于sql-server - 使用Powershell脱机设置数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44233726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com