標籤:sqlserver smo micros
瞭解GAC:從“找不到Microsoft.SqlServer.SqlClrProvider.dll”的問題開始 老帥 先,看真相,如下:
一、問題描述 我使用Microsoft.SqlServer.Smo開發了一個資料庫管理工具,根據定製的需求,完成對SQLServer的管理。部署到客戶機以後,就提示上述錯誤。而這個檔案在我本機上使用全盤搜尋,無論如何也搜尋不到。
二、追根溯源 經過研究,發現這個檔案是SQLServer2012的一個運行時支援庫,存在於SQLSysClrType.msi中,如下: http://www.microsoft.com/zh-cn/download/details.aspx?id=43339
包含x86和x64兩個版本,請根據自己的需要使用。
三、使用方法
當然,我們可以把SQLSysClrType.msi安裝到客戶機中使用,其實我們只需要這個動態庫檔案而已:
Microsoft.SqlServer.SqlClrProvider.dll 事實上只需要把這個檔案和我們的exe一起部署到客戶機即可,但是安裝完SQLSysClrType.msi之後,我們在本機上仍然搜尋不到這個動態庫。 原來這個檔案安裝在系統的GAC中!!!
什麼是GAC? 微軟為提高系統安全,自Vista推出後,在Windows系統中加入了一個新的東東——UAC(User Account Control),這樣一個新的技術使得許多操作都受到了約束,尤其是對系統設定、檔案的修改,Win7作為一個衍生品,也受到了UAC的保護。 在.NET項目開發中,針對一些類庫項目或使用者控制項項目,當程式開發完成後,有時需要將開發的程式集,安裝部署到GAC(Global Assembly Cache)中,以便其他的程式也可以調用。 通常,將程式集安裝到GAC有兩種方法: 1、將程式集(dll檔案)手動拖至 C:/Windows/assembly 檔案夾中。 2、利用命令列或者全域組件快取工具Gacutil進行安裝。
原來如此!
GAC的目錄在c:\windows\assembly, 而這個目錄是不允許你直接複製粘貼的,只能使用命令列,你會發現GAC的目錄結構與Windows Explorer展示給你的看的目錄不同:
為了把檔案拿出來, 你需要使用命令列:
這樣就可以拿到你需要的動態庫了!!!
瞭解GAC:從“找不到Microsoft.SqlServer.SqlClrProvider.dll”的問題開始