我最近加入了一個團隊,他們使用JSON序列化將參數數組傳遞給SQL Server存儲過程,然後在這些存儲過程中進行反序列化並提取所需的值,即每個存儲過程都有一個@Parameters '類型VARCHAR(MAX)的參數。創建和執行命令的框架用C#編寫,並使用標準.NET類型(SqlCommand,SQlParameter)等。JSON序列化和.NET SQL參數
看起來,當序列化內容的長度大於存儲過程未正確執行,但沒有例外。似乎沒有發生。運行SQL事件探查器我發現沒有嘗試在SQL Server中執行存儲過程。
例如: 在一種情況下,只有30個實例不超過8個屬性被序列化。序列化成功並將值分配給SqlCommand的參數集合中的sql參數(只有一個參數)。該命令被執行但沒有任何反應。如果某種類型的出現次數較少,則成功。當它不成功時,不會引發異常。
使用: SQL Server 2008 C#.NET 4.0 由Newtonsoft提供的JSON序列化。 代碼中的SqlParameter被創建爲varchar max。 客戶端服務器架構 - 沒有中間服務。
有誰知道JSON序列化值作爲sql參數傳遞給SqlCommand的限制,或者有什麼想法可能會導致這種行爲?
您能否提供樣本@Parameters值? – 2012-02-15 09:20:20
問題在於內容的長度,而不是正確形成的內容本身。我真的只是在詢問是否有人在將Json序列化值作爲sql參數傳遞時意識到了大小限制。 – Trev 2012-02-15 19:05:36