|
前端時間給別人做遷移數據庫時候,遇到一些問題.大致是,如果備份的數據庫存在EXTERNAL_ACCESS 和UNSAFE的程序集,那么在還原的時候程序集會出現一些奇怪的錯誤:
消息 10314,級別 16,狀態 11,第 1 行
在嘗試加載程序集 ID 65536 時 Microsoft .NET Framework 出錯。服務器可能資源不足,或者不信任該程序集,因為它的 PERMISSION_SET 設置為 EXTERNAL_ACCESS 或 UNSAFE。請重新運行查詢,或檢查有關的文檔了解如何解決程序集信任問題。有關此錯誤的詳細信息:
System.IO.FileLoadException: 未能加載文件或程序集“testclr, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。異常來自 HRESULT:0x80FC80F1 System.IO.FileLoadException: 在 System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
在 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark stackMark, Boolean forIntrospection)
在 System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark stackMark, Boolean forIntrospection)
在 System.Reflection.Assembly.Load(String assemblyString)
至于產生的原因大概是,在備份數據庫的時候,在機器A,那么數據庫的擁有者是A/Administrator(如果用windows登錄創建),那么但是我們還原到服務器B,那么擁有者可能是B/Administrator,那么SQL CLR的安全性會認為該程序集不可靠.
例如:
我首先創建一個簡單的SQL CLR 存儲過程:
using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;public partial class StoredProcedures{ [Microsoft.SqlServer.Server.SqlProcedure] public static void Test() { // 在此處放置代碼 }};
it知識庫:SQL Server Assembly (SQL CLR) 還原數據庫后的問題,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。