在我正在开发的系统中遇到麻烦.关于这个问题的布局是安装了sql LocalDB 2012,WPF应用程序和
Windows服务的WiX内置的msi安装程序. Windows服务和WPF应用程序都要与同一个数据库通信,由用户交互驱动的应用程序和定时器上的服务.
一切安全干净,数据库实例以混合模式安装,因此我的数据库初始化程序为实例和数据库创建了一个新的登录名和用户,而在SSMS中,它们都被正确配置.我可以使用新登录名登录并查询表格.这是我用来创建登录的代码:
IF NOT EXISTS (SELECT loginname FROM master.dbo.syslogins WHERE name = 'BP_SERVICELOGIN') BEGIN CREATE LOGIN[BP_SERVICELOGIN] WITH PASSWORD = 'pw'; CREATE USER[bpUser] FOR LOGIN[BP_SERVICELOGIN] WITH DEFAULT_SCHEMA = dbo; USE DatabaseName; EXEC sp_addrolemember 'db_owner','bpUser' END
所以我重申一下此登录在SSMS中工作正常,并允许我登录并访问由WPF应用程序的初始化程序创建的数据库.
但是,我无法从Windows服务登录到此数据库.我确保在我的连接字符串中使用新的登录名,并且一切都正确设置在那里.我怎么知道这个?因为当我将连接字符串复制到我的WPF应用程序,并使用它而不是Windows的auth,它工作!
服务不断失败,并显示以下信息:
"System.Data.Entity.Core.EntityException: The underlying provider Failed on Open. in EntityFramework:File: Method:Open Line:0 Column:0 System.Data.sqlClient.sqlException: Login Failed for user 'BP_SERVICELOGIN'. in .Net sqlClient Data"
这是我使用的连接字符串:
<add name="ConnStringName" providerName="System.Data.sqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=DbName;User Id=BP_SERVICELOGIN;Password=pw;MultipleActiveResultSets=True;Application Name=ServiceName" />
似乎有一些障碍是使Windows服务的连接正确连接,而其他人没有这样的问题. LocalDB安装是新鲜的,而不是DB和Login / User创建的,对OOB状态没有任何作用.
谁能帮忙?