SSMS多版本用户映射加载缓慢/无响应问题排查求助
SSMS加载Login用户映射超时/无响应问题求助
在SSMS 14、18和19版本中,加载任意Login的User Mapping时耗时极长,有时需一小时,甚至完全无法加载并出现无响应情况。
已尝试以下操作:
- 确认问题与AD login或SQL login类型无关
- 将SQL Server版本从2016升级至2022
- 将SSMS版本从14升级至18再到19
- 检查SQL阻塞情况(未发现阻塞)
- 测试多个不同Login(均存在此问题)
- 当前SQL实例包含25个数据库,总计约50个Login
此问题导致无需编写SQL查询的用户安全和数据库映射管理工作异常困难,恳请支持与指导!
编辑1:定位问题根源查询
通过SQL Trace,找到导致问题的查询如下:
USE [database_name] SELECT u.name AS [Name], CAST(CASE dp.state WHEN N'G' THEN 1 WHEN 'W' THEN 1 ELSE 0 END AS bit) AS [HasDBAccess], ISNULL(u.default_schema_name,N'') AS [DefaultSchema] FROM sys.database_principals AS u LEFT OUTER JOIN sys.database_permissions AS dp ON dp.grantee_principal_id = u.principal_id and dp.type = @_msparam_0 WHERE (u.type in ('U', 'S', 'G', 'C', 'K' ,'E', 'X')) and (ISNULL(suser_sname(u.sid),N'')=@_msparam_1)
该查询在选择数据库后运行,是第4个执行的查询。
编辑2:锁定问题代码段
具体是以下代码部分导致问题:
and (ISNULL(suser_sname(u.sid),N''')=@_msparam_1)
编辑3:确认函数为罪魁祸首
经过对不同数据库和Login的测试,确定是suser_sname函数导致的问题——该函数执行后会挂起,永远无法完成,只能强制关闭SQL。恳请进一步指导,谢谢!
编辑4:补充环境上下文
问题发生在独立域的DEV环境,该环境用于还原生产数据库,还原时会根据需要将关联的SQL login更新为适配DEV域的版本。
曾怀疑sys.database_principals中SID不匹配的孤立SQL login导致问题,确实存在部分孤立登录,但使用sp_change_users_login修复后问题仍存在。
内容的提问来源于stack exchange,提问作者L.Newell
相关产品推荐
相关产品推荐

