今天將一個原本在SQL 2012上使用的CLR部署到SQL 2005 資料庫,結果出現了以下的錯誤
(161,1): SQL72014: .Net SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 組件 'SQLCLR' 的 CREATE ASSEMBLY 失敗,因為組件 'SQLCLR' 驗證失敗。請檢查參考的組件是否為最新的,而且受信任 (針對 external_access 或不安全) 於資料庫中執行。接著將會出現 CLR 驗證器的訊息 (如果有的話)
(161,0): SQL72045: Script execution error. The executed script:
參考這篇KB
http://msdn.microsoft.com/zh-tw/library/vstudio/dahcx0ww%28v=vs.100%29.aspx
SQL Server 2005 和 SQL Server 2008 僅支援使用 .NET Framework 2.0、3.0 或 3.5 版所建置的 SQL Server 專案。 如果您嘗試部署SQL Server專案,SQL Server 2005或SQL Server 2008,將顯示錯誤消息:Deploy
error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16,
State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed
because assembly 'AssemblyName' failed verification. Check if the
referenced assemblies are up-to-date and trusted (for external_access or
unsafe) to execute in the database(在進行校驗是您要部署的程式集的名稱)。
所以要將部署時的Target Framework改為 3.5的版本再部署即OK。
不好意思請問一下,你的Target Framework 3.5是組件的版本還是SQL Server Clr的版本,假如程式碼有用到Framework 4.0時要如何升級SQL Server Clr版本也是4.0呢
回覆刪除