1. 程式人生 > >SQLServer數據庫,表內存,實例名分析SQL語句

SQLServer數據庫,表內存,實例名分析SQL語句

right log space _id 數據庫 con sys case sharp

--數據庫內存分析
USE master
go
DECLARE @insSize TABLE(dbName sysname,checkTime VARCHAR(19),dbSize VARCHAR(50),logSize VARCHAR(50))
INSERT INTO @insSize ( dbName, checkTime, dbSize, logSize )
EXEC sp_msforeachdb ‘select ‘‘?‘‘ dbName,CONVERT(VARCHAR(19),GETDATE(),120) checkTime,LTRIM(STR(SUM(CASE WHEN RIGHT(FILENAME,3)<>‘‘ldf‘‘ THEN convert (dec (15,2),size) * 8 / 1024 ELSE 0 END),15,2)+‘‘ MB‘‘) dbSize,  
                 LTRIM(STR(SUM(CASE WHEN RIGHT(FILENAME,3)=‘‘ldf‘‘  THEN convert (dec (15,2),size) * 8 / 1024 ELSE 0 END),15,2)+‘‘ MB‘‘) logSize from ?.dbo.sysfiles‘
--SELECT * FROM @insSize ORDER BY CONVERT(DECIMAL,LTRIM(RTRIM(SUBSTRING(dbSize,1,LEN(dbSize)-2)))) DESC
SELECT checkTime AS ‘檢查日期‘, dbName AS ‘數據庫‘,dbSize AS ‘數據容量‘,logSize AS ‘日誌容量‘,CAST(CAST(LEFT(dbSize,LEN(dbSize)-2) as decimal(10,2))+CAST(LEFT(logSize,LEN(logSize)-2) as decimal(10,2)) AS VARCHAR(20))+‘MB‘ AS ‘占用空間‘ FROM @insSize 
WHERE dbName NOT IN(‘master‘,‘model‘,‘tempdb‘,‘msdb‘,‘distribution‘)
ORDER BY CONVERT(DECIMAL,LTRIM(RTRIM(SUBSTRING(dbSize,1,LEN(dbSize)-2)))) DESC

--表空間分析
BEGIN
USE[EMPI]
--select count(1) from sysobjects where xtype=‘U‘數據庫中表的數量
create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
exec sp_MSforeachtable "insert into #t exec sp_spaceused ‘?‘" 
select name AS ‘表名‘,rows AS ‘數據行數‘,CAST(CAST(CAST(LEFT(data,LEN(data)-2) AS FLOAT)/1024 AS DECIMAL(10,3)) AS VARCHAR(20))+‘MB‘ AS ‘占用空間‘,
CAST(CAST(CAST(LEFT(reserved,LEN(reserved)-2) AS FLOAT)/1024 AS DECIMAL(10,3)) AS VARCHAR(20))+‘MB‘ AS ‘保留的總空間‘,index_size AS ‘索引的空間‘,unused AS ‘未用空間‘ FROM #t 
ORDER BY CONVERT(DECIMAL,LTRIM(RTRIM(SUBSTRING(data,1,LEN(data)-2)))) DESC
drop table #t
end



--用戶名以及權限(不全)
use master
go
SELECT  u.name AS ‘用戶名‘,g.name AS ‘權限‘, u.default_database_name AS ‘默認數據庫‘
  from sys.server_principals u, sys.server_principals g, sys.server_role_members m
 where g.principal_id = m.role_principal_id
   and u.principal_id = m.member_principal_id
  order by 1, 2
go
 
--數據庫實例名
select @@SERVICENAME

  

SQLServer數據庫,表內存,實例名分析SQL語句