|
前端時(shí)間給別人做遷移數(shù)據(jù)庫(kù)時(shí)候,遇到一些問(wèn)題.大致是,如果備份的數(shù)據(jù)庫(kù)存在EXTERNAL_ACCESS 和UNSAFE的程序集,那么在還原的時(shí)候程序集會(huì)出現(xiàn)一些奇怪的錯(cuò)誤:
消息 10314,級(jí)別 16,狀態(tài) 11,第 1 行
在嘗試加載程序集 ID 65536 時(shí) Microsoft .NET Framework 出錯(cuò)。服務(wù)器可能資源不足,或者不信任該程序集,因?yàn)樗?PERMISSION_SET 設(shè)置為 EXTERNAL_ACCESS 或 UNSAFE。請(qǐng)重新運(yùn)行查詢,或檢查有關(guān)的文檔了解如何解決程序集信任問(wèn)題。有關(guān)此錯(cuò)誤的詳細(xì)信息:
System.IO.FileLoadException: 未能加載文件或程序集“testclr, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個(gè)依賴項(xiàng)。異常來(lái)自 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)
至于產(chǎn)生的原因大概是,在備份數(shù)據(jù)庫(kù)的時(shí)候,在機(jī)器A,那么數(shù)據(jù)庫(kù)的擁有者是A/Administrator(如果用windows登錄創(chuàng)建),那么但是我們還原到服務(wù)器B,那么擁有者可能是B/Administrator,那么SQL CLR的安全性會(huì)認(rèn)為該程序集不可靠.
例如:
我首先創(chuàng)建一個(gè)簡(jiǎn)單的SQL CLR 存儲(chǔ)過(guò)程:
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知識(shí)庫(kù):SQL Server Assembly (SQL CLR) 還原數(shù)據(jù)庫(kù)后的問(wèn)題,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。