2011-04-14 2214 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)以重新启动

相关问题