我正在寻找一种监视工具来跟踪我们维护的生产服务器上的事务日志使用情况的变化。
[以前,我使用DBCC SQLPERF(LOGSPACE);
,它提供了所有数据库及其当前事务日志内存状态的列表。但是,Microsoft似乎建议从2012年开始,应从sys.dm_db_log_space_usage
查看日志详细信息,该日志提供类似的详细信息,但似乎是特定于数据库的,而不是提供服务器的总体视图(即,您必须连接到数据库)您希望使用)。
我想我的问题有两个:
sys.dm_db_log_space_usage
?DBCC SQLPERF(LOGSPACE);
?我无法在计算机上使用它,但是我发现了很多有关sp_MSForEachDB的信息。您可以尝试一下:
declare @findKeySQL varchar(1000)
SET @findKeySQL = 'IF ''[?]'' NOT IN (''[master]'', ''[model]'',''[msdb]'', ''[tempdb]'')
USE [?] select * from sys.dm_db_log_space_usage'
EXEC sp_MSForEachDB @findKeySQL
希望这对您有用!
DBCC SQLPERF(LOGSPACE)是否有任何原因;不应该使用?
从SQL Server 2012(11.x)开始,使用sys.dm_db_log_space_usage DMV代替DBCC SQLPERF(LOGSPACE),以返回每个数据库的事务日志的空间使用情况信息
是否可以对所有数据库使用sys.dm_db_log_space_usage?
您可以使用以下光标。也许需要更多的发展;
CREATE TABLE [dbo].[Tbl_DbSizes](
[database_id] [int] NULL,
[total_log_size_in_bytes] [bigint] NULL,
[used_log_space_in_bytes] [bigint] NULL,
[used_log_space_in_percent] [real] NULL,
[log_space_in_bytes_since_last_backup] [bigint] NULL
) ON [PRIMARY]
GO
DECLARE
@queryAsList VARCHAR(MAX) ,@DbName AS VARCHAR(100)
DECLARE Db_List CURSOR
FOR
SELECT name FROM sys.databases
OPEN Db_List;
FETCH NEXT FROM Db_List INTO
@DbName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @queryAsList = 'INSERT INTO Tbl_DbSizes select * from '+ @DbName + '.' + 'sys.dm_db_log_space_usage'
EXEC(@queryAsList)
FETCH NEXT FROM Db_List INTO
@DbName
END;
CLOSE Db_List;
DEALLOCATE Db_List;
SELECT name as databasename , total_log_size_in_bytes ,
used_log_space_in_bytes,used_log_space_in_percent,log_space_in_bytes_since_last_backup
FROM Tbl_DbSizes INNER JOIN sys.databases databaseinfo
ON databaseinfo.database_id= Tbl_DbSizes.database_id
TRUNCATE TABLE [Tbl_DbSizes]
+--------------------+-------------------------+-------------------------+---------------------------+--------------------------------------+
| databasename | total_log_size_in_bytes | used_log_space_in_bytes | used_log_space_in_percent | log_space_in_bytes_since_last_backup |
+--------------------+-------------------------+-------------------------+---------------------------+--------------------------------------+
| master | 2088960 | 729088 | 34.90196 | 270336 |
| tempdb | 8380416 | 675840 | 8.064516 | 299008 |
| model | 8380416 | 1617920 | 19.30596 | 73728 |
| msdb | 9428992 | 1208320 | 12.81494 | 86016 |
| DWDiagnostics | 75489280 | 6467584 | 8.567553 | 253952 |
| DWConfiguration | 8380416 | 626688 | 7.478006 | 253952 |
| DWQueue | 8380416 | 1404928 | 16.76442 | 253952 |
| DemoDb | 8380416 | 1732608 | 20.67449 | 266240 |
| ReportServer | 75489280 | 13873152 | 18.37765 | 274432 |
| ReportServerTempDB | 75489280 | 1925120 | 2.55019 | 245760 |
+--------------------+-------------------------+-------------------------+---------------------------+--------------------------------------+