我有两个数据库的Web应用程序;一个用于开发,另一个用于生产。我有一个连接到数据库并上传数据的Windows服务。根据我想要定位的数据库,我在服务的app.config中注释掉一个连接字符串。
当然,在我当地的开发计算机上一切正常。我可以使用app.config在dbs之间切换,并将数据上传到相应的数据库。这是一件美丽的事情。真的,它是!
我在两个新的虚拟服务器上安装了Web应用程序。 Web应用程序工作正常,并连接到相同的dbs。
我使用与本地开发框完全相同的app.config安装了Windows服务。我正在以同一个用户(我的Windows帐户)运行Windows服务。但是,该服务仅适用于dev db,而不适用于生产db。让我再说一遍,相同的配置文件,但服务可以只连接到dev db。
当我切换到在app.config中使用prod db并重新启动服务时,会将以下异常记录到应用程序的事件日志中。
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开始,生产数据库是“Data Source = ABCD-SQL \ prod;”该名称可能有问题吗?
编辑#2 - 从几个来源验证了服务器\实例约定是否正确。
答案 0 :(得分:0)
您是否检查过SQL Server服务是否正在运行?我有同样的问题一次,通过重新启动服务,它解决了问题。