2010-11-18 62 views
0

我有两个数据库的Web应用程序;一个用于开发,另一个用于生产。我有一个连接到数据库并上传数据的Windows服务。根据我想要定位的数据库,我在我的服务的app.config中注释掉了一个连接字符串。如何解决数据库权限问题?

当然,在我的本地开发计算机上一切正常。我可以使用app.config在数据库之间切换,并将数据上传到适当的数据库。这是一件美丽的事情。真的,这是!

我在两个新的虚拟服务器上安装了网络应用程序。该网站的应用程序工作得很好,并连接到相同的数据库。

我使用与我的本地开发盒完全相同的app.config安装了windows服务。我以相同的用户(我的Windows帐户)运行Windows服务。但是,该服务仅适用于开发数据库,​​而不是生产数据库。让我重复一遍,同样的配置文件,但服务可以opnly连接到开发数据库。

当我切换到使用app.config中的prod数据库并重新启动服务时,以下异常会记录到应用程序的事件日志中。

The underlying provider failed on Open. 
    System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) 
     at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 
     at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 
     at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
     at System.Data.SqlClient.SqlConnection.Open() 
     at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) 

我很确定这与权限有关,但我已经用尽了解决这个问题的想法。有什么建议么?如何确定需要哪些权限使服务与生产数据库一起工作?

编辑#1 - 直接从app.config,生产数据库是“数据源= ABCD-SQL \ prod;”这个名字可能有问题吗?

编辑#2 - 从几个来源验证server \ instance约定是正确的。

回答

0

您是否检查过SQL Server服务是否正在运行?我曾经遇到同样的问题,并且通过重新启动服务来解决问题。