我知道在Server数据库上配置AUTO_SHRINK的缺点。最近,在一个新的环境中,我发现几个生产服务器的自动收缩选项打开。
现在,在更改此配置之前,我想知道:由于auto_shrink事件是以25%的未使用空间开始的,所以我想知道这是否和/或何时实际发生在SQL服务器上。我试图找到相关的SQL-事件日志文件条目。我开始手动收缩测试数据库,但没有出现任何事件日志条目。
有人知道如何在最近几天或几周内在Server上发现收缩发生的时间吗?
发布于 2015-08-11 10:45:11
是的,您可以从默认跟踪(在这里阅读更多内容)获得相应的详细信息,这取决于它是否保留在下面的查询中:
DECLARE @TracePath NVARCHAR(1000);
-- Get the file path for the default trace
SELECT @TracePath =
REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX('\', REVERSE([path])), 1000)) + 'log.trc'
FROM sys.traces
WHERE is_default = 1;
-- Query to get auto growth and shrink event from the default trace
SELECT EventName = te.[name],
tr.ServerName,
tr.DatabaseName,
tr.[FileName],
FilePath = sf.[filename],
Duration_in_ms = tr.Duration/1000,
FileGrowth_in_mb = (tr.IntegerData*8)/1024,
tr.StartTime,
tr.EndTime
FROM sys.fn_trace_gettable(@TracePath, DEFAULT) tr
INNER JOIN sys.trace_events te
ON tr.EventClass = te.trace_event_id
INNER JOIN sys.sysaltfiles sf
ON tr.[FileName] = sf.[name]
WHERE te.name in (
'Data File Auto Grow',
'Log File Auto Grow',
'Data File Auto Shrink',
'Log File Auto Shrink')
ORDER BY tr.StartTime DESC;此外,还可以通过标准报告部分查看相同的内容:
1)开放(SSMS)
2)在对象资源管理器上突出显示要检查其自动收缩事件的数据库,并右击
3)选择报表,然后选择标准报表。然后选择磁盘使用情况
4)它将在屏幕上打开一个报告,如果该数据库中有任何最近的自动增长和/或自动收缩事件,您应该能够看到“Data/Log/Auto收缩事件”部分。
发布于 2015-08-11 15:44:14
请参阅此链接:
总结一下(这对我来说是有效的):
使用以下方法查找默认跟踪文件的位置:
SELECT * FROM fn_trace_getinfo(default);
然后使用它查询默认的跟踪文件:
SELECT top 10
TextData,
HostName,
ApplicationName,
LoginName,
StartTime
FROM
[fn_trace_gettable]('C:\MSSQL\Log\log_1110.trc', DEFAULT)
WHERE TextData LIKE '%SHRINK%'; 您可以在那里看到诸如DBCC SHRINKDATABASE等操作的条目。
https://dba.stackexchange.com/questions/110649
复制相似问题