常见的SSMS问题
[TOC]
问题1:新机器找不到 SSMS 客户端
- 症状:新安装 SQL Server 2017 找不到 SQL Server Management Studio (SSMS)
- 解决:SQL Server 2016 及以后的版本,不会集成SSMS,SSMS需要单独安装(下载地址)
问题2:新开 SSMS 窗口崩溃
- 症状:2018.05.15.在一台 Windows 2012 R2 的服务器上,在已打开 SSMS 的情况下,新开一个 New Query 窗口则 SSMS 崩溃,如下图示:
- 补充:经多次尝试,若将 Print Spooler 服务启动之后,新开 Query 窗口则正常。
- 原因:这是一个微软的bug(参考:SQL Server Management Studio crashes when you try to start a New Query window in Windows 8.1),满足如下场景可以重现:
1. OS版本:Windows 8.1 或 Windows Server 2012 R2
2. 功能:故障转移集群(Failover Cluster)已安装
3. 服务:Print Spooler 服务已停止
- 解决:安装 KB2908806 补丁,然后重启服务器
1. 安装 Windows8.1-KB2908806 补丁
2. 重启服务器
3. 禁用 Print Spooler 服务 [可选]
问题3:新开 SSMS 窗口崩溃提示编码
- 症状:SQL Server 2012 新开一个查询窗口,弹出 编码 窗口,如下图示
- 解决:安装最新版的 ssms
问题4:对象不能从 DBHull 转换为其他类型 (mscorlib)
- 症状:在 Windows Server 2012 上通过 SSMS 11.0.3128.0 登录 SQL Server 2012,点击 管理 报错“对象不能从 DBHull 转换为其他类型。(mscorlib)”
- 补充1:在别的服务器上,通过 SSMS 11.0.3128.0 登录这台sql实例也报错,但登录本机实例的管理则正常
- 补充2:将登录账号的sa权限取消后则ok,只要加上sa权限就报错(添加其他权限不报错)
- 解决:由于修改了主机名导致 @@ServerName 与 SERVERPROPERTY('ServerName') 不一致,执行 sp_dropserver 与 sp_addserver 重新注册之后重启sql服务生效
SELECT @@ServerName,SERVERPROPERTY('ServerName')
IF @@SERVERNAME <> SERVERPROPERTY('ServerName')
BEGIN
DECLARE @srvname sysname
SET @srvname = @@SERVERNAME
EXEC sp_dropserver @server = @srvname
SET @srvname = CAST( SERVERPROPERTY('ServerName') as sysname)
EXEC sp_addserver @server = @srvname , @local = 'LOCAL'
END