[ERROR]SQL 2008R2 SSMS建立Script時,發生「System.InvalidOperationException: 已經開啟一個與這個 Command 相關的 DataReader,必須先將它關閉。]

透過SQL 2008R2 SSMS來產生Script時,居然發生「System.InvalidOperationException: 已經開啟一個與這個 Command 相關的 DataReader,必須先將它關閉。]錯誤! 要如何解決呢?

今天同事問說他使用SQL 2008 R2 SSMS來建立Script時,選取Store Procedure來產生時,會發生錯誤。儲存錯誤的報表資訊如下,

從 'xxxDB' 取得物件清單。失敗。
System.Reflection.TargetInvocationException: 引動過程的目標傳回例外狀況。
---> System.InvalidOperationException: 已經開啟一個與這個 Command 相關的 DataReader,必須先將它關閉。
於 System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)
.....省略.....
於 Microsoft.SqlServer.Management.Smo.PropertyCollection.GetPropertyObject(Int32 index)
於 Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetPropValue(String propName)
於 Microsoft.SqlServer.Management.Smo.ScriptNameObjectBase.CheckTextModeSupport()
於 Microsoft.SqlServer.Management.Smo.ScriptNameObjectBase.GetTextMode()
於 Microsoft.SqlServer.Management.Smo.StoredProcedure.get_Parameters()
--- 內部例外狀況堆疊追蹤的結尾 ---
於 Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e)
於 System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
於 System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

然而在我的SQL 2014 CTP1 上測試,並不會有這種狀況!

於是請他安裝 Microsoft® SQL Server® 2008 R2 Service Pack 2 ,試試看。

後來同事回報,問題就解決了。Smile

有類似狀況的朋友,可以參考看看哦!

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^