SQL Server挂在PREEMPTIVE_OS_AUTHZINITIALIZECON上吗?

时间:2018-12-17 09:01:17

标签: sql-server

我的其中一台生产计算机(SQL Server Express 2012)的性能不太好。我开始运行WhoIsActive脚本,并且得到了很多这些等待类型:

(10871ms)PREEMPTIVE_OS_AUTHZINITIALIZECON

它们总是在调用检查某些用户权限的函数时发生。如果我正确理解这一点,则该函数必须等待将近11秒才能等待Windows函数AuthzInitializeContextFromSid(请参阅https://www.sqlskills.com/help/waits/preemptive_os_authzinitializecontextfromsid/)。

  1. 我的假设是否正确? (下面的完整输出)
  2. 我在网上找不到有关此轮渡类型的任何信息。可能是什么原因造成的?

完整输出:

00 00:00:10.876 75  
<?query --
select  @RetValue = ([dbo].[Users_IsMember]('some_role_name', @windowsUserName)
                             | is_srvrolemember('SysAdmin', @windowsUserName))
--?>

<?query --
MyDB.dbo.StoredProcName;1
--?>

DOMAIN\User (10871ms)PREEMPTIVE_OS_AUTHZINITIALIZECON   master: 0 (0 kB),tempdb: 0 (0 kB),MyDB: 0 (0 kB)                 10,875                   0                   0 NULL                     93                   0                   0 <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.5" Build="11.0.7001.0"><BatchSequence><Batch><Statements><StmtSimple StatementText="select  @RetValue = ([dbo].[Users_IsMember]('some_role_name', @windowsUserName)&#xD;&#xA;                             | is_srvrolemember('SysAdmin', @windowsUserName))&#xD;&#xA;       " StatementId="1" StatementCompId="49" StatementType="ASSIGN WITH QUERY" RetrievedFromCache="true" /></Statements></Batch></BatchSequence></ShowPlanXML>                      3 runnable    NULL                      0 NULL    ServerName  AppName .Net SqlClient Data Provider    2018-12-17 09:29:35.413 2018-12-17 09:29:35.413 0   2018-12-17 09:29:46.447

1 个答案:

答案 0 :(得分:0)

根据我的经验,PREEMPTIVE_OS等待状态与分配给SQL Server的内存与Windows OS本身之间的不平衡有关。

在这种情况下,OS内存不足。您可以尝试将更多的总内存添加到该框中,或者确保将SQL Server配置为仅使用实例上安装的总内存的80%。或两者兼有。

  • 注意-这不是关于如何为SQL Server配置内存的全面说明,而是从调整PREEMPTIVE_OS相关的等待类型开始的好地方。