2011-04-14 2212 views
0

我正在使用.net webservice來恢復sqlserver中的數據庫。我正在使用SQLDMO.dll來恢復數據庫,當我運行應用程序時,出現以下錯誤。System.Web.Services.Protocols.SoapException:服務器無法處理請求

System.Web.Services.Protocols.SoapException:服務器無法處理請求。 ---> System.UnauthorizedAccessException:檢索具有CLSID {10021CC1-E260-11CF-AE68-00AA004A34D5}的組件的COM類工廠失敗,原因如下:80070005. at DBReplicatorService.SQLDEMOScripts..ctor() at DBReplicatorService .DBReplicatorService.RestoreDB(字符串sDBName,字符串sUserName,字符串spassword開頭,字符串sBackupFileName)

我使用如下代碼,當我在我的本地使用它工作正常連接數據庫

Dim objBCPExport As New SQLDMO.BulkCopy2 
Public objDB As SQLDMO.Database2 
Dim objServer As New SQLDMO.SQLServer2 

Public Function ConnectDatabaseWithRefresh(ByVal sServerName As String, ByVal sDatabaseName As String, ByVal sUserName As String, ByVal sPassword As String) As Boolean 
    Dim bResult As Boolean 

    Try 
     objServer = New SQLDMO.SQLServer2 
     objServer.EnableBcp = True 
     objServer.Connect(sServerName, sUserName, sPassword) 
     objDB = Nothing 
     objDB = objServer.Databases.Item(sDatabaseName) 
     objDB.DBOption.SelectIntoBulkCopy = True 
     bResult = True 
    Catch ex As Exception 
     bResult = False 
    End Try 

    Return bResult 
End Function 

相同的代碼(它包含SQL Server 2005),並且當我在託管服務器(它包含SQL Server 2008)中使用它時,我得到上述錯誤

我在這些變量初始化中出現錯誤。我使用

Dim objBCPExport As New SQLDMO.BulkCopy2 

和連接字符串

 Dim cnnNewDB As New SqlConnection("Data Source=" + pServer + "Initial Catalog=" + pDatabase + ";Persist Security Info=True;User ID=" + pUserName + ";Password=" + pPassword) 

任何一個可以請幫我解決這個問題。

謝謝, Senthil。

+0

警告*我在這裏猜測:-)您的問題是,託管Web服務的進程很可能需要提升權限才能使用SQLDMO。您的線程池上的身份帳戶很可能無法訪問所需的權限。 – 2011-04-14 12:28:34

+0

我沒有通過使用'sa'帳戶連接數據庫,並且我正在使用的帳戶沒有創建數據庫的權限,是否有問題? – Senthil 2011-04-14 12:42:46

+0

請發佈您的連接字符串,但是,如果您使用集成安全,那麼您的帳戶需要訪問sql服務器 – 2011-04-14 13:00:53

回答

0

哎, 如果你確定關於用戶的服務器名和密碼的準確性 您的項目可能不有權寫事件日誌.. 以修復去 \ HKEY_LOCAL_MACHINE \系統\ CurrentControlSet \ Services \ Eventlog \ Application \ RestrictGuestAccess並將其值更改爲(0)以重新啓動

相關問題