0

我正在使用 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 

在此之后我的脚本工作正常。

问题 :

  1. 为什么invoke_sqlcmd 不关闭会话?
  2. 我可以从我的 powershell 脚本执行 alter database .... 命令吗?

谢谢

4

0 回答 0