我们有一个使用SQL服务器数据库的ERP应用程序。虽然该应用程序目前尚未使用,但其日志文件不断增加,目前为28GB。我花了几周的完整备份来截断日志文件,当它是85GB时,现在又恢复到28GB。我将日志文件大小设置为20GB,增量为100MB,增长速度不受限制。
为什么在不使用应用程序时日志文件大小会增加,如何查看导致其增加的事务以及如何更好地管理它?在这种情况下,设置服务器跟踪是否有用?
答案 0 :(得分:1)
检查 <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>3.0.1</version>
</dependency>
和sys.dm_exec_requests
的输出,找出正在运行的查询以及与数据库连接的内容/用户。
如果这对您没有帮助,那么您当然可以设置服务器跟踪或扩展事件会话 - 如果您真的认为没有人连接和查询,您可以使用以下内容验证:
sys.dm_exec_sessions
会记录针对您的数据库进行的所有查询 - 只需将注释部分替换为您要跟踪的数据库的IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name = 'EE_Queries')
DROP EVENT SESSION EE_Queries ON SERVER;
GO
CREATE EVENT SESSION EE_Queries ON SERVER
ADD EVENT sqlserver.sql_statement_completed
(ACTION (sqlserver.sql_text,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.nt_username, sqlserver.username)
WHERE sqlserver.database_id = /* fill in your DB_ID() here */)
ADD TARGET package0.asynchronous_file_target
(SET FILENAME = N'C:\logs\EE_Queries.xel', METADATAFILE = N'C:\logs\EE_Queries.xem')
WITH (max_dispatch_latency = 1 seconds);
GO
ALTER EVENT SESSION EE_Queries ON SERVER STATE = START;
。这将启动一个跟踪所有查询的扩展事件会话,包括查询文本,应用程序名称,主机名以及运行查询的用户的用户名(NT和/或SQL用户名) 。这应该很快就能让你知道。 在繁忙的数据库上的生产环境中小心处理该事件会话 - 如果您有大量查询,它可能会降低性能并可能快速填满磁盘。在本地输出该扩展事件: