我正在使用 Powershell 脚本来动态恢复数据库(sql server 2012)。
set-location "SQLSERVER:\sql\$host_name\$inst\databases\.$db_target"
$db = Invoke-Sqlcmd -Query "select type_desc,name,physical_name from sys.master_files where database_id=db_id(N'$db_target') order by type_desc desc "
当我执行脚本时,我收到以下错误消息:
DBMS MSG - ODBC 返回代码 <-1>、SQL 状态 <37000>、SQL 消息 <3101><[Microsoft][SQL Server Native Client 10.0][SQL Server]无法获得独占访问权限,因为正在使用数据库。 >。
然后我使用 SSMS 使数据库脱机
alter database [db_target] set offline with rollback immediate
在此之后我的脚本工作正常。
问题 :
- 为什么invoke_sqlcmd 不关闭会话?
- 我可以从我的 powershell 脚本执行 alter database .... 命令吗?
谢谢