2011-12-29 61 views
0

我正在使用用戶定義的表類型傳入我的存儲過程。 我不得不原因更改表類型添加一個額外的列,現在我得到的錯誤:鍵入表的SQL錯誤

The parameter "@MyParam" is not the same type as the type it was created with. Drop and recreate the module using a two-part name for the type, or use sp_refreshsqlmodule to refresh its parameters metadata.

呼籲從我的.NET代碼PROC時。 我加入參數值的方式,以我的命令,像這樣:

var param = _command.Parameters.AddWithValue("@MyParam" , myTypedDataTable) 
param.SqlDbType = SqlDbType.Structured; 

其中myTypedDataTable已更新爲包含新列。

我已經嘗試刪除並重新創建被調用的存儲過程,以及刪除和重新創建用戶定義表。我沒有(感謝谷歌)試圖在我的存儲過程和用戶​​定義表上使用sys.sp_refreshsqlmodule(它沒有工作,但在用戶定義表上,給我的錯誤:「找不到對象」[myUserDefinedTable ]',或者你沒有權限。「,我beleieve這可能是由於sys.sp_refreshsqlmodule無法在用戶定義的表上工作?)

我想我可能在這裏缺少一些基本的東西,但看不到什麼?

回答

1

我已經發現的錯誤。還有另一個存儲過程依賴於用戶定義的表,需要刪除和重新創建。我很驚訝,這是錯過了,因爲當我試圖放棄用戶定義表第一次,它並沒有讓我像上面提到的SP引用它(我不得不放棄SP去除依賴,然後放下用戶定義表,然後重新創建它們),但它沒有抱怨新發現的SP的依賴關係?

0

試圖指定TypeName的參數:

param.TypeName = "dbo.YourTableDefinition"; 
+0

對不起@Andomar,我應該提到我已經這麼做了。謝謝 – Ben 2011-12-29 22:59:18

+0

好吧!你可以發佈'myTypedDataTable'的定義,以及它在SQL中定義的方式嗎? – Andomar 2011-12-29 23:02:02