SQL Server日志文件 - 为什么在不使用数据库时它的大小会增加?

时间:2017-03-10 21:49:55

标签: sql-server sql-server-2012

我们有一个使用SQL服务器数据库的ERP应用程序。虽然该应用程序目前尚未使用,但其日志文件不断增加,目前为28GB。我花了几周的完整备份来截断日志文件,当它是85GB时,现在又恢复到28GB。我将日志文件大小设置为20GB,增量为100MB,增长速度不受限制。

为什么在不使用应用程序时日志文件大小会增加,如何查看导致其增加的事务以及如何更好地管理它?在这种情况下,设置服务器跟踪是否有用?

1 个答案:

答案 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用户名) 。这应该很快就能让你知道。 在繁忙的数据库上的生产环境中小心处理该事件会话 - 如果您有大量查询,它可能会降低性能并可能快速填满磁盘。在本地输出该扩展事件:

enter image description here