我刚刚在Vista SP1计算机上安装了SQL Server 2008 Express.我之前在2005年就已经使用旧的SQL Server Management Studio Express了.我能够连接到我的PC-NAME\SQLEXPRESS实例没有问题(不,PC-NAME不是我的电脑名称;-).
我卸载了2005和SQL Server Management Studio Express.然后,我在我的计算机上安装了SQL Server 2008 Express,并选择安装SQL Server Management Studio Basic.
现在,当我尝试连接到PC-NAME\SQLEXPRESS(使用Windows身份验证时,就像我一直这样),我收到以下消息:
无法连接到PC-NAME\SQLEXPRESS.建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)(Microsoft SQL Server,错误:-1)如需帮助,请单击:http://go.microsoft.com/fwlink?ProdName = Microsoft + SQL +服务器&EvtSrc =&的MSSQLServer EvtID = -1&LINKID = 20476
当我安装SQL Server 2008时,我让它使用SQLEXPRESS作为本地实例名称.据我所知,通过SQL Server配置管理器,SQL Server配置为允许远程连接.
当我访问它提到的帮助链接时,帮助页面提示以下内容:
好吧,据我所知,我的系统上没有SQL Server Browser服务(在MMC中查找一个,找不到一个).
并且SQL Server 2008中不存在SQL Server表面区域配置工具.在您的帮助文档中可以很好地使用Microsoft ;-).
我现在不知道该做什么.在升级到2008之后,我有很多工作,我希望能够完成这项工作(我正在与之合作的人在没有问题的情况下完成并运行它并告诉我这很容易 - 他对数据库的东西也更好了我上午).有谁知道什么可能是错的?我真的很感激.如果我不能在几个小时内完成这项工作,我将回到SQL Server 2005(如果这甚至可以工作,那么......).
编辑:我已经尝试关闭Windows防火墙,这没有帮助.另外,我注意到我的SQL Server 2008安装目录树下没有"数据"目录 - 安装时我可能设置了错误吗?
我有一个非常小的测试应用程序,我在安装过程中尝试安装Windows服务并创建LocalDB数据库,然后在Windows服务运行时连接到该LocalDB数据库.
我遇到了从Windows服务连接到LocalDB实例的巨大问题.
我的安装过程完全如下:
执行安装程序.msi文件,该文件以NT AUTHORITY\SYSTEM帐户运行msiexec进程.
使用以下命令运行自定义操作以执行SqlLocalDB.exe:
使用ADO.NET(System.Data.SqlConnection)运行自定义C#操作以执行以下操作:
Data Source=(localdb)\MYINSTANCE; Integrated Security=true在安装程序完成之前启动Windows服务.
Windows服务安装到LocalSystem帐户,因此也作为NT AUTHORITY\SYSTEM用户帐户运行.
该服务尝试使用上面使用的相同连接字符串进行连接.
尝试从Windows服务中打开与上述连接字符串的连接时,我一直收到以下错误:
System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误.指定的LocalDB实例不存在.
这是令人沮丧的,因为msi安装程序自定义操作和Windows服务都在相同的Windows用户帐户下运行(我检查过,它们都是NT AUTHORITY\System).那么为什么第一部作品而第二部作品不在我之外.
我已尝试更改自定义操作和Windows服务中使用的连接字符串以使用共享名称(localdb)\.\MYINSTANCESHARE,我从Windows服务获得完全相同的错误.
我尝试将Windows服务登录的用户帐户更改为我的Windows用户帐户,只要我第一次运行命令将其添加到该实例的SQL服务器登录,该帐户就可以正常工作.
我也试过运行一个控制台应用程序并连接到共享名称连接字符串,这也是有效的.
我也尝试从SQL Server Management Studio连接到共享名称,这也是有效的.
然而,这些方法都没有真正解决我的问题.我需要Windows服务,因为它会在计算机启动后立即启动(即使没有用户登录),并且无论登录哪个用户帐户都启动.
Windows服务如何连接到LocalDB私有实例?
我正在使用SQL Server 2014 Express LocalDB.
我正在开发的系统遇到一些麻烦.就这个问题而言,布局是一个WiX内置的msi安装程序,它安装SQL LocalDB 2012,WPF应用程序和Windows服务.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
Run Code Online (Sandbox Code Playgroud)
所以我重申一下; 此登录在SSMS中工作得很好,并允许我登录并访问由WPF应用程序的初始化程序创建的数据库.
但是,我无法从Windows服务登录此数据库.我确保在我的连接字符串中使用新登录,并在那里正确设置了所有内容.我怎么知道这个?因为当我将连接字符串复制到我的WPF应用程序并使用它而不是Windows身份验证时,它可以工作!?!
该服务不断失败并显示以下消息:
"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"
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的连接字符串:
<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" />
Run Code Online (Sandbox Code Playgroud)
似乎存在一些障碍,即保持与Windows服务的连接正确连接,而其他人没有这样的问题.LocalDB安装是新鲜的,除了DB和创建的Login/User之外,没有从OOB状态对它进行任何操作.
有人可以帮忙吗?
.net sql-server connection-string windows-services database-connection