sql to get table sizes and percentage of database size - run in required database

 

-- Create the temp table for further querying

CREATE TABLE #temp(

            rec_id               int IDENTITY (1, 1),

            table_name       varchar(128),

            nbr_of_rows     int,

            data_space       decimal(15,2),

            index_space     decimal(15,2),

            total_size          decimal(15,2),

            percent_of_db  decimal(15,12),

            db_size             decimal(15,2))

 

-- Get all tables, names, and sizes

EXEC sp_msforeachtable @command1="insert into #temp(nbr_of_rows, data_space, index_space) exec sp_mstablespace '?'",

                                    @command2="update #temp set table_name = '?' where rec_id = (select max(rec_id) from #temp)"

 

-- Set the total_size and total database size fields

UPDATE #temp

SET total_size = (data_space + index_space), db_size = (SELECT SUM(data_space + index_space) FROM #temp)

 

-- Set the percent of the total database size

UPDATE #temp

SET percent_of_db = (total_size/db_size) * 100

 

-- Get the data

SELECT *

FROM #temp

ORDER BY total_size DESC

 

-- Comment out the following line if you want to do further querying

DROP TABLE #temp

 

how to install performance dashboard on sql server 2005 SP2

 

http://www.sql-server-performance.com/articles/per/bm_performance_dashboard_2005_p1.aspx

 

common table expressions article

 

http://www.sqlservercentral.com/articles/Development/commontableexpressionsinsqlserver2005/1758/

 

queries of dbcc showcontig to return various stuff

 

http://www.sqlservercentral.com/articles/Performance+Tuning+and+Scaling/analyzingdatastoragetenshowcontigqueries/1438/

 

 

 

find all constraints

 

 

/*

sqryConstraints

 

Created by Larry Ansley 6/10/03.

 

*/

 

-- Unique Constraints

Select

            Case o1.xtype

                        When 'C' Then 'Check'

                        When 'D' Then 'Default'

                        When 'F' Then 'Foreign Key'

                        When 'PK' Then 'Primary Key'

                        When 'UQ' Then 'Unique'

                        Else 'Other' End as 'Constraint Type',

            o.name as 'Table Name',

            o1.name as 'Constraint/Index Name',

            c1.name as 'Column Name',

            k.keyno as 'KeyNo'

From sysobjects o

Join sysobjects o1

            on o1.Parent_obj = o.id

Join sysconstraints c

            on c.constid = o1.id

Join sysindexes i

            on i.id = o.id

            and i.name = o1.name

Join sysindexkeys k

            on k.id = i.id

            and k.indid = i.indid

Join syscolumns c1

            on c1.id = k.id

            and c1.colid = k.colid

Where o1.xtype = 'UQ'

Order By o.name, o1.name, k.KeyNo

 

 

-- Check, Default Constraints

Select

            Case o1.xtype

                        When 'C' Then 'Check'

                        When 'D' Then 'Default'

                        When 'F' Then 'Foreign Key'

                        When 'PK' Then 'Primary Key'

                        When 'UQ' Then 'Unique'

                        Else 'Other' End as 'Constraint Type',

            o.name as 'Table Name',

            o1.name as 'Constraint Name',

            c1.name as 'Column Name',

            c.text as 'Default/Check Value'

From sysobjects o

Join sysobjects o1

            on o1.Parent_obj = o.id

Join syscolumns c1

            on c1.id = o1.parent_obj

            and c1.colid = o1.info

Join syscomments c

            on o1.id = c.id

Where o1.xtype In ('C' , 'D')

Order By o1.xtype, o.name, c1.name

 

 

-- Foreign Key Constraints

Select

            Case o1.xtype

                        When 'C' Then 'Check'

                        When 'D' Then 'Default'

                        When 'F' Then 'Foreign Key'

                        When 'PK' Then 'Primary Key'

                        When 'UQ' Then 'Unique'

                        Else 'Other' End as 'Constraint Type',

            o1.name as 'Constraint Name',

            o.name as 'FK Table Name',

            c1.name as 'FK Column Name',

            c2.name as 'PK Column Name',

            o2.name as 'PK Table Table',

            fk.keyno as 'KeyNo'

From sysobjects o

Join sysobjects o1

            on o1.Parent_obj = o.id

Join sysforeignkeys fk

            on fk.constid = o1.id

Join sysobjects o2

            on o2.id = fk.rkeyid

Left Join syscolumns c1

            on c1.id = fk.fkeyid

            and c1.colid = fk.fkey

Left Join syscolumns c2

            on c2.id = fk.rkeyid

            and c2.colid = fk.rkey

Where o1.xtype = 'F'

Order By o.name, o2.name, fk.keyno

 

 

-- Primary Key Constraints

Select

            Case o1.xtype

                        When 'C' Then 'Check'

                        When 'D' Then 'Default'

                        When 'F' Then 'Foreign Key'

                        When 'PK' Then 'Primary Key'

                        When 'UQ' Then 'Unique'

                        Else 'Other' End as 'Constraint Type',

            o1.name as 'Constraint Name',

            o.name as 'PK Table Name',

            c1.name as 'PK Column Name',

            c2.name as 'FK Column Name',

            o2.name as 'FK Table',

            fk.keyno as 'KeyNo'

From sysobjects o

Join sysobjects o1

            on o1.Parent_obj = o.id

Join sysforeignkeys fk

            on fk.rkeyid = o.id

Join sysobjects o2

            on o2.id = fk.fkeyid

Left Join syscolumns c1

            on c1.id = fk.rkeyid

            and c1.colid = fk.rkey

Left Join syscolumns c2

            on c2.id = fk.rkeyid

            and c2.colid = fk.rkey

Where o1.xtype = 'PK'

Order By o.name, o2.name, fk.keyno

 

list all triggers

 

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

 

CREATE VIEW rk_vAlltriggers

as

/*

Author  :Rajani

Date     :27-11-2003

Note    :This view lists out all available triggers in the

current database

Use     : Select * from rk_vAlltriggers

*/

            select

            trigger_name = name,

            trigger_owner = user_name(uid),

            isupdate = ObjectProperty( id, 'ExecIsUpdateTrigger'),

            isdelete = ObjectProperty( id, 'ExecIsDeleteTrigger'),

            isinsert = ObjectProperty( id, 'ExecIsInsertTrigger'),

            isafter = ObjectProperty( id, 'ExecIsAfterTrigger'),

            isinsteadof = ObjectProperty( id, 'ExecIsInsteadOfTrigger'),

            object_name(parent_obj) as 'Parent Table'

            from sysobjects

            where type = 'TR'

 

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

 

get all tables and counts

 

declare @tablename varchar(255)

declare curTables cursor for

            select name from sysobjects

            where type='U'

            order by  name

declare @statement varchar(1000)

 

create table #temp

 (tablename varchar(255),[rows] int)

 

open  curTables

 

fetch next from curTables into @tablename

while @@fetch_status=0

begin

 

            select @statement='insert into #temp select '''+@tablename+''',count(*) from '+@tablename

            print @statement

            exec (@statement)

 

fetch next from curTables into @tablename

 

end

 

close  curTables

deallocate curTables

 

select * from #temp

 

drop table #temp

 

-- find all procedures and tables that use a particular column

 

If exists (Select * from sysobjects where name = 'FindObjByColumn_sp' and type = 'P')

drop proc FindObjByColumn_sp

go

 

Create Proc FindObjByColumn_sp      @Column varchar(30)

/******************************************************************************************************

 

Procedure Name          :           FindObjByColumn_sp

Purpose                       :           Search the database for all tables and all procedures that use a specific column.

Called by          :           N/A

 

Input Params    :           @Column - stores the column name that user is searchin for

Output Params :           None

Return Values   :          

           

Written By        :           PNE 08/04/2002

Syntax              :           FindObjByColumn_sp 'DistributionChannel'

Change history  :

 

********************************************************************************************************/

--SYNTAX:    

AS

Declare @ssql varchar(100)

 

--Add wildcard so that seach can be performed even if only part of the column name is used

Select @Column = @Column + '%'

 

SET NOCOUNT ON

 

select    @ssql = 'Tables that contain columns that begin with ' + @Column

select    @ssql

print     '----------------------------------------------------------'

SELECT          convert(varchar(60), O.NAME) "Table Name"

FROM             SYSCOLUMNS C, SYSOBJECTS O, master.dbo.systypes T

WHERE           C.ID = O.ID AND C.xtype = T.xtype

AND    C.NAME LIKE @Column

and       O.Type = 'U'

group by o.name

 

--For stored procedures, add wildcard to beginning because column will be contained within text

Select   @Column =  '%' + @Column

 

select    @ssql = 'Procs that contain the word ' + replace(@Column, '%', '')

select    @ssql

print     '----------------------------------------------------------'

select    convert(varchar(60), O.NAME) "Proc Name"

from     sysobjects o, syscomments c

where   o.id = c.id

and       c.text like @Column

 

SET NOCOUNT OFF