Contents
SQL Server Backup Information: ................................................................................................................... 2
How To Kill All Database Processes On SQL Server ............................................................. 3
SCRIPT TO CHANGE ‘SA’ DATABASE OWNERSHIP AT INSTANCE LEVEL ................... 4
SCRIPT TO CHANGE ‘COMPATIBILITY LEVEL’ FOR ALL DATABASES AT INSTANCE
LEVEL.................................................................................................................................................. 4
SCRIPT TO UPDATE STATISTICS TO ALL DATABASES ...................................................... 5
SCRIPT TO RUN DBCC CHECKDB TO ALL DATABASES .................................................... 5
TO FIND OUT ORPHAN USERS AT INSTANCE LEVEL .......................................................... 5
TO FIX THE ORPHAN USERS ....................................................................................................... 5
SCRIPT TO TRANSFER THE LOGINS ......................................................................................... 7
TO KNOW THE RECOVERY MODEL OF ALL THE DATA BASES IN THE INSTANCE .. 10
List of all Stored Procedures in All Databases ...................................................................... 10
List of All Tables in All Databases ............................................................................................. 10
Database Files Sizes in All Databases and used space ...................................................... 10
List all triggers in SQL Server database with table name and table's schem................ 11
List all the count of Tables,Stored Procedures,Views ......................................................... 11
Count of all objects in all databases ......................................................................................... 13
Record Count in All Tables in All Databases .......................................................................... 14
To Check the Log Shipping status. ........................................................................................... 14
Script to check if the databases are configured for Mirroring ........................................... 14
TO FIND COUNT FUNCTION AND INDEX AT INSTANCE LEVEL ....................................... 15
TO GET COUNT OF STOREDPROCEDURE,TRIGGERS,VIEW AT INSTANCE LEVEL . 15
Table counts in instance level .................................................................................................... 15
To find view,sp’s, ,triggers AT INSTANCE LEVEL ................................................................ 15
to find count function and index AT INSTANCE level .......................................................... 16
to find datbase owner in instance level. .................................................................................. 16
how to change databases owner as 'sa' AT INSTANCE LVEL .......................................... 16
Finding mirror databases at instance level ............................................................................. 16
--Query to list out the Log Shipping Jobs--............................................................................. 16
list the databases and and the respective roles/privileges mapped for a particular
user .................................................................................................................................................... 18
Check server configuration ......................................................................................................... 18
Database users, permissions and application roles ............................................................ 18
DBCC Internal Database Snapshot Usage .................................................................................. 18
Informational Statements ................................................................................................................ 19
Validation Statements ...................................................................................................................... 19
Maintenance Statements ................................................................................................................ 19
Miscellaneous Statements .............................................................................................................. 19
SQL Server 2012 Dynamic Management Views and Functions ......................................... 19
SQL Server Backup Information:
This illustrates how to retrieve SQL Server database backups information, depending upon what exactly
you are looking for, this will help us to locate desired information. Below are few scenarios.
1- How to retrieve backup information
select * from msdb.dbo.backupset
Above statement will provide you all the databases backup history, this is going to be our master table to retrieve
various type of information about database backups.
2- How to retrieve backup dates of all the databases including system databases?
select database_name, backup_start_date,backup_finish_date from msdb.dbo.backupset
3- How to find out how many times backup was taken of a particular database?
select count(1) from msdb.dbo.backupset where database_name='Your_db_name'
4- How to find out latest backup of a particular user database?
select database_name, Max(backup_finish_date) as LatestBackup_Time from msdb.dbo.backupse
t
where database_name='Your_database_name'
group by database_name
5- How to find out type (Full, Diff and Tran) of database backup?
select database_name, case type
when 'D'
then 'FULL'
when 'I'
then 'Diff'
when 'L'
then 'tran'
end as [Type of Backup]
from msdb.dbo.backupset
Note: You can add columns as you wish from our master table dbo.backupset
How to find out if database backup compression is ON or OFF?
use [master]
SELECT name, case value when 0 then 'Compression not enabled' when 1 then 'compression Enabled'
end
FROM sys.configurations
WHERE name = 'backup compression default' ;
GO
The below query can be used to get all blocked processes with blocking SPIDs.
USE MASTER
GO
SELECT spid,
blocked AS BlockingSPID,
(SELECT CRI.TEXT
FROM sysprocesses st
CROSS apply sys.Dm_exec_sql_text(sql_handle) CRI
WHERE spid = s.blocked) AS BlockingQuery,
PROGRAM_NAME,
nt_userName,
loginame,
DB_NAME(s.dbid) AS DatabaseName,
CR.TEXT AS Query
FROM sysprocesses s
CROSS apply sys.Dm_exec_sql_text(sql_handle) CR
WHERE blocked <> 0
How To Kill All Database Processes On SQL Server
USE MASTER
GO
DECLARE @DatabaseName AS VARCHAR(500)
-->Provide the DataBaseName for which want to Kill all processes.
SET @DatabaseName='YourDataBaseName'
DECLARE @Spid INT
DECLARE KillProcessCur CURSOR FOR
SELECT spid
FROM sys.sysprocesses
WHERE DB_NAME(dbid) = @DatabaseName
OPEN KillProcessCur
FETCH Next FROM KillProcessCur INTO @Spid
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SQL VARCHAR(500)=NULL
SET @SQL='Kill ' + CAST(@Spid AS VARCHAR(5))
EXEC (@SQL)
PRINT 'ProcessID =' + CAST(@Spid AS VARCHAR(5))
+ ' killed successfull'
FETCH Next FROM KillProcessCur INTO @Spid
END
CLOSE KillProcessCur
DEALLOCATE KillProcessCur
SCRIPT TO CHANGE ‘SA’ DATABASE OWNERSHIP AT INSTANCE
LEVEL
(1)
declare @sql varchar(200),@name varchar(20)
declare cur cursor for
select name from sys.databases
where name not in ('master','tempdb','model','msdb')
open cur
fetch next from cur into @name
while @@FETCH_STATUS = 0
begin
set @sql = 'ALTER AUTHORIZATION ON DATABASE::'+ @name + ' TO [sa];'
print @sql
--exec(@sql)
fetch next from cur into @name
end
close cur
deallocate cur
GO
(2)
SELECT 'ALTER AUTHORIZATION ON DATABASE::' + QUOTENAME(name) + ' TO [sa];'
from sys.databases
where name not in ('master', 'model', 'tempdb')
SCRIPT TO CHANGE ‘COMPATIBILITY LEVEL’ FOR ALL DATABASES
AT INSTANCE LEVEL
EXEC
sp_MSforeachdb '
use [?]
if (select count(*)
from sys.databases
where compatibility_level <100 and
name=''?'' and database_id>4 and
is_read_only = 0
)=1
begin
alter database [?] set compatibility_level = 110
PRINT ''compatibility changed to 100 for database = '' + DB_NAME()
end'
SCRIPT TO UPDATE STATISTICS TO ALL DATABASES
DECLARE @TSQLScript VARCHAR(2000)
DECLARE @Databases SYSNAME
DECLARE cUpdateStatistics CURSOR READ_ONLY FOR
SELECT [name]
FROM master..sysdatabases
WHERE [name] NOT IN ('master','msdb','model', 'tempdb')
ORDER BY [name]
OPEN cUpdateStatistics
FETCH NEXT FROM cUpdateStatistics INTO @Databases
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @TSQLScript = 'USE [' + @Databases +']' + ';' + CHAR(13) + 'EXEC sp_updatestats' + ';' + CHAR(13)
PRINT @TSQLScript
FETCH NEXT FROM cUpdateStatistics INTO @Databases
END
CLOSE cUpdateStatistics
DEALLOCATE cUpdateStatistics
SCRIPT TO RUN DBCC CHECKDB TO ALL DATABASES
EXEC sp_MSforeachDB 'DBCC CHECKDB (?) WITH ALL_ERRORMSGS, EXTENDED_LOGICAL_CHECKS, DAT
A_PURITY'
TO FIND OUT ORPHAN USERS AT INSTANCE LEVEL
EXEC sp_change_users_login @Action='Report'
TO FIX THE ORPHAN USERS
SET NOCOUNT ON
USE AdventureWorks
GO
DECLARE @loop INT
DECLARE @USER sysname
DECLARE @sqlcmd NVARCHAR(500) = ''
IF OBJECT_ID('tempdb..#Orphaned') IS NOT NULL
BEGIN
DROP TABLE #orphaned
END
CREATE TABLE #Orphaned (UserName sysname,IDENT INT IDENTITY(1,1))
INSERT INTO #Orphaned (UserName)
SELECT [name] FROM sys.database_principals WHERE [type] IN ('U','S') AND
is_fixed_role = 0 AND [Name] NOT IN ('dbo','guest','sys','INFORMATION_SCHEMA')
IF(SELECT COUNT(*) FROM #Orphaned) > 0
BEGIN
SET @loop = 1
WHILE @loop <= (SELECT MAX(IDENT) FROM #Orphaned)
BEGIN
SET @USER = (SELECT UserName FROM #Orphaned WHERE IDENT = @loop)
IF(SELECT COUNT(*) FROM sys.server_principals WHERE [Name] = @USER) <= 0
BEGIN
IF EXISTS(SELECT 1 FROM sys.database_principals WHERE [Name] = @USER AND
type_desc = 'WINDOWS_USER')
BEGIN
SET @sqlcmd = 'CREATE LOGIN [' + @USER + '] FROM WINDOWS'
Exec(@sqlcmd)
PRINT @sqlcmd
END
IF EXISTS(SELECT 1 FROM sys.database_principals WHERE [Name] = @USER AND
type_desc = 'SQL_USER')
BEGIN
SET @sqlcmd = 'CREATE LOGIN [' + @USER + '] WITH PASSWORD =
N''password'''
Exec(@sqlcmd)
PRINT @sqlcmd
END
END
SET @sqlcmd = 'ALTER USER [' + @USER + '] WITH LOGIN = [' + @USER + ']'
Exec(@sqlcmd)
PRINT @USER + ' link to DB user reset';
SET @loop = @loop + 1
END
END
SET NOCOUNT OFF
OR
DECLARE @username varchar(25)
DECLARE fixusers CURSOR
FOR
SELECT UserName = name FROM sysusers
WHERE issqluser = 1 and (sid is not null and sid <> 0x0)
and suser_sname(sid) is null
ORDER BY name
OPEN fixusers
FETCH NEXT FROM fixusers
INTO @username
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_change_users_login 'update_one', @username, @username
FETCH NEXT FROM fixusers
INTO @username
END
CLOSE fixusers
DEALLOCATE fixusers
SCRIPT TO TRANSFER THE LOGINS
USE master
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE sp_hexadecimal
@binvalue varbinary(256),
@hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint*16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
GO
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @type varchar (1)
DECLARE @hasaccess int
DECLARE @denylogin int
DECLARE @is_disabled int
DECLARE @PWD_varbinary varbinary (256)
DECLARE @PWD_string varchar (514)
DECLARE @SID_varbinary varbinary (85)
DECLARE @SID_string varchar (514)
DECLARE @tmpstr varchar (1024)
DECLARE @is_policy_checked varchar (3)
DECLARE @is_expiration_checked varchar (3)
DECLARE @defaultdb sysname
IF (@login_name IS NULL)
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name,
l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <>
'sa'
ELSE
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name,
l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name =
@login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled,
@defaultdb, @hasaccess, @denylogin
IF (@@fetch_status = -1)
BEGIN
PRINT 'No login(s) found.'
CLOSE login_curs
DEALLOCATE login_curs
RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' +
@@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
PRINT ''
SET @tmpstr = '-- Login: ' + @name
PRINT @tmpstr
IF (@type IN ( 'G', 'U'))
BEGIN -- NT authenticated account/group
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS
WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
END
ELSE BEGIN -- SQL Server authentication
-- obtain password and sid
SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' )
AS varbinary (256) )
EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
-- obtain password policy state
SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON'
WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1
THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name =
@name
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH
PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ',
DEFAULT_DATABASE = [' + @defaultdb + ']'
IF ( @is_policy_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
END
IF ( @is_expiration_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' +
@is_expiration_checked
END
END
IF (@denylogin = 1)
BEGIN -- login is denied access
SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
END
ELSE IF (@hasaccess = 0)
BEGIN -- login exists but does not have access
SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
END
IF (@is_disabled = 1)
BEGIN -- login is disabled
SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + '
DISABLE'
END
PRINT @tmpstr
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled,
@defaultdb, @hasaccess, @denylogin
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
EXEC sp_help_revlogin
TO KNOW THE RECOVERY MODEL OF ALL THE DATA BASES IN THE
INSTANCE
SELECT name,cmptlevel,DATABASEPROPERTYEX(name,'Recovery')AS RecoveryModel,
DATABASEPROPERTYEX(name,'Status') as Status FROM sysdatabases
List of all Stored Procedures in All Databases
create table #SPList ([DB Name] sysname, [SP Name] sysname, create_date
datetime, modify_date datetime)
declare @SQL nvarchar(max)
set @SQL = ''
select @SQL = @SQL + ' insert into #SPList
select ' + QUOTENAME(name, '''') + ', name, create_date, modify_date
from ' + QUOTENAME(name) + '.sys.procedures' from sys.databases
execute (@SQL)
select * from #SPList order by [DB Name], [SP Name]
List of All Tables in All Databases
if object_ID('TempDB..#AllTables','U') IS NOT NULL drop table #AllTables
CREATE TABLE #AllTables ([DB Name] sysname, [Schema Name] nvarchar(128) NULL,
[Table Name] sysname, create_date datetime, modify_date datetime)
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = COALESCE(@SQL,'') + 'USE ' + quotename(name) + '
insert into #AllTables
select ' + QUOTENAME(name,'''') + ' as [DB Name], schema_name(schema_id) as
[Table Schema], [Name] as [Table Name], Create_Date, Modify_Date
from ' +
QUOTENAME(Name) + '.sys.Tables;' FROM sys.databases
ORDER BY name
--print @SQL
EXECUTE(@SQL)
Database Files Sizes in All Databases and used space
create table #Test (DbName sysname, TotalSize decimal(20,2), Used
decimal(20,2), [free space percentage] decimal(20,2))
declare @SQL nvarchar(max)
select @SQL = coalesce(@SQL,'') +
'USE ' + QUOTENAME(Name) + '
insert into #Test
select DB.name, ssf.size*8 as total,
FILEPROPERTY (AF.name, ''spaceused'')*8 as used,
((ssf.size*8) - (FILEPROPERTY (AF.name, ''spaceused'')*8))*100/(ssf.size*8)
as [free space percentage]
from sys.sysALTfiles AF
inner join sys.sysfiles ssf on ssf.name=AF.name COLLATE
SQL_Latin1_General_CP1_CI_AS
INNER JOIN sys.databases DB ON AF.dbid=DB.database_id
where ssf.groupid<>1' from sys.databases
execute(@SQL)
select * from #Test order by DbName
List all triggers in SQL Server database with table name and table's
schem
SELECT
sysobjects.name AS trigger_name
,USER_NAME(sysobjects.uid) AS trigger_owner
,s.name AS table_schema
,OBJECT_NAME(parent_obj) AS table_name
,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects
INNER JOIN sysusers
ON sysobjects.uid = sysusers.uid
INNER JOIN sys.tables t
ON sysobjects.parent_obj = t.object_id
INNER JOIN sys.schemas s
ON t.schema_id = s.schema_id
WHERE sysobjects.type = 'TR'
List all the count of Tables,Stored Procedures,Views
DECLARE @DBName AS VARCHAR (100)
DECLARE @TotalUserTables INT
DECLARE @TotalStoredProcedures INT
DECLARE @TotalViews INT
CREATE TABLE #tblDBResults
(
DatabaseName VARCHAR(100)
,Item VARCHAR(50)
,Total_count INT
)
DECLARE @SQL VARCHAR(1000)
/* basic select statement */
DECLARE @SQLWithDB VARCHAR(1000)
/* select statement with USE db added */
SET @TotalUserTables = 0
SET @TotalStoredProcedures = 0
SET @TotalViews = 0
/* Use appropriate tables based on SQL Server version */
/* 8 = SQL 2000, otherwise assume 2005+ */
IF (SELECT LEFT(CAST(SERVERPROPERTY('ProductVersion') AS CHAR(1)), 1)
) = 8
BEGIN
-- Configure basic select statement (without 'USE db' part) for SQL 2000
servers
SET @SQL = 'SELECT DB_NAME(),
[type]
,total_count = COUNT(*)
FROM (SELECT type = CASE WHEN xtype = ''U'' THEN
''User tables''
WHEN xtype = ''V'' THEN
''Views''
WHEN xtype = ''P'' THEN
''Stored procs''
END
FROM sysobjects
WHERE xtype IN (''P'', ''U'', ''V'')
) s
GROUP BY type;'
DECLARE DatabasesCursor CURSOR
FOR
SELECT name
FROM sysdatabases
WHERE dbid > 4
AND (512 & status) <> 512
/* exclude system and offline databases */
END
ELSE
BEGIN
-- Configure basic select statement (without 'USE db' part) for SQL 2005+
servers
SET @SQL = 'SELECT DB_NAME(),
[type]
,total_count = COUNT(*)
FROM (SELECT type = CASE WHEN type = ''U'' THEN ''User
tables''
WHEN type = ''V'' THEN ''Views''
WHEN type = ''P'' THEN ''Stored
procs''
END
FROM sys.objects
WHERE type IN (''P'', ''U'', ''V'')
) s
GROUP BY type;'
DECLARE DatabasesCursor CURSOR
FOR
SELECT name
FROM sys.databases
WHERE Database_id > 4
AND sys.databases.state = 0
/* exclude system and offline databases */
END
OPEN DatabasesCursor
FETCH NEXT FROM DatabasesCursor INTO @DBName
WHILE @@fetch_status = 0
BEGIN
SET @SQLWithDB = 'USE [' + @DBName + '];' + CHAR(10) + CHAR(13)
+ @SQL
INSERT #tblDBResults
EXEC (@SQLWithDB)
FETCH NEXT FROM DatabasesCursor INTO @DBName
END
CLOSE DatabasesCursor
DEALLOCATE DatabasesCursor
SELECT Item
,SUM(Total_count) AS TotalItems
FROM #tblDBResults
GROUP BY [#tblDBResults].Item
ORDER BY [#tblDBResults].Item
DROP TABLE #tblDBResults
Count of all objects in all databases
declare @Qry nvarchar(max)
select @Qry = coalesce(@Qry + char(13) + char(10) + ' UNION ALL ','') + '
select ' + quotename([Name],'''') + ' as DBName, [AGGREGATE_FUNCTION],
[CHECK_CONSTRAINT],[DEFAULT_CONSTRAINT],
[FOREIGN_KEY_CONSTRAINT],
[SQL_SCALAR_FUNCTION],
[CLR_SCALAR_FUNCTION],
[CLR_TABLE_VALUED_FUNCTION],
[SQL_INLINE_TABLE_VALUED_FUNCTION],
[INTERNAL_TABLE],[SQL_STORED_PROCEDURE],[CLR_STORED_PROCEDURE],[PLAN_GUIDE],[
PRIMARY_KEY_CONSTRAINT],
[RULE],[REPLICATION_FILTER_PROCEDURE],[SYNONYM],[SERVICE_QUEUE],[CLR_TRIGGER]
,[SQL_TABLE_VALUED_FUNCTION],[SQL_TRIGGER],
[TABLE_TYPE],[USER_TABLE],[UNIQUE_CONSTRAINT],[VIEW],[EXTENDED_STORED_PROCEDU
RE]
from (select [Name], type_Desc from ' + quotename([Name]) + '.sys.objects
where is_ms_shipped = 0) src
PIVOT (count([Name]) FOR type_desc in ([AGGREGATE_FUNCTION],
[CHECK_CONSTRAINT],[DEFAULT_CONSTRAINT],
[FOREIGN_KEY_CONSTRAINT],
[SQL_SCALAR_FUNCTION],
[CLR_SCALAR_FUNCTION],
[CLR_TABLE_VALUED_FUNCTION],
[SQL_INLINE_TABLE_VALUED_FUNCTION],
[INTERNAL_TABLE],[SQL_STORED_PROCEDURE],[CLR_STORED_PROCEDURE],[PLAN_GUIDE],[
PRIMARY_KEY_CONSTRAINT],
[RULE],[REPLICATION_FILTER_PROCEDURE],[SYNONYM],[SERVICE_QUEUE],[CLR_TRIGGER]
,[SQL_TABLE_VALUED_FUNCTION],[SQL_TRIGGER],
[TABLE_TYPE],[USER_TABLE],[UNIQUE_CONSTRAINT],[VIEW],[EXTENDED_STORED_PROCEDU
RE])) pvt' from sys.databases
where [name] NOT IN ('master','tempdb','model','msdb') order by [Name]
execute(@Qry)
Record Count in All Tables in All Databases
declare @SQL nvarchar(max)
set @SQL = ''
--select * from sys.databases
select @SQL = @SQL + CHAR(13) + 'USE ' + QUOTENAME([name]) + ';
SELECT ' +quotename([name],'''') + 'as [Database Name],
SchemaName=s.name
,TableName=t.name
,CreateDate=t.create_date
,ModifyDate=t.modify_date
,p.rows
,DataInKB=sum(a.used_pages)*8
FROM sys.schemas s
JOIN sys.tables t on s.schema_id=t.schema_id
JOIN sys.partitions p on t.object_id=p.object_id
JOIN sys.allocation_units a on a.container_id=p.partition_id
GROUP BY s.name, t.name, t.create_date, t.modify_date, p.rows
ORDER BY SchemaName, TableName' from sys.databases
execute (@SQL)
To Check the Log Shipping status.
EXEC sp_help_log_shipping_monitor
Script to check if the databases are configured for Mirroring
SELECT
A.name,
CASE
WHEN B.mirroring_state is NULL THEN 'Mirroring not configured'
ELSE 'Mirroring configured'
END as MirroringState
FROM
sys.databases A
INNER JOIN sys.database_mirroring B
ON A.database_id=B.database_id
WHERE a.database_id > 4
ORDER BY A.NAME
TO FIND COUNT FUNCTION AND INDEX AT INSTANCE LEVEL
SELECT 'USE '+ Name +
' SELECT '+''''+ Name +''''+ ' AS DBName' +' ,COUNT( i.Name) AS
Indexes,(SELECT COUNT(Name)
FROM sys.objects
WHERE Type = ''FN'' ) Functions
FROM sys.objects o
INNER JOIN sys.indexes i ON o.object_id = i.object_id
WHERE o.Type = ''U'' ' FROM SYS.Databases
TO GET COUNT OF STOREDPROCEDURE,TRIGGERS,VIEW AT
INSTANCE LEVEL
declare @Qry nvarchar(max)
select @Qry =coalesce(@Qry +char(13)+char(10)+' UNION ALL ','')+'
select '+quotename([Name],'''')+' as DBName,
[SQL_STORED_PROCEDURE],[SQL_TRIGGER],
[VIEW]
from (select [Name], type_Desc from '+quotename([Name])+'.sys.objects where
is_ms_shipped = 0) src
PIVOT (count([Name]) FOR type_desc in ([SQL_STORED_PROCEDURE],[SQL_TRIGGER],
[VIEW])) pvt'from sys.databases
where [name] NOT IN('master','tempdb','model','msdb') order by [Name]
execute(@Qry)
Table counts in instance level
declare @t table(
DBName sysname,
NumTables int
)
insertinto @t
execsp_MSforeachdb N'select ''?'', count(*)
from [?].dbo.sysobjects
where type = ''U'''
select DBName, NumTables
from @t
where DBName notin('distribution','master','model','msdb','tempdb')
orderby DBName
selectSUM(NumTables)as TotalTables
from @t
where DBName notin('distribution','master','model','msdb','tempdb')
To find view,sp’s, ,triggers AT INSTANCE LEVEL
declare @Qry nvarchar(max)
select @Qry =coalesce(@Qry +char(13)+char(10)+' UNION ALL ','')+'
select '+quotename([Name],'''')+' as DBName,
[SQL_STORED_PROCEDURE],[SQL_TRIGGER],
[VIEW]
from (select [Name], type_Desc from '+quotename([Name])+'.sys.objects where
is_ms_shipped = 0) src
PIVOT (count([Name]) FOR type_desc in ([SQL_STORED_PROCEDURE],[SQL_TRIGGER],
[VIEW])) pvt'fromsys.databases
where [name] NOTIN('master','tempdb','model','msdb')orderby [Name]
execute(@Qry)
to find count function and index AT INSTANCE level
SELECT 'USE '+ Name +
' SELECT '+''''+ Name +''''+ ' AS DBName' +' ,COUNT( i.Name) AS
Indexes,(SELECT COUNT(Name)
FROM sys.objects
WHERE Type = ''FN'' ) Functions
FROM sys.objects o
INNER JOIN sys.indexes i ON o.object_id = i.object_id
WHERE o.Type = ''U'' ' FROM SYS.Databases
to find datbase owner in instance level.
select name asDatabaseName,SUSER_SName(sid) asDatabase_Owner from
sysdatabases
how to change databases owner as 'sa' AT INSTANCE LVEL
EXEC sp_MSforeachdb 'EXEC [?]..sp_changedbowner ''sa'''
Finding mirror databases at instance level
SELECT
A.name,
CASE
WHEN B.mirroring_state is NULL THEN'Mirroring not configured'
ELSE'Mirroring configured'
END as MirroringState
FROM
sys.databases A
INNER JOIN sys.database_mirroring B ON A.database_id = B.database_id
WHERE a.database_id > 4
ORDER BY A.NAME
--Query to list out the Log Shipping Jobs--
SELECT *
FROM msdb.dbo.sysjobs
WHERE category_id = 6
--Query to check the job history error messages if any
SELECT *
FROM [msdb].[dbo].[sysjobhistory]
WHERE [message] like '%Operating system error%'
--Query to check the Log Shipping errors
SELECT *
FROM [msdb].[dbo].[log_shipping_monitor_error_detail]
WHERE [message] like '%Operating system error%'
To get a list of database users, role memberships for all databases--
DECLARE @name sysname,
@sql nvarchar(4000),
@maxlen1 smallint,
@maxlen2 smallint,
@maxlen3 smallint
IF EXISTS (SELECT TABLE_NAME FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE
TABLE_NAME LIKE '#tmpTable%')
DROP TABLE #tmpTable
CREATE TABLE #tmpTable
(
DBName sysname NOT NULL ,
UserName sysname NOT NULL,
RoleName sysname NOT NULL
)
DECLARE c1 CURSOR for
SELECT name FROM master.sys.databases
OPEN c1
FETCH c1 INTO @name
WHILE @@FETCH_STATUS >= 0
BEGIN
SELECT @sql =
'INSERT INTO #tmpTable
SELECT N'''+ @name + ''', a.name, c.name
FROM [' + @name + '].sys.database_principals a
JOIN [' + @name + '].sys.database_role_members b ON b.member_principal_id =
a.principal_id
JOIN [' + @name + '].sys.database_principals c ON c.principal_id =
b.role_principal_id
WHERE a.name != ''dbo'''
EXECUTE (@sql)
FETCH c1 INTO @name
END
CLOSE c1
DEALLOCATE c1
SELECT @maxlen1 = (MAX(LEN(COALESCE(DBName, 'NULL'))) + 2)
FROM #tmpTable
SELECT @maxlen2 = (MAX(LEN(COALESCE(UserName, 'NULL'))) + 2)
FROM #tmpTable
SELECT @maxlen3 = (MAX(LEN(COALESCE(RoleName, 'NULL'))) + 2)
FROM #tmpTable
SET @sql = 'SELECT LEFT(DBName, ' + LTRIM(STR(@maxlen1)) + ') AS ''DB Name'', '
SET @sql = @sql + 'LEFT(UserName, ' + LTRIM(STR(@maxlen2)) + ') AS ''User Name'',
'
SET @sql = @sql + 'LEFT(RoleName, ' + LTRIM(STR(@maxlen3)) + ') AS ''Role Name''
'
SET @sql = @sql + 'FROM #tmpTable '
SET @sql = @sql + 'ORDER BY DBName, UserName'
EXEC(@sql)
list the databases and and the respective roles/privileges mapped for a
particular user
CREATE TABLE #tempww (LoginName nvarchar(max),
DBname nvarchar(max),
Username nvarchar(max),
AliasName nvarchar(max)
)
INSERT INTO #tempww
EXEC master..sp_msloginmappings
-- display results
SELECT*
FROM #tempww
ORDER BY dbname, username
-- cleanup
DROP TABLE #tempww
Check server configuration
SELECT name, value_in_use FROM sys.configurations
WHERE configuration_id IN (16391, 102, 400, 1562, 16386, 16385, 16390,
16393)
Database users, permissions and application roles
This will give a list of permissions for each user.
-- list of the users
EXEC sys.sp_helpuser
-- database permissions
EXEC sys.sp_helprotect
-- roles membership
EXEC sys.sp_helprolemember
-- list of the database application roles
SELECT name FROM sys.database_principals WHERE type = 'A'
DBCC Internal Database Snapshot Usage
DBCC CHECKALLOC DBCC CHECKDB
DBCC CHECKCATALOG DBCC CHECKFILEGROUP
DBCC CHECKTABLE
Informational Statements
DBCC INPUTBUFFER DBCC SHOWCONTIG
DBCC OPENTRAN DBCC SQLPERF
DBCC OUTPUTBUFFER DBCC TRACESTATUS
DBCC PROCCACHE DBCC USEROPTIONS
DBCC SHOW_STATISTICS
Validation Statements
DBCC CHECKALLOC DBCC CHECKFILEGROUP
DBCC CHECKCATALOG DBCC CHECKIDENT
DBCC CHECKCONSTRAINTS DBCC CHECKTABLE
DBCC CHECKDB
Maintenance Statements
DBCC CLEANTABLE DBCC INDEXDEFRAG
DBCC DBREINDEX DBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERS DBCC SHRINKFILE
DBCC FREEPROCCACHE DBCC UPDATEUSAGE
Miscellaneous Statements
DBCC dllname (FREE) DBCC HELP
DBCC FREESESSIONCACHE DBCC TRACEOFF
DBCC FREESYSTEMCACHE DBCC TRACEON
SQL Server 2012 Dynamic Management Views and Functions
Execution Related
sys.dm_exec_connections
sys.dm_exec_sessions
sys.dm_exec_requests
sys.dm_exec_cached_plans
sys.dm_exec_query_plans
sys.dm_exec_sql_text
sys.dm_exec_query_stats
Index Related
sys.dm_db_index_physical_stats
sys.dm_db_index_usage_stats
SQL Server Operating System
sys.dm_os_performance_counters
sys.dm_os_schedulers
sys.dm_os_nodes
sys.dm_os_waiting_tasks
sys.dm_os_wait_stats
I/O Related sys.dm_io_virtual_file_stats