本文解决sql server的远程连接问题。需要开启防火墙,开启端口,并处理权限不足的报错:
【use 某数据库】The server principal "[server]" is not able to access the database "[database]" under the current security context.
【select 查询】The SELECT permission was denied on the object '[table]', database 'master', schema 'dbo'.
文章目录
- 一、服务端防火墙
- 1. 禁用防火墙
- 2. 设置特定端口启用
- 3. 防火墙特定端口禁用(暂时不需要)
- 二、服务端端口
- 1. 查看
- 2. 设置
- 三、客户端远程连接
- 1. 连接成功之后
- 2. 远端启用sa账户
- 1) 设置密码并启用
- 2) 启用密码登录模式
- 3. 再次远程连接
为了使笔记本(Win 10)本地的Microsoft SQL Server Management Studio (SSMS) 2017连上服务器端(Win 7)的Microsoft SQL Server 2014数据库,我依次进行了下述操作。
一、服务端防火墙
测试时使用第1种,后面需要更改为第2种。
1. 禁用防火墙
控制面板\系统和安全\Windows Defender 防火墙,打开或关闭Windows Defender防火墙,(使用推荐的防火墙设置),关闭Windows防火墙。
2. 设置特定端口启用
控制面板\系统和安全\Windows Defender 防火墙\启动或关闭防火墙\启动。Windows Defender 防火墙-入站规则-新建-端口-1433-…名称sqlserver。
3. 防火墙特定端口禁用(暂时不需要)
控制面板\系统和安全\Windows Defender 防火墙,启用或关闭Windows Defender防火墙,启用。高级设置-入站规则,新建规则-规则类型:端口-协议和端口:TCP,137,139,445,593,1025,2745,3127,6129,3389-操作:阻止连接,后面按顺序进行。
二、服务端端口
1. 查看
打开配置工具查看:
- Microsoft sql server 2014(“开始”处完整名称) / Configuration tools / [红色包包]configuration manager。
- 进入后打开目录:Network configuration / Protocols for WINCC / TCP/IP: enabled.
- 右击属性,选择IP Address,拉到最下面IPALL,可以从TCP Dynamic Ports看到当前SQL server的端口号。
2. 设置
接上小节打开至TCP Dynamic Ports
- 点击TCP Dynamic Ports的值,选择1433。设置成功,接下来重启服务才能生效。
- Win + R输入services.msc进入服务,选择其中的SQL server (WINCC),右键选择重新启动。
- 然后检查:
netstat –ano | findstr 1433
,可以看到其中已经有LISTENING的进程了。 - 尝试远程连接,此时就能正常连接了。
三、客户端远程连接
1. 连接成功之后
由于我是用一个普通用户连接的,结果上去只能看到有哪些库,看不到数据。执行Query语句,报错:
消息 916,级别 14,状态 1,第 16 行
The server principal "YF75" is not able to access the database "BarcodeScan" under the current security context.
看来得用sa账户了。
2. 远端启用sa账户
Super Administrator。【参考1】
1) 设置密码并启用
启动SQL Server Management Studio,先用Windows身份验证登录之后,选择目录:安全性(security)/登录名(logins)/sa右击属性(properties),进入设置页面。
- 点击常用(General),更改右侧密码(password)并验证(confirm password),记住密码。
- 点击状态(status),点击登录(login)中的启动(Enabled)
- 确定。
2) 启用密码登录模式
如果你已经远程登录过,这一步就不用设置了,肯定已经打开了。如果没有,设置的路径是:
- 右击数据库栏最上方的数据库名(电脑名或IP),选属性,点击安全性,选中右侧身份验证中的“SQL server 和身份验证模式”,并确定。
- 然后,再次右击数据库名,选择中间位置的重启(restart),是。
- 最后,断开数据库连接,选择密码登录,试一下是否开启成功。
3. 再次远程连接
使用sa账户连接。
值得注意的是,重新连接后,记得关闭一下脚本再重新加载一下,防止出现登录名是sa但脚本是其他普通用户的情况。否则会继续报错,如图所示:
至此,可以连接成功!
参考1:https://blog.csdn.net/ren6370/article/details/73409989。