C#引用Interop.SQLDMO.dll后的注意事項(轉) - coolsundy


C#引用sqldmo.dll的方法

找到 sqldmo.dll這個文件

C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll

用.Net框架提供的工具轉成受托管代碼

tlbimp sqldmo.dll /out: c:\SQLDMO.dll

如題,有沒有辦法呢?   

  如果必須使用sqldmo,那么如何在沒有安裝sql的機器上使用這個com組件。   

  我在沒有安裝sql的機器上總是報錯。

將以下文件發布到system32目錄下   

  sqldmo.dll   

  sqlunirl.dll   

  sqlresld.dll   

  sqlsvc.dll   

  w95scm.dll   

  Resources\2052\sqldmo.rll   

  Resources\2052\sqlsvc.rll   

    

  然后運行   regsvr32   sqldmo.dll

    在SQL Server2005以前的版本中,SQL分布式管理對象(SQL-DMO)為我們提供了非常有效的方法來通過編程的方式管理SQL Server。SQL-DMO支持基於COM的接口,開發人員可以通過這個接口來發現和操作SQL Server對象。而SQL Server2005在這方面做了更大的改進,它提供了一種新的管理框架,叫做SQL Server管理對象(簡稱為SMO),這套組件具有更強大的管理能力,而且它被建立在.Net Framework2.0之上。當然,我們仍然可以使用SQL-DMO來管理SQL Server2005,但SMO為我們提供了更多的功能,也支持很多SQL Server2005的新特性,它的性能也比SQL-DMO更優化。

   微軟將SMO定義為“為可編程管理微軟SQL Server而設計的對象”。SMO給了開發人員更全面地管理SQL Server的各種元素的能力,如表、列、索引、存儲過程、觸發器、Service Broker、快照數據庫、備份和恢復、文件和文件組等。

C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Smo.dll

 

SQLDMO.dll是個好東西,ASP.NET利用它可以實現在線備份、還原數據庫等各種功能。近日有客戶要求為其在后台添加一個管理數據庫的功能。於是就出現了這篇文章。

     由於客戶的數據庫和WEB服務不再同一台服務器,當我們把網站部署在服務器上以后,運行程序,提示如下錯誤:

 

Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80040154

 

 

而客戶又不想在這台電腦安裝MSSQL,所以我們只需要在沒有安裝MSSQL的電腦上注冊SQLDMO.DLL組件。

第 一步:首先將msvcr71.dll,  SQLDMO.DLL, Resources\2052\sqldmo.rll,Resources\1033\sqldmo.rll 拷貝到C:\Program Files\Microsoft SQL Server\80\Tools\Binn目錄。

 

下載SQLDMO文件   

第二步:打開開始,在運行中輸入 regsvr32 "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll" 注冊sqldmo.dll。

正常情況下,經過以上兩個步驟,網頁就應該可以訪問了的。 但是我們經過以上兩次操作后,訪問網頁依然提示如下錯誤:

 

 

Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80070005.

 

后 經過一段時間的檢查,我們發現C:\Program Files\文件夾僅有Administrator和System的控制權限,而沒有其他任何用戶的權限,因此我們為Microsoft SQL Server文件夾增加上Network Service 的讀取權限。

至此,問題得到解決!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM