对crm数据库中的数据大小分析:
USE CRM
GO
--查看表使用情况
IF OBJECT_ID('tempdb..#TB_TEMP_SPACE') IS NOT NULL DROP TABLE #TB_TEMP_SPACE
GO
CREATE TABLE #TB_TEMP_SPACE(
NAME VARCHAR(500)
,ROWS INT
,RESERVED VARCHAR(50)
,DATA VARCHAR(50)
,INDEX_SIZE VARCHAR(50)
,UNUSED VARCHAR(50)
)
GO
SP_MSFOREACHTABLE 'INSERT INTO #TB_TEMP_SPACE exec sp_spaceused ''?'''
GO
SELECT *
FROM #TB_TEMP_SPACE
ORDER BY REPLACE(DATA,'KB','')+0 DESC
GO
数据库全备份:
USE [master]
GO
/****** Object: View [dbo].[Tool_FullbackupSyntex] Script Date: 2015/12/23 11:42:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER view [dbo].[Tool_FullbackupSyntex]
as
with tempA as
(
--**记得要改这里的路径、路径对于每一个服务器都是不同的**--
select 'backup database '+name +' to disk = '+''''+ 'F:\backup\'+name+convert(varchar(100),getdate(),112)+'_with_compression.bak'+''''+' with init,compression; ' as cmd
from sys.databases where name not in('tempdb','master','model','msdb')),
tempB as(
select cmd ,ROW_NUMBER() over(order by cmd) rowNumber from tempA)
select * from tempB;
GO
USE [master]
GO
/****** Object: StoredProcedure [dbo].[Tool_FullBack] Script Date: 2015/12/23 11:41:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Tool_FullBack]
as
begin
-- @i 用于记录一共有多少个数据库。(除tempdb以外)。
declare @i as int=0;
select @i=count(*) from dbo.Tool_FullbackupSyntex;
-- @cmd 用于备份的动态脚本。
declare @cmd as nvarchar(max)=' ';
-- 加载动态脚本到 @tempA 表中。
declare @tempA table(rowNumber int,cmd nvarchar(255));
insert into @tempA(rowNumber,cmd)
select a.rowNumber,a.cmd from dbo.Tool_FullbackupSyntex as a;
-- 拼接动态脚本。
while @i>=1
begin
select @cmd=@cmd+cmd from @tempA where rowNumber=@i;
set @i = @i-1;
end
-- 执行备份
exec(@cmd);
end;
执行全备份:
USE [master]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[Tool_FullBack]
SELECT 'Return Value' = @return_value
GO
监控数据库中进程相关的情况
select a.*,a.cmd,a.waittime,DB_NAME(a.dbid) as DBName,b.text as SQLText,cmd,a.last_batch from sys.sysprocesses as a cross apply sys.dm_exec_sql_text(sql_handle) as b
where cmd !='AWAITING COMMAND'