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 的讀取權限。
至此,問題得到解決!