远程计算机上的 SQL Server
Posted
技术标签:
【中文标题】远程计算机上的 SQL Server【英文标题】:SQL Server on remote computer 【发布时间】:2016-12-26 21:29:22 【问题描述】:我在家庭网络上的 IP 为 192.168.66 的计算机上有一个 SQL Server Express 实例。
我已在端口 49170 上启用 TCP/IP,并在 Windows 防火墙上添加了传入规则。
我有一个应用程序,我想在我的网络中的不同计算机上安装它。当我在 Visual Studio 中测试我的应用程序时,我无法连接到远程计算机上的实例。
<connectionStrings>
<add name="EquipamentoDal.Properties.Settings.ExtinguisherMngConnectionString"
connectionString="Data Source=192.168.1.66,49170;Initial Catalog=ExtinguisherMng;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
服务器名称是DESKTOP-HU51203\EXPRESS
。
我做错了什么无法连接?
【问题讨论】:
有什么异常?你能从远程PC ping ip 地址吗? 你使用的是Integrate security=true
,这台电脑的用户权限够吗?你冒充了某个用户吗?
集成安全性可能不适用于家庭网络。
我能ping通电脑是的。
SQL Server Express 默认情况下 NOT 是否允许远程连接 - 您是否在 SQL Server Express 机器上明确启用了这些远程连接??跨度>
【参考方案1】:
您的连接字符串没有指定您要连接的命名实例,它只指定 IP 地址,这意味着任何客户端都将连接到默认实例而不是命名实例。
默认情况下,SQL Server Express 的配置与 SQL Server 的“标准”版本(标准版、工作组版、开发者版和企业版)不同,如下所示:
阻止传入的远程连接 - 这必须在 SQL Server 配置管理器中明确启用 使用名为SQLEXPRESS
的命名实例,而不是配置为默认实例
SQL Server Express 在支持 AttachDb
和 LocalDb
方面也是独一无二的 - 其他 SKU/版本不支持 AttachDb
和 LocalDb
功能。
在您的情况下,您已经启用了远程连接并且您没有使用 AttachDb
或 LocalDb
,因此您只需配置您的客户端以连接到命名实例:
您在连接字符串中使用<host>\<instance name>,<port>
格式在Data Source=
或Server=
参数中指定命名实例,例如Data Source=foo\SQLEXPRESS,1433
,或者在您的特定情况下:
Data Source=192.168.1.66\SQLEXPRESS,49170;Initial Catalog=ExtinguisherMng;Integrated Security=True
您提到您在家庭网络上执行此操作,这意味着您不太可能使用 Active Directory 或 Kerberos,并且鉴于 SQL Server Express 不会公开其用于其服务标识的密码(用户也不能通过网络以NT AUTHORITY\NetworkService
身份验证这意味着您不能使用Integrated Security=True
(或Integrated Security=SSPI
,这是等效的,但SSPI
是首选值),您需要在您的连接字符串。
-
在服务器中创建一个新的登录对象(您需要先以某种方式登录到服务器,无论是本地还是远程使用
sa
帐户(如果存在))
通过将Integrated Security=True
替换为User Id=<userName>;Password=<password>;
来指定新登录的凭据
【讨论】:
我之前已经尝试过 192.168.1.66\SQLEXPRESS,49170 并且遇到了同样的问题 @RolandoAzevedo 您收到的确切错误消息是什么? 服务器未找到或无法访问,,....可能未配置为允许远程连接。以上是关于远程计算机上的 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
此计算机上没有可以更新的 SQL server实例或共享功能
连接到 sql server 数据库 mdf 文件而不在客户端计算机上安装 sql server?
本地计算机上的SQL Server(MSSQLSERVER)服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止