DECLARE @rowcnt INT 
DECLARE @iterator INT 
DECLARE @dbname VARCHAR(200) 
DECLARE @exec_sql VARCHAR(500) 
SET @rowcnt = 0 
SET @iterator = 1 
CREATE TABLE #db_file_info ( [Database_Name] SYSNAME NOT NULL, [File_ID] SMALLINT NOT NULL, [File_Type] VARCHAR(10) NOT NULL, [File_Name] SYSNAME NOT NULL, [File_Path] VARCHAR(500) NOT NULL, [File_Size_in_MB] INT NOT NULL, [Space_Used_in_MB] INT NOT NULL, [Space_Left_in_MB] INT NOT NULL, [Time_collected] smalldatetime )
CREATE TABLE #db ( dbid INT, name VARCHAR(200)) 
INSERT INTO #db 
SELECT database_id, name FROM sys.databases
 WHERE --database_id <> 11 AND [state] <> 6 
SET @rowcnt = @@ROWCOUNT
 WHILE @iterator <= @rowcnt
 BEGIN 
    
SELECT @dbname = '['+ name + ']' FROM #db 
    
SET @exec_sql = ' USE ' + @dbname + '; 
    
Insert into #DB_FILE_INFO Select db_name(),fileid,case when groupid = 0 then ''log file'' else ''data file'' end, name,filename, [file_size] = convert(int,round ((sysfiles.size*1.000)/128.000,0)), [space_used] = convert(int,round(fileproperty(sysfiles.name,''SpaceUsed'')/128.000,0)), [space_left] = convert(int,round((sysfiles.size-fileproperty(sysfiles.name,''SpaceUsed''))/128.000,0)), getdate() from dbo.sysfiles; ' 
  EXEC( @exec_sql) 
  SET @iterator = @iterator + 1
 END 
INSERT INTO SQLAdmin_Monitor_db_file_info 
SELECT * FROM #db_file_info 
DROP TABLE #db 
DROP TABLE #db_file_info 
This blog is created to add all the information and experiences that I have learnt while working on MS sql server as a DBA. The blog is also updated frequently with the real world problem that I encounter hands on at work and the resolutions to resolve them. I hope this blog will be of some use to you and you will revisit. Thank you for stopping by and you are welcome to leave comments.
No comments:
Post a Comment