![]() |
|
Spaces home T-SQL脚本中心PhotosProfileFriendsMore ![]() | ![]() |
|
There are no photo albums.
|
T-SQL脚本中心提供常用的T-SQL脚本
查询数据库中表空间使用状况/*-- =================================================================== 版本: SQL Server 2000, 2005 功能: 查询数据库中表空间使用状况 =================================================================== --*/
USE [要查询空间信息的库名] GO
SELECT ServerName = CONVERT(sysname, SERVERPROPERTY('ServerName')), DatabaseID = DB_ID(), DatabaseName = DB_NAME(), ObjectID = DATA.id, Owner = USER_NAME(DATA.uid), ObjectName = DATA.Name, Reserved = CONVERT(decimal(15, 2), DATA.Reserved / SPER.PageSperMB), DataSize = CONVERT(decimal(15, 2), (DATA.DataSize + DATA.[TextSize]) / SPER.PageSperMB), IndexSize = CONVERT(decimal(15, 2), (DATA.IndexSize - DATA.DataSize - DATA.[TextSize]) / SPER.PageSperMB), UnUsedSize = CONVERT(decimal(15, 2), (DATA.Reserved - DATA.IndexSize) / SPER.PageSperMB), DATA.Rows FROM( SELECT O.id, O.uid, O.name, O.xtype, Reserved = ISNULL(SUM(CASE WHEN IX.indid IN (0, 1, 255) THEN CONVERT(dec(15), IX.reserved) ELSE 0 END), 0), DataSize = ISNULL(SUM(CASE WHEN IX.indid < 2 THEN CONVERT(dec(15), IX.dpages) ELSE 0 END), 0), [TextSize] = ISNULL(SUM(CASE WHEN IX.indid = 255 THEN CONVERT(dec(15), IX.used) ELSE 0 END), 0), IndexSize = ISNULL(SUM(CASE WHEN IX.indid IN (0, 1, 255) THEN CONVERT(dec(15), IX.used) ELSE 0 END), 0), Rows = ISNULL(MAX(CASE WHEN IX.indid < 2 THEN IX.rows ELSE 0 END), 0) FROM dbo.sysindexes IX WITH(NOLOCK) INNER JOIN dbo.sysobjects O WITH(NOLOCK) ON IX.id = O.id WHERE O.xtype IN ( 'U')--, 'S') AND O.status > =0 AND (IX.indid < 2 OR IX.indid = 255) GROUP BY O.id, O.uid, O.name, O.xtype )DATA CROSS JOIN( SELECT PageSperMB = 1048576. / low, low FROM master.dbo.spt_values WHERE number = 1 AND type = 'E' )SPER ORDER BY ObjectName, Owner GO 查询数据库空间使用状况/*-- =================================================================== 版本: SQL Server 2000, 2005 功能: 查询数据库空间使用状况 =================================================================== --*/
USE [要查询空间信息的库名] GO
SELECT ServerName = CONVERT(sysname, SERVERPROPERTY('ServerName')), DatabaseID = DB_ID(), DatabaseName = DB_NAME(), DatabaseSize = CONVERT(decimal(15, 2), DB.DbSize / SPER.PageSperMB), DataFileSize = CONVERT(decimal(15, 2), DB.DataFileSize / SPER.PageSperMB), LogFileSize = CONVERT(decimal(15, 2), DB.LogFileSize / SPER.PageSperMB), UnAllocated = CONVERT(decimal(15, 2), (DB.DataFileSize - DATA.Reserved) / SPER.PageSperMB), DataReserved = CONVERT(decimal(15, 2), DATA.Reserved / SPER.PageSperMB), DataSize = CONVERT(decimal(15, 2), (DATA.DataSize + DATA.[TextSize]) / SPER.PageSperMB), IndexSize = CONVERT(decimal(15, 2), (DATA.IndexSize - DATA.DataSize - DATA.[TextSize]) / SPER.PageSperMB), UnUsedSize = CONVERT(decimal(15, 2), (DATA.Reserved - DATA.IndexSize) / SPER.PageSperMB), CountProcedure = OBJS.ProcudureS, CountFunction = OBJS.FunctionS, CountTrigger = OBJS.TriggerS, CountUserTable = OBJS.TableS, CountView = OBJS.ViewS, RecoveryMode = CONVERT(varchar(12), DATABASEPROPERTYEX(DB_NAME(), N'Recovery')), PrimaryDrive = CONVERT(char(1), ( SELECT TOP 1 UPPER(LEFT(FileName, 1)) FROM master.dbo.sysdatabases WITH(NOLOCK) WHERE dbid = DB_ID())) FROM( SELECT DbSize = ISNULL(SUM(CONVERT(dec(15), size)), 0), DataFileSize = ISNULL(SUM(CASE WHEN status & 0x40 =0 THEN CONVERT(dec(15), size) ELSE 0 END), 0), LogFileSize = ISNULL(SUM(CASE WHEN status & 0x40 =0 THEN 0 ELSE CONVERT(dec(15), size) END), 0) FROM dbo.sysfiles WITH (NOLOCK) )DB CROSS JOIN( SELECT Reserved = ISNULL(SUM(CASE WHEN indid IN (0, 1, 255) THEN CONVERT(dec(15), reserved) ELSE 0 END), 0), DataSize = ISNULL(SUM(CASE WHEN indid < 2 THEN CONVERT(dec(15), dpages) ELSE 0 END), 0), [TextSize] = ISNULL(SUM(CASE WHEN indid = 255 THEN CONVERT(dec(15), used) ELSE 0 END), 0), IndexSize = ISNULL(SUM(CASE WHEN indid IN (0, 1, 255) THEN CONVERT(dec(15), used) ELSE 0 END), 0) FROM dbo.sysindexes WITH(NOLOCK) WHERE (indid < 2 OR indid = 255) )DATA CROSS JOIN( SELECT PageSperMB = 1048576. / low FROM master.dbo.spt_values WHERE number = 1 AND type = 'E' )SPER CROSS JOIN( SELECT TableS = SUM(CASE xtype WHEN 'U' THEN 1 ELSE 0 END), ProcudureS = SUM(CASE xtype WHEN 'P' THEN 1 ELSE 0 END), ViewS = SUM(CASE xtype WHEN 'V' THEN 1 ELSE 0 END), TriggerS = SUM(CASE xtype WHEN 'TR' THEN 1 ELSE 0 END), FunctionS = SUM(CASE WHEN xtype IN('FN', 'IF', 'TF') THEN 1 ELSE 0 END) FROM dbo.sysobjects )OBJS GO
生成指定数据库的脚本/*-- =================================================================== 版本: SQL Server 2000 功能: 生成指定数据库的脚本 =================================================================== --*/
USE [准备脚本的数据库名] GO
DECLARE @s nvarchar(4000),@Path nvarchar(1000)
-- ===================================================================== -- 脚本文件存放目录 -- ===================================================================== SET @Path='e:\' +CAST(SERVERPROPERTY(N'ServerName') as sysname)+N'\' +DB_NAME()+N'\'
SET @s=N'md '+QUOTENAME(@Path,N'"') EXEC master.dbo.xp_cmdshell @s -- --脚本生成处理 -- SET @s=N'scptxfr /s '+QUOTENAME(ServerName,N'"') -- +N' /d '+QUOTENAME(DbName,N'"') -- -- +N' /I' --使用windows身份验证,如果使用sql身份验证,则愀为+N' /P "sa密码"',固定使用sa用户 -- +N' /P '+QUOTENAME(N'4saadmin',N'"') -- +N' /f '+QUOTENAME(@Path+ScriptFile,N'"') -- +N' /Y /q /T /C /r' -- /r 生成drop 脚本/H 生成不带首部的脚本(默认带首部) -- EXEC master..xp_cmdshell @s,no_output
-- ===================================================================== -- Get Server Info -- ===================================================================== SELECT @s=N'scptxfr /s '+QUOTENAME(Server,N'"') +N' /d '+QUOTENAME(DbName,N'"') +N' /I' -- 使用windows身份验证,如果使用sql身份验证,则愀为+N' /P "sa密码"',固定使用sa用户 -- +N' /P '+QUOTENAME(N'4saadmin',N'"') +N' /f '+QUOTENAME(@Path+ScriptFile,N'"') +N' /Y /q /T /C /r' -- /r 生成drop 脚本/H 生成不带首部的脚本(默认带首部) FROM( SELECT Server=N'10.1.25.13\d2his01', DbName = DB_NAME(), ScriptFile= DB_NAME() +N'.SQL' )A EXEC master.dbo.xp_cmdshell @s |
|||
|
|