Merhaba Arkadaşlar,
Bu yazımda sizlere SQL Server da DMV ( Dynamic Management View ) ve DMF ( Dynamic Management Functions ) kavramlarına devam edeceğim. DMV ve DMF hakkında bilgisi olmayanlar konuyla ilgili temel kavramları anlatan ilk yazımı okuyabilirler. Bu yazımda DMV ve DMF leri kullanarak SQL Server veritabanları hakkında faydalı bilgileri verecek scriptler ve bunların çıktılarını paylaşacağım.
DMV ve DMF ler SQL Server veritabanlarının performansını ve genel durumunu görmek açısından çok çok önemlidir. Şimdi SQL Server veritabanı instance sının bağlı bulunduğu sunucu hakkında Toplam CPU,Memory,Toplam Disk büyüklüğü,Veritabanı Büyüklüğü ve Transaction log büyüklüğü gibi genel bilgileri veren scripti paylaşacağım. Bu script özellikle veritabanı envanterlerinizi hazırlarken lazım olacak bir scripttir. Script SQL Server 2008 ve SQL Server 2012 de test edilmiştir. Script ve çıktısı aşağıdaki gibidir.
sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO /*******************************************************/ SET NOCOUNT ON DECLARE @hr int DECLARE @fso int DECLARE @drive char(1) DECLARE @odrive int DECLARE @TotalSize varchar(20) DECLARE @MB Numeric ; SET @MB = 1048576 CREATE TABLE #drives (drive char(1) PRIMARY KEY, FreeSpace int NULL, TotalSize int NULL) INSERT #drives(drive,FreeSpace) EXEC master.dbo.xp_fixeddrives EXEC @hr=sp_OACreate 'Scripting.FileSystemObject',@fso OUT IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso DECLARE dcur CURSOR LOCAL FAST_FORWARD FOR SELECT drive from #drives ORDER by drive OPEN dcur FETCH NEXT FROM dcur INTO @drive WHILE @@FETCH_STATUS=0 BEGIN EXEC @hr = sp_OAMethod @fso,'GetDrive', @odrive OUT, @drive IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso EXEC @hr = sp_OAGetProperty @odrive,'TotalSize', @TotalSize OUT IF @hr <> 0 EXEC sp_OAGetErrorInfo @odrive UPDATE #drives SET TotalSize=@TotalSize/@MB WHERE drive=@drive FETCH NEXT FROM dcur INTO @drive End Close dcur DEALLOCATE dcur EXEC @hr=sp_OADestroy @fso IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso --SELECT @@Servername --SELECT --drive, TotalSize as 'Total(MB)', FreeSpace as 'Free(MB)' FROM #drives --ORDER BY drive
CREATE TABLE #CPUInfo ( Logical_CPU_Count bigint, Hyperthread_Ratio bigint, Physical_CPU_Count bigint, Physical_Memory_MB bigint )
INSERT INTO #CPUInfo( Logical_CPU_Count, Hyperthread_Ratio, Physical_CPU_Count, Physical_Memory_MB ) SELECT cpu_count AS [Logical_CPU_Count] ,hyperthread_ratio AS [Hyperthread_Ratio] ,cpu_count/hyperthread_ratio AS [Physical_CPU_Count] , physical_memory_kb/1024 AS [Physical_Memory_MB] FROM sys.dm_os_sys_info
CREATE TABLE #DatabaseInfo ( Machine_Name varchar(50), Instance_Name varchar(50), Sql_Server_Name varchar(50), Total_Database_log_size_MB bigint, Total_Database_log_used_MB bigint, Total_Database_Data_File_Size_MB bigint ) INSERT INTO #DatabaseInfo ( Machine_Name, Instance_Name, Sql_Server_Name, Total_Database_log_size_MB, Total_Database_log_used_MB, Total_Database_Data_File_Size_MB ) select convert(varchar(50),serverproperty('MachineName')) 'Machine_Name' ,convert(varchar(50),isnull(serverproperty('InstanceName'),'mssqlserver')) 'Instance_Name' ,convert(varchar(50),@@SERVERNAME) 'Sql_Server_Name' ,sum(ls.cntr_value/1024) as [Total_Database_log_size_MB] ,sum(lu.cntr_value/1024)as [Total_Database_log_used_MB] ,sum(ds.cntr_value/1024) as [Total_Database_Data_File_Size_MB] from sys.databases d left outer join sys.dm_os_performance_counters as lu on lu.instance_name=d.name and lu.counter_name like N'Log File(s) Used Size (KB)%' left outer join sys.dm_os_performance_counters as ls on ls.instance_name=d.name and ls.counter_name like N'Log File(s) Size (KB)%' and ls.cntr_value > 0 left outer join sys.dm_os_performance_counters as lp on lp.instance_name=d.name and lp.counter_name like N'Percent Log Used%' left outer join sys.dm_os_performance_counters as ds on ds.instance_name=d.name and ds.counter_name like N'Data File(s) Size (KB)%' where d.database_id>4; -- sistem database ler haric WITH SizeDisc AS ( -- sunucu üzerindeki tüm drive size ve free size bilgisi SELECT SUM(TotalSize) as 'Total_Disc_Sizeon_Server_MB', SUM(FreeSpace) as 'Total_Free_Disc_SizeOn_Server_MB' FROM #drives ) SELECT * FROM #DatabaseInfo,#CPUInfo,SizeDisc DROP TABLE #Drives DROP TABLE #DatabaseInfo DROP TABLE #CPUInfo GO /*******************************************************/ /* Disabling Ole Automation Procedures */ sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 0; GO RECONFIGURE; /*******************************************************/ GO
Scriptin çıktısı aşağıdaki gibidir. Yukardaki scriptin çıktısında aşağıda göründüğü gibi sırasıyla Sunucu adı,İnstance adı, SQL Server adı, Toplam Transaction log büyüklüğü, Kullanılan Transaction Log büyüklüğü, Toplam Veridosyalarının büyüklüğü,Mantıksal CPU sayısı,Hyperthread oranı, Fiziksel CPU sayısı,Fiziksel memory büyüklüğü,Sunucudaki toplam disk büyüklüğü ve Sunucudaki boş disk alanı gibi önemli bilgiler yer almaktadır.
SQL Server İnstancesının Versiyon,Edition ve Cluster olup olmadığı gibi bilgileri aşağıdaki scriptle bulabilirsiniz.
SELECT @@Version as ProductName, SERVERPROPERTY('ServerName') AS 'ServerName', SERVERPROPERTY('Edition') AS 'Edition', SERVERPROPERTY('ProductVersion') AS 'ProductVersion', SERVERPROPERTY('ProductLevel') AS 'ProductLevel', SERVERPROPERTY('ResourceLastUpdateDateTime') AS 'ResourceLastUpdateDateTime', SERVERPROPERTY('ResourceVersion') AS 'ResourceVersion', SERVERPROPERTY('IsClustered') as _1_Means_Clustered , SERVERPROPERTY('ComputerNamePhysicalNetBIOS') as ActiveNode GO
Scriptin çıktısı aşağıdaki gibidir.
Böylece bir yazının daha sonuna gelmiş bulunmaktayım bir sonraki yazıda görüşmek dileğiyle Esen kalın.
Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi İhtiyacınız var mehmet.deveci@gridgroup.com.tr adresine mail atarak Bizimle iletişime geçebilirsiniz.
– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri