2016-03-03 93 views
0

作爲我自動化過程的一部分,我需要附加一些髒數據庫。我說髒,因爲它們來自磁盤卷的時間點快照。當拍攝快照時,數據庫仍在積極撰寫。Powershell無法附加SQL Server數據庫

有兩個數據庫。 databaseA的mdf大小爲131GB。 databaseB的mdf大小是3.4GB。

我試過兩種不同的方法來將數據庫與Powershell連接起來。

第一個使用Invoke-Sqlcmd,第二個使用SQL SMO對象並調用AttachDatabase

這兩種方法都可以成功地運行數據庫B,但數據庫A失敗。

該錯誤消息我得到很爛......

異常調用 「AttachDatabase」 和 「4」 的說法(S): 「連接數據庫失敗,服務器 'DB01'」
在行:17焦炭:1
+ $ srv.AttachDatabase( 「databaseA」,$ DBFILES, 「SA」, 「無」)
+ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo:NotSpecified:(:) [],ParentContainsErrorRecordException
+ FullyQualifiedErrorId:FailedOperationE xception

如果我進入SQL Server Management Studio而不是運行腳本,只需右鍵單擊並以這種方式附加數據庫,數據庫將在20到30秒內無問題地附加。

我很困惑,爲什麼管理工作室工作,我的腳本沒有。這也令人討厭,腳本沒有提供更好的錯誤信息。

有沒有其他人遇到過這個問題或有任何想法如何我可以得到一些更好的錯誤反饋?

+0

您的powershell命令是否僅針對這些dbs或任何/所有dbs失敗?我建議重試你的命令並捕獲一個分析器跟蹤來查看它是否連接到服務器,以及正在執行什麼值。如果您發佈精確的PowerShell命令,它也會有所幫助。 – Greg

+0

這只是失敗的大事件。 – wimnat

+0

好的,當你運行profiler時你發現了什麼? – Greg

回答

0

原來是一個純粹的超時問題。

當我運行帶有-Timeout值爲0的Invoke-Sqlcmd的東西開始工作。

我不確定爲什麼Management Studio可以在大約5分鐘內連接數據庫,但使用Invoke-Sqlcmd時需要很多時間。儘管如此,它的工作。

相關問題