如何从Windows服务访问localDB

我需要在本地使用数据库。 我已经使用Visual Studio 2012在(LocalDB)\ v11.0 Server中创建了数据库。从例如控制台应用程序连接时,一切正常。 但我的应用程序是Windows服务。 尝试连接到我的数据库输出:

"... The login failed.Login failed for user 'NT AUTHORITY\SYSTEM" 

这有什么解决方案吗? 也许我应该考虑为它设置其他数据库服务器? 如果是,如何设置它以便它只在本地可见?

所以我自己找到了解决方案,如何从作为本地系统运行的Windows服务连接(localdb)实例:

我使用过这篇文章: http : //technet.microsoft.com/pl-pl/library/hh212961.aspx http://dba.fyicenter.com/faq/sql_server_2/Verifying_a_Login_Name_with_SQLCMD_Tool.html http://social.technet.microsoft .COM /维基/内容/文章/ 4609.troubleshoot-SQL服务器2012-EXPRESS-localdb.aspx

所以我分享了我的localdb(如第1篇文章中),问题是我无法连接sqlcmd命名管道np://。 我在第3篇文章中找到了答案:

使用sqlcmd时,请确保您使用的是SQL Server 2012版本(可在%Program Files%\ Microsoft SQL Server \ 110 \ Tools \ Binn中找到)。 如果安装了以前版本的sqlcmd,则从命令行单独调用sqlcmd很可能会使用旧版本(不支持localdb),因为旧路径首先出现在PATH环境变量中。 通常,手动调整PATH环境变量以便首先拾取110个版本可能是个好主意。

这个小信息实际上是至关重要的;)

所以我创建了用户: 用户密码: pass321!@

在我的Windows服务中,我的Sql connectionString看起来:

 "Data Source=(localdb)\\.\\MyInstanceShared;Integrated Security=false;User Id=user;Password=pass321!@" 

集成安全性设置为false值也很重要。

也许它会对某人有所帮助。

可能您的连接字符串使用当前Windows用户帐户(运行该服务的帐户可能是错误中显示的帐户)连接到数据库(并且该用户帐户无权访问)。 我要做的是,我会更改数据库以允许“混合身份validation”(这也意味着SQL用户和Windows用户),然后我将创建一个新用户,为该用户分配使用您的应用程序所需的权限然后使用来自Windows服务的连接字符串中的userName和密码。 您也可以保留数据库,并从Windows添加用户“System”,然后为其分配所需的权限。 您只需向用户添加“dbo”配置文件即可使其快速运行(但在发布产品之前请检查安全性)。

我认为你需要允许远程连接到你的SqlServer。

在Sql Server配置管理器中,在“SQL网络配置”下,选择您的服务器并检查是否已启用TCP / IP。

在我的情况下,双击TCP / IP,转到底部“IPAll”并将动态端口设置为空,将TCP端口设置为1433。

让我知道它是否足够。