SQLSERVER:PREEMPTIVE
SQLSERVER:PREEMPTIVE_OS_GETPROCADDRESS等待类型的困惑 翻译自: http://troubleshootingsql.com/2011/07/20/preemptive_os_getprocaddress-are-you-confusing-me/ PREEMPTIVE_OS_GETPROCADDRESS 等待类型在SQLSERVER2008里是一个新的等待类型 这个等待类
SQLSERVER:PREEMPTIVE_OS_GETPROCADDRESS等待类型的困惑
翻译自:http://troubleshootingsql.com/2011/07/20/preemptive_os_getprocaddress-are-you-confusing-me/
PREEMPTIVE_OS_GETPROCADDRESS等待类型在SQLSERVER2008里是一个新的等待类型
这个等待类型的作用是当GetProcAddress跟踪SQLSERVER实例调用扩展存储过程的时候加载DLL的入口点所花费的时间
然而,这个等待类型跟踪这个等待时间的方式有一些问题,这个问题在Rob Dorr的博客里有所记载
根据Twitter上面一个帖子的讨论,我发现了可以证明这个问题的一个例子
我使用下面的命令去列出我的C盘下面的子目录:
<span>1</span> <span>exec</span> master..xp_dirtree <span>'</span><span>C:\</span><span>'</span>
然后,我使用下面的TSQL脚本去监视系统中执行这个扩展存储过程的那个会话的等待信息,这个TSQL脚本每隔一秒执行一次
<span> 1</span> <span>SET</span> NOCOUNT <span>ON</span> <span> 2</span> <span>WHILE</span> (<span>1</span><span>=</span><span>1</span><span>) </span><span> 3</span> <span>BEGIN</span> <span> 4</span> <span>SELECT</span> <span>[</span><span>session_id</span><span>]</span>, <span>[</span><span>status</span><span>]</span>, <span>[</span><span>command</span><span>]</span>, <span>[</span><span>start_time</span><span>]</span>, <span>[</span><span>cpu_time</span><span>]</span>, <span>[</span><span>reads</span><span>]</span>, <span>[</span><span>writes</span><span>]</span>, <span>[</span><span>wait_resource</span><span>]</span>, <span>[</span><span>wait_time</span><span>]</span>, <span>[</span><span>last_wait_type</span><span>]</span>, <span>[</span><span>wait_type</span><span>]</span> <span> 5</span> <span>FROM</span><span> sys.dm_exec_requests </span><span> 6</span> <span>WHERE</span> <span>[</span><span>session_id</span><span>]</span> <span>=</span> <span>53</span> <span>--</span><span> Session ID that is executing the Extended Stored Procedure</span> <span> 7</span> <span> 8</span> <span>WAITFOR</span> DELAY <span>'</span><span>00:00:01</span><span>'</span> <span> 9</span> <span>RAISERROR</span> (<span>''</span>, <span>10</span>, <span>1</span>, N<span>'</span><span>Waits</span><span>'</span><span>); </span><span>10</span> <span>11</span> <span>END</span>
按CTRL+T然后执行上面的SQL脚本,把结果粘贴出来
正如你在上面看到的,等待时间不断递增
我们能够看到会话为了输出下面的结果正在努力工作:
1、在SSMS里,执行这个扩展存储过程的那个会话的结果窗口输出执行结果
2、使用procmon这个工具跟踪SQLSERVER进程对于C盘的文件系统的活动
您能够使用SQLSERVER2008或者SQLSERVER2008R2,执行任何扩展存储过程来重现这个问题
当我知道会话正在工作的时候,有两样东西我会检查一下是否存在资源瓶颈:1、内存 2、I/O
如果一些文件系统的活动跟一些正在工作的扩展存储过程有关。我见过的大部分问题都是因为这个等待类型引起的
#sqlhelp,Extended Stored Procedures,PREEMPTIVE_OS_GETPROCADDRESS
如有不对的地方,欢迎大家拍砖o(∩_∩)o

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The import steps are as follows: Copy the MDF file to SQL Server's data directory (usually C:\Program Files\Microsoft SQL Server\MSSQL\DATA). In SQL Server Management Studio (SSMS), open the database and select Attach. Click the Add button and select the MDF file. Confirm the database name and click the OK button.

For objects with the same name that already exist in the SQL Server database, the following steps need to be taken: Confirm the object type (table, view, stored procedure). IF NOT EXISTS can be used to skip creation if the object is empty. If the object has data, use a different name or modify the structure. Use DROP to delete existing objects (use caution, backup recommended). Check for schema changes to make sure there are no references to deleted or renamed objects.

When the SQL Server service fails to start, here are some steps to resolve: Check the error log to determine the root cause. Make sure the service account has permission to start the service. Check whether dependency services are running. Disable antivirus software. Repair SQL Server installation. If the repair does not work, reinstall SQL Server.

To view the SQL Server port number: Open SSMS and connect to the server. Find the server name in Object Explorer, right-click it and select Properties. In the Connection tab, view the TCP Port field.

SQL Server database files are usually stored in the following default location: Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data The database file location can be customized by modifying the database file path setting.

If you accidentally delete a SQL Server database, you can take the following steps to recover: stop database activity; back up log files; check database logs; recovery options: restore from backup; restore from transaction log; use DBCC CHECKDB; use third-party tools. Please back up your database regularly and enable transaction logging to prevent data loss.

The problem was found that this time I was using the SqlServer database, which I had not used before, but the problem was not serious. After I connected the SqlServer according to the steps in the requirements document, I started the SpringBoot project and found an error, as follows: At first I thought it was a SqlServer connection. There was a problem, so I went to check the database and found that everything was normal. I first asked my colleagues if they had such a problem, and found that they did not, so I started my best part, facing Baidu. programming. The specific error message I started to solve was this, so I started Baidu error reporting: ERRORc.a.d.p.DruidDataSource$CreateCo

If the SQL Server installation fails, you can clean it up by following these steps: Uninstall SQL Server Delete registry keys Delete files and folders Restart the computer
