Vous êtes sur la page 1sur 20

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

Vous aimerez peut-être aussi