我正在尝试将连接到公司本地服务器的本地PC上的服务移动到使用SQL / Windows 2012的第三方专用服务器。
如果我以root用户身份登录计算机并打开服务控件并将其提供给本地系统帐户&#34 ;运行的权限(以及与桌面交互的能力 - 我有一个停止/启动Win Form,它给我关于它连接到的第三方API的信息) - 它运行。
这就是它运行,除非它尝试连接到localhost数据库时需要对它进行轰炸,但例外情况是:在建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接);
但是,如果我运行.NET程序,我写信给我详细介绍一台机器(例如驱动器,用户和登录时间,使用localhost发送电子邮件的能力,从外部HTTP请求获取服务器IP)和连接到localhost SQL Server并使用与我的服务相同的连接字符串(DB,User,PSW),然后它可以在sys视图和排序规则差异中连接和提取有关SQL用户的信息。
这是我在命令提示符下运行的控制台应用程序,因为当我以root身份登录到该框时,我不必像管理员那样打开命令提示符,因为大多数其他应用程序需要获取这些详细信息并连接到同一个SQL DB。
如果我只是尝试更改要使用的服务"现有帐户"或者在root用户/ psw中输入框并尝试服务甚至不能以&#34开头; Windows无法在本地计算机上启动xx服务"并且在事件查看器中它只是一个未处理的.NET异常,似乎它出于某种原因(权限 - 为什么当它是root?)时错误记录到我为它创建的事件日志。
应用程序:BrainiacV2.exe Framework版本:v4.0.30319描述:由于未处理的异常,进程已终止。异常信息:System.Diagnostics.EventLog.WriteEntry(System.String,System.Diagnostics)中System.Diagnostics.EventLogInternal.WriteEntry(System.String,System.Diagnostics.EventLogEntryType,Int32,Int16,Byte [])的System.ArgumentException。 EventLogEntryType)在BrainiacV2.BrainiacJobs.WriteToEventLog(System.Exception,System.String)
这些错误仅发生在组合的Windows 2012 / SQL服务器上,而不是我的Win7 PC和远程数据库服务器上。
我确实读过这篇文章以及许多其他人说过本地用户帐户应该足以让它运行。
what Windows account should a service run under to access network sql servers
当所有核心代码都在服务使用的DLL中时,任何有关调试此建议的建议都将受到赞赏。
答案 0 :(得分:0)
您的问题难以理解,但我会尝试。
除非有人创建了具有该名称的帐户,否则Windows上没有“root”。
我有一个停止/启动Win Form
您无法在Windows服务中拥有表单。它没有桌面,也不允许使用。
并为其提供“本地系统帐户”权限。 。 。我有一个停止/启动Win Form,它给我关于它连接到的第三方API的信息) - 它运行。
LocalSystem帐户仅限于正在运行的计算机。它没有网络权限。如果您的数据库位于另一台计算机上,则无法连接到该计算机。解决方案是让服务以具有正确权限的用户身份运行。
(以及与桌面接口的能力 -
这在Windows的更高版本中不起作用,即使它起作用也不可靠且不可预测。
provider:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接);
这意味着未在SQL Server上配置命名管道提供程序,并且您尝试使用它。您可以配置它,也可以将连接切换到实际在SQL Server中配置的提供程序。也可能无法使用您指定的名称访问服务器。你能用你指定的名字ping它吗?
最后一条消息表明您没有顶级try / catch块,这意味着错误是致命的。您需要捕获并处理它们,尤其是在服务中。
如果你能让你的问题更容易理解并缩小你所遇到的确切问题,我可能会给你更多的帮助。