.net – 无法从Windows Service连接到SQL LocalDB,WPF应用程序和SSMS工作正常?

前端之家收集整理的这篇文章主要介绍了.net – 无法从Windows Service连接到SQL LocalDB,WPF应用程序和SSMS工作正常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我正在开发的系统中遇到麻烦.关于这个问题的布局是安装了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状态没有任何作用.

谁能帮忙?

我不是Windows服务的专业人士.

我认为这个错误在你写的Windows服务中.通过会话零隔离,您可能必须在指定的用户帐户中运行Windows服务.如果您可以为Windows服务运行的用户帐户提供帮助.默认情况下,该服务运行在一个名为SYSTEM帐户的不同用户帐户中.此帐户可能没有访问数据库的权限.这可能会导致问题.

猜你在找的Windows相关文章