Powershell无法附加SQL Server数据库

时间:2016-03-03 05:08:10

标签: sql-server powershell

作为自动化过程的一部分,我需要附加一些脏数据库。我说脏,因为它们来自磁盘卷的时间点快照。拍摄快照时,数据库仍在积极地写入。

有两个数据库。 databaseA的mdf大小为131GB。 databaseB的mdf大小为3.4GB。

我尝试了两种不同的方法来使用Powershell附加数据库。

第一个是使用Invoke-Sqlcmd,第二个是使用SQL SMO对象并调用AttachDatabase

两种方法对数据库B成功运行,但对于数据库A则失败。

错误消息我很糟糕......

  

使用“4”参数调用“AttachDatabase”的异常:“为服务器'DB01'附加数据库失败'。”
  在行:17 char:1
  + $ srv.AttachDatabase(“databaseA”,$ dbfiles,“sa”,“None”)
  + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
  + CategoryInfo:NotSpecified:(:) [],ParentContainsErrorRecordException
  + FullyQualifiedErrorId:FailedOperationException

如果我进入SQL Server Management Studio而不是运行脚本,只需右键单击并以这种方式附加数据库,数据库将在大约20到30秒内无问题地附加。

我很困惑为什么Management Studio可以运行而我的脚本没有。令人讨厌的是脚本没有提供更好的错误信息。

是否有其他人遇到过这个问题,或者知道如何才能获得更好的错误反馈?

1 个答案:

答案 0 :(得分:0)

原来这是一个纯粹的超时问题。

当我使用-Timeout值为0运行Invoke-Sqlcmd时,事情开始起作用了。

我不确定为什么Management Studio可以在大约5分钟内附加数据库,但使用Invoke-Sqlcmd需要更长时间。尽管如此,它还是有效的。