本文解决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种。
控制面板\系统和安全\Windows Defender 防火墙,打开或关闭Windows Defender防火墙,(使用推荐的防火墙设置),关闭Windows防火墙。
控制面板\系统和安全\Windows Defender 防火墙\启动或关闭防火墙\启动。Windows Defender 防火墙-入站规则-新建-端口-1433-…名称sqlserver。
控制面板\系统和安全\Windows Defender 防火墙,启用或关闭Windows Defender防火墙,启用。高级设置-入站规则,新建规则-规则类型:端口-协议和端口:TCP,137,139,445,593,1025,2745,3127,6129,3389-操作:阻止连接,后面按顺序进行。
打开配置工具查看:
接上小节打开至TCP Dynamic Ports
netstat –ano | findstr 1433
,可以看到其中已经有LISTENING的进程了。由于我是用一个普通用户连接的,结果上去只能看到有哪些库,看不到数据。执行Query语句,报错:
消息 916,级别 14,状态 1,第 16 行
The server principal "YF75" is not able to access the database "BarcodeScan" under the current security context.
看来得用sa账户了。
Super Administrator。【参考1】
启动SQL Server Management Studio,先用Windows身份验证登录之后,选择目录:安全性(security)/登录名(logins)/sa右击属性(properties),进入设置页面。
如果你已经远程登录过,这一步就不用设置了,肯定已经打开了。如果没有,设置的路径是:
使用sa账户连接。
值得注意的是,重新连接后,记得关闭一下脚本再重新加载一下,防止出现登录名是sa但脚本是其他普通用户的情况。否则会继续报错,如图所示:
至此,可以连接成功!
参考1:https://blog.csdn.net/ren6370/article/details/73409989。