场景:SQL Server 2014 (v12.0.4100.1)
.NET 服务运行此查询:
SELECT name, base_object_name
FROM sys.synonyms
WHERE schema_id IN (SELECT schema_id
FROM sys.schemas
WHERE name = N'XXXX')
ORDER BY name
Run Code Online (Sandbox Code Playgroud)
...返回大约 6500 行,但通常在 3+ 分钟后超时。的XXXX
上面是不“DBO”。
如果我以 UserA 的身份在 SSMS 中运行此查询,该查询将在不到一秒的时间内返回。
当以 UserB 运行(这是 .NET 服务连接的方式)时,查询需要 3-6分钟,并且 CPU%始终为 25%(4 核)。
UserA 是 sysadmin 角色中的域登录名。
UserB 是一个 SQL 登录,具有:
EXEC sp_addrolemember N'db_datareader', N'UserB'
EXEC sp_addrolemember N'db_datawriter', N'UserB'
EXEC sp_addrolemember N'db_ddladmin', N'UserB'
GRANT EXECUTE TO [UserB]
GRANT CREATE SCHEMA TO [UserB]
GRANT …
Run Code Online (Sandbox Code Playgroud)