我正在使用C#進行wix中的自定義操作,該工作正常。自定義操作本質上只是根據傳遞給方法的參數來運行SQL腳本。針對無效轉換拋出的SqlException
一個我運行腳本來填充我的數據表中的一個,如果有什麼也沒有,看起來是這樣的:
IF (SELECT COUNT(*) FROM [dbo].[Table]) = 0
BEGIN
INSERT [dbo].[Table] ([ItemId], [Description]) VALUES (N'<<GUID>>', NULL)
INSERT [dbo].[Table] ([ItemId], [Description]) VALUES (N'<<GUID>>', N'The 2nd Item')
...
END
在這種情況下<<GUID>>
是一樣的東西e00104e4-7e5f-4563-9356-30732d5ca57e
- 這些腳本是使用相應版本的Management Studio從SQL Server 2008 R2的數據導出生成的。
當我在Management Studio中運行此腳本時,它工作正常,並且如預期的那樣,如果沒有任何內容已經存在,則會插入所有數據。通過C#代碼運行它,但是,我也得到了以下異常:
Conversion failed when converting from a character string to uniqueidentifier
如表中的唯一uniqueidentifier
列,這已經是ITEMID列,但我想不通爲什麼這種情況正在發生,或者如何解決這個問題,最後一小時在線搜索也沒有給出任何結果。
編輯
我要補充一點,這些SQL查詢都位於一個文件,它的C#代碼,然後讀取作爲SQL查詢的內容。如果我能幫上忙,我並不想修改它們,因爲它增加了一個不需要的額外步驟。
你能否通過Profiler工具檢查實際傳遞給數據庫的內容?請粘貼它,所以我們可以進一步調查 – Dave
您需要檢查用於在C#代碼中存儲GUID數據的變量中存在哪些值。該變量是否包含正確的值?並檢查相同的值是通過sql中的參數傳遞給查詢的。 –