ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SSMS连接SQL Server全指南:从本地到远程解决常见报错

SSMS连接SQL Server全指南:从本地到远程解决常见报错 2. 首次连接从本地到远程把SSMS真正用起来2.1 连接窗口里的门道服务器名称、身份验证和连接属性第一次打开SSMS弹出的是一个“连接到服务器”对话框。很多新手上来就卡在这儿不知道该填什么。我们先把这个对话框里的每一项拆开讲清楚。“服务器类型”一般不用动保持“数据库引擎”就行。如果你是做BI集成服务、分析服务或者报表服务的才需要切到对应的类型。“服务器名称”这一栏本地连接可以直接填一个英文句号.或者localhost也可以填127.0.0.1三个都表示本机。如果你的机器上装了多个实例比如默认实例加一个叫什么SQLEXPRESS的命名实例那服务器名称要写成你的电脑名\SQLEXPRESS这种格式这是新手非常容易踩的坑。“身份验证”有两种模式Windows身份验证和SQL Server身份验证。Windows身份验证用的是你当前Windows登录的账号不需要额外输密码适合本机学习和开发环境。SQL Server身份验证则需要输入sa或者其他数据库账号和密码适合远程连接或程序连接。连接属性的设置大多数情况下用默认的就行比如“连接到数据库”留空是连到你账号默认的数据库如果你明确知道要连哪个库也可以选好省得进去之后还要手动切换。把这几项搞清楚基本就能顺利连上本机了。2.2 SQL Server身份验证的开启sa账号为什么连不上你有没有遇到过这种情况本机用Windows身份验证能连但是用SQL Server身份验证填了sa密码却报错“用户 sa 登录失败”这不是密码错了而是SQL Server默认只开了Windows验证模式你选的“SQL Server身份验证”根本没被启用。简单说门都没开你用钥匙当然打不开。修改方式其实不复杂但有个顺序问题。先用Windows身份验证连上去在对象资源管理器里右键服务器选“属性”切到“安全性”页把“服务器身份验证”从“Windows身份验证模式”改成“SQL Server和Windows身份验证模式”点确定。这时候SSMS会提示你重启服务然后才能生效。重启SQL Server服务的方式有很多种可以在“服务”窗口里找到SQL Server (实例名)手动重启也可以右键SSMS里的服务器节点选“重新启动”或者用命令行。因为我平时喜欢命令行操作所以常用这一条Restart-Service MSSQLSERVER注意如果默认实例叫MSSQLSERVER命名实例则要写成MSSQL$实例名比如MSSQL$SQLEXPRESS。重启完服务之后还要手动设置一下sa的密码和状态。展开“安全性” - “登录名”右键sa把密码重新设置一遍同时在“状态”页把“登录”改成“已启用”。如果你架构上想更安全建议之后把sa禁用掉单独建一个账号来用。但学习和测试阶段用sa是最省事的。2.3 远程连接的四个前置条件TCP/IP、服务、端口和防火墙从本机切到远程连接新手最容易一头雾水。这里我直接把远程连接能不能通行的几个关键点列出来SQL Server服务是启动的TCP/IP协议是开启的监听端口是默认的1433防火墙允许了这个端口的入站请求。这四点里有一个不对就会出现经典的[08001]连接失败和“命名管道提供程序: 无法打开”这类报错。先说TCP/IP协议。SQL Server安装后默认不一定启用TCP/IP尤其是Express版本或者你只装了客户端工具的时候。可以在“SQL Server配置管理器”里展开“SQL Server网络配置”找到你的实例在“协议”里把TCP/IP改成“已启用”然后重启服务。如果你喜欢用PowerShell可以像下面这样把TCP/IP启用的注册表项直接改掉Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp\IPAll -Name Enabled -Value 1 Restart-Service MSSQLSERVER注意路径里的MSSQL16.MSSQLSERVER对应的是SQL Server 2022默认实例不同版本的目录名不一样比如2019是MSSQL15.MSSQLSERVER别直接抄错。然后是端口和防火墙。如果我在一台Windows服务器上部署了SQL Server为了让另一台电脑能访问我会在防火墙高级设置里新建一条入站规则放行TCP 1433端口。有时候你用的是云服务器那还要去安全组里放开这个端口不然本机防火墙再怎么放行都不管用。如果不想配置端口也可以用“SQL Server Browser”服务配合动态端口但这会增加复杂度不适合新手建议还是老老实实固定1433。2.4 SSL加密报错驱动无法建立安全连接的解决方法远程连不上的另一个高频报错是“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误: 证书链是由不受信任的颁发机构颁发的。”这个其实不是SQL Server拒绝你而是客户端在验证证书时觉得这个证书不可信。很多自用环境的SQL Server用的是自签名证书客户端默认要求验证证书的真实性验证不过就报错。解决思路有两种一种是在服务器上装一个受信任的证书适合企业环境另一种是告诉客户端“不要验证证书”。在SSMS里连接对话框点“选项” - “连接属性”在“加密”那边把“Trust server certificate”勾上如果你用的是其他客户端比如JDBC、ODBC、DataGrip则在连接字符串里加一个TrustServerCertificatetrue的参数。要说明的是这只是跳过了客户端对服务端证书的校验不是说数据在网络上是明文传输的加密本身还是启用的只是不验证证书是不是权威机构签发的。了解了这一点你就不会看到这个SSL报错时一脸懵了。
返回列表