Script to get data files size, used space
and free space
select
DBName,
name,
[filename],
size as 'Size(MB)',
usedspace
as 'UsedSpace(MB)',
(size - usedspace) as 'AvailableFreeSpace(MB)'
from
(
SELECT
db_name(s.database_id) as DBName,
s.name AS [Name],
s.physical_name AS [FileName],
(s.size * CONVERT(float,8))/1024 AS [Size],
(CAST(CASE s.type WHEN 2 THEN 0 ELSE CAST(FILEPROPERTY(s.name,
'SpaceUsed') AS float)*
CONVERT(float,8) END AS float))/1024 AS [UsedSpace],
s.file_id AS [ID]
FROM
sys.filegroups AS g
INNER JOIN sys.master_files AS s ON ((s.type = 2 or s.type = 0) and s.database_id = db_id()
and (s.drop_lsn
IS NULL))
AND (s.data_space_id=g.data_space_id)
) DBFileSizeInfo
Script to get the SQL Server Installation
Date and Authentication Mode
select createdate as
InstallationDate ,
CASE SERVERPROPERTY('IsIntegratedSecurityOnly')
WHEN 1 THEN 'Windows Authentication'
WHEN 0 THEN 'Windows and SQL Server Authentication'
END as
[AuthenticationMode],
SERVERPROPERTY('servername') as svrName
from master..syslogins where name like 'NT AUTHORITY\SYSTEM'
Query to check the SQL Evaluation Version Expire
Date
SELECT create_date as
'SQL Server Installation Date',
DATEADD(dd,180,create_date) as 'Expiration Date'
FROM sys.server_principals WHERE name='NT AUTHORITY\SYSTEM'
Script to find out Stored Procedures which
are Using most resources
SELECT DB_NAME(database_id) AS DatabaseName
,OBJECT_SCHEMA_NAME(object_id,database_id) AS [SCHEMA_NAME]
,OBJECT_NAME(object_id,database_id)AS [OBJECT_NAME]
,cached_time
,last_execution_time
,execution_count
,total_worker_time
/ execution_count AS
Average_CPU
,total_elapsed_time
/ execution_count AS
Average_Elapsed_Time
,total_logical_reads
/ execution_count AS
Average_Logical_Reads
,total_logical_writes
/ execution_count AS
Average_Logical_Writes
,total_physical_reads /
execution_count AS Average_Physical_Reads
FROM sys.dm_exec_procedure_stats
where database_id <>
32767
ORDER BY Average_Logical_Reads DESC
Script to get the database backup history
SELECT
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_start_date,
msdb.dbo.backupset.backup_finish_date,
msdb.dbo.backupset.expiration_date,
CASE msdb..backupset.type
WHEN 'D' THEN 'Database'
WHEN 'L' THEN 'Log'
END AS backup_type,
msdb.dbo.backupmediafamily.logical_device_name,
msdb.dbo.backupmediafamily.physical_device_name,
msdb.dbo.backupset.name AS backupset_name,
msdb.dbo.backupset.description
FROM
msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE
(CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= '2013-01-08
00:04:49.000') and (CONVERT(datetime, msdb.dbo.backupset.backup_start_date,
102) <= '2013-01-08 23:59:59')
and
msdb.dbo.backupset.database_name = 'Mention the database name'
ORDER BY
msdb.dbo.backupset.backup_finish_date
desc
SA account property/password change
USE Master
GO
SELECT [name],
sid,
create_date, modify_date
FROM sys.sql_logins
WHERE [name] =
'sa'
GO
Get the List of DBCC Commands & Syntax
If you don’t remember
all the DBCC commands “NO Issue” execute the DBCC HELPcommand
to get the list of all the DBCC.
DBCC
HELP('?')
Script to check – Login Name and Password
are same
It is always a risk if
the user name & password is equal. You can run the below script to find out
the list of User/Login name & password which are equal.
select
cast(@@SERVERNAME as varchar(150)) as SQLInstanceName
,name as
[LoginName]
,'Password is same as Login
Name' [Description]
from sys.syslogins
WHERE PWDCOMPARE (name,password) = 1
Script to get the SQL Server Properties
create table
#server(ID int, Name sysname null, Internal_Value int
null, Value nvarchar(512) null)
insert #server exec
master.dbo.xp_msver
declare @RegRootDir nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\MSSQLServer\Setup', N'SQLPath', @RegRootDir OUTPUT
SELECT
(select Value from #server where Name = N'ProductName') AS [Product],
SERVERPROPERTY(N'ProductVersion') AS [VersionString],
(select Value from #server where Name = N'Language') AS [Language],
(select Value from #server where Name = N'Platform') AS [Platform],
CAST(SERVERPROPERTY(N'Edition') AS sysname) AS [Edition],
(select Internal_Value from #server where Name = N'ProcessorCount') AS [Processors],
(select Value from #server where Name = N'WindowsVersion') AS [OSVersion],
(select Internal_Value from #server where Name = N'PhysicalMemory') AS [PhysicalMemory],
CAST(SERVERPROPERTY('IsClustered') AS bit) AS [IsClustered],
@RegRootDir
AS [RootDirectory],
convert(sysname, serverproperty(N'collation')) AS [Collation]
drop table #server
T-SQL Script to identify tables without
Primary Key
Use <Database Name>
SELECT SCHEMA_NAME(schema_id) AS [Schema Name], name AS [Table Name]
FROM sys.tables
WHERE OBJECTPROPERTY(OBJECT_ID,'TableHasPrimaryKey') = 0
Order by name
GO
T-SQL Script to identify the data, log and
backup drive
select
@@SERVERNAME as
svrName,
drivename,
drivedescription
from
(
select distinct SUBSTRING(filename,1,3) as drivename, 'data Drive' as drivedescription from
master..sysaltfiles where filename like '%.mdf'
union
select distinct SUBSTRING(filename,1,3) as drivename, 'Log Drive' as drivedescription from
master..sysaltfiles where filename like '%.ldf'
union
select distinct SUBSTRING(physical_device_name,1,3) as drivename, 'Backup Drive' as
drivedescription from msdb.dbo.backupmediafamily
where physical_device_name like '%.bak'
) tab1
Rename the database
EXEC sp_renamedb N'olddb', N'newdb';
Query to check the state of the DB
Mirroring
SELECT state_desc FROM sys.database_mirroring_endpoints
GO
Query to check the associated ports with DB
Mirroring
GO
SELECT type_desc,
port FROM sys.tcp_endpoints;
GO
How to Check When SQL Server was installed?
SELECT createdate AS
sql_server_install_date FROM sys.syslogins WHERE sid =
0x010100000000000512000000
SELECT * FROM sys.syslogins WHERE sid = 0x010100000000000512000000
Scripts which make you Database Hero
– Create
databsae SQLDBPool
CREATE DATABASE [sqldbpool] ON PRIMARY
( NAME = N’sqldbpool’, FILENAME = N’C:\sqldbpool.mdf’ , SIZE = 2048KB ,MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N’sqldbpool_log’, FILENAME = N’C:\sqldbpool_log.ldf’ , SIZE = 1024KB, MAXSIZE = 2048GB , FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
GO
CREATE DATABASE [sqldbpool] ON PRIMARY
( NAME = N’sqldbpool’, FILENAME = N’C:\sqldbpool.mdf’ , SIZE = 2048KB ,MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N’sqldbpool_log’, FILENAME = N’C:\sqldbpool_log.ldf’ , SIZE = 1024KB, MAXSIZE = 2048GB , FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
GO
–Script
to create schema
USE [sqldbpool]
GO
CREATE SCHEMA [mySQLDBPool] AUTHORIZATION [dbo]
USE [sqldbpool]
GO
CREATE SCHEMA [mySQLDBPool] AUTHORIZATION [dbo]
–
Script to create table with constraints
create table mySQLDBPool.Emp
(
EmpID int Primary key identity(100,1),
EmpName Varchar(20) Constraint UK1 Unique,
DOB datetime Not Null,
JoinDate datetime default getdate(),
Age int Constraint Ck1 Check (Age > 18)
)
create table mySQLDBPool.Emp
(
EmpID int Primary key identity(100,1),
EmpName Varchar(20) Constraint UK1 Unique,
DOB datetime Not Null,
JoinDate datetime default getdate(),
Age int Constraint Ck1 Check (Age > 18)
)
–
Script to change the recovery model of the databsae
USE [master]
GO
ALTER DATABASE [SQLDBPool] SET RECOVERY FULL WITH NO_WAIT
GO
USE [master]
GO
ALTER DATABASE [SQLDBPool] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [SQLDBPool] SET RECOVERY FULL
GO
GO
–
Script to take the full backup of database
BACKUP DATABASE [SQLDBPool] TO DISK = N’D:\SQLDBPool.bak’
WITH NOFORMAT, INIT, NAME = N’SQLDBPool-Full Database Backup’,
NOREWIND, SKIP, NOUNLOAD, STATS = 10
GO
BACKUP DATABASE [SQLDBPool] TO DISK = N’D:\SQLDBPool.bak’
WITH NOFORMAT, INIT, NAME = N’SQLDBPool-Full Database Backup’,
NOREWIND, SKIP, NOUNLOAD, STATS = 10
GO
–Script
to take the Differential Database backup
BACKUP DATABASE [SQLDBPool] TO DISK = N’D:\SQLDBPool.diff.bak’
WITH DIFFERENTIAL , NOFORMAT, INIT, NAME = N’SQLDBPool-Diff Backup’,
NOREWIND, SKIP, NOUNLOAD, STATS = 10
GO
BACKUP DATABASE [SQLDBPool] TO DISK = N’D:\SQLDBPool.diff.bak’
WITH DIFFERENTIAL , NOFORMAT, INIT, NAME = N’SQLDBPool-Diff Backup’,
NOREWIND, SKIP, NOUNLOAD, STATS = 10
GO
–Script
to take the Transaction Log backup that truncates the log
BACKUP LOG [SQLDBPool] TO DISK = N’D:\SQLDBPoolTlog.trn’
WITH NOFORMAT, INIT, NAME = N’SQLDBPool-Transaction Log Backup’,SKIP, NOREWIND,NOUNLOAD, STATS = 10
GO
BACKUP LOG [SQLDBPool] TO DISK = N’D:\SQLDBPoolTlog.trn’
WITH NOFORMAT, INIT, NAME = N’SQLDBPool-Transaction Log Backup’,SKIP, NOREWIND,NOUNLOAD, STATS = 10
GO
–
Backup the tail of the log (not normal procedure)
BACKUP LOG [SQLDBPool] TO DISK = N’D:\SQLDBPoolLog.tailLog.trn’
WITH NO_TRUNCATE , NOFORMAT, INIT, NAME = N’SQLDBPool-Transaction Log Backup’,NOREWIND,SKIP, NOUNLOAD, NORECOVERY , STATS = 10
GO
BACKUP LOG [SQLDBPool] TO DISK = N’D:\SQLDBPoolLog.tailLog.trn’
WITH NO_TRUNCATE , NOFORMAT, INIT, NAME = N’SQLDBPool-Transaction Log Backup’,NOREWIND,SKIP, NOUNLOAD, NORECOVERY , STATS = 10
GO
–
Script to Get the backup file properties
RESTORE FILELISTONLY FROM DISK = ‘D:\SQLDBPool.bak’
RESTORE FILELISTONLY FROM DISK = ‘D:\SQLDBPool.bak’
–
Script to Restore Full Database Backup
RESTORE DATABASE [SQLDBPool1] FROM DISK = N’D:\SQLDBPool.bak’
WITH FILE = 1, MOVE N’sqldbpool’ TO N’D:\SQLDBPooldata.mdf’,
MOVE N’sqldbpool_log’ TO N’D:\SQLDBPoollog_1.ldf’,
NOUNLOAD, STATS = 10
GO
RESTORE DATABASE [SQLDBPool1] FROM DISK = N’D:\SQLDBPool.bak’
WITH FILE = 1, MOVE N’sqldbpool’ TO N’D:\SQLDBPooldata.mdf’,
MOVE N’sqldbpool_log’ TO N’D:\SQLDBPoollog_1.ldf’,
NOUNLOAD, STATS = 10
GO
–
Script to delete the backup history of the specific databsae
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N’SQLDBPool1′
GO
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N’SQLDBPool1′
GO
– Full
restore with no recovery (status will be Restoring)
RESTORE DATABASE [SQLDBPool1] FROM DISK = N’D:\SQLDBPool.bak’
WITH FILE = 1, MOVE N’SQLDBPool’ TO N’D:\SQLDBPooldata.mdf’,
MOVE N’SQLDBPool_Log’ TO N’D:\SQLDBPoolLog_1.ldf’,
NORECOVERY, NOUNLOAD, STATS = 10
GO
RESTORE DATABASE [SQLDBPool1] FROM DISK = N’D:\SQLDBPool.bak’
WITH FILE = 1, MOVE N’SQLDBPool’ TO N’D:\SQLDBPooldata.mdf’,
MOVE N’SQLDBPool_Log’ TO N’D:\SQLDBPoolLog_1.ldf’,
NORECOVERY, NOUNLOAD, STATS = 10
GO
–
Restore transaction log with recovery
RESTORE LOG [SQLDBPool1] FROM DISK = N’D:\SQLDBPoolLog.trn’
WITH FILE = 1, NOUNLOAD, RECOVERY STATS = 10
GO
RESTORE LOG [SQLDBPool1] FROM DISK = N’D:\SQLDBPoolLog.trn’
WITH FILE = 1, NOUNLOAD, RECOVERY STATS = 10
GO
–Script
to bring the database online without restoring log backup
restore database sqldbpool with recovery
restore database sqldbpool with recovery
–Script
to detach database
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N’SQLDBPool’
GO
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N’SQLDBPool’
GO
–
Script to get the database information
sp_helpdb ‘SQLDBPOOL’
sp_helpdb ‘SQLDBPOOL’
–to Attach
database
USE [master]
GO
USE [master]
GO
CREATE DATABASE [SQLDBPool1] ON
( FILENAME = N’C:\SQLDBPool.mdf’ ),
( FILENAME = N’C:\SQLDBPool_Log.ldf’ )
FOR ATTACH
GO
( FILENAME = N’C:\SQLDBPool.mdf’ ),
( FILENAME = N’C:\SQLDBPool_Log.ldf’ )
FOR ATTACH
GO
USE SQLDBPool
GO
GO
– Get
Fragmentation info for each non heap table in SQLDBPool database
– Avg frag.in percent is External Fragmentation (above 10% is bad)
– Avg page space used in percent is Internal Fragmention (below 75% is bad)
– Avg frag.in percent is External Fragmentation (above 10% is bad)
– Avg page space used in percent is Internal Fragmention (below 75% is bad)
SELECT OBJECT_NAME(dt.object_id) AS ‘Table Name’ , si.name AS ‘Index Name’,
dt.avg_fragmentation_in_percent, dt.avg_page_space_used_in_percent
FROM
(SELECT object_id, index_id, avg_fragmentation_in_percent, avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(‘SQLDBPool’), NULL, NULL, NULL, ‘DETAILED’)
WHERE index_id <> 0) AS dt
INNER JOIN sys.indexes AS si
ON si.object_id = dt.object_id
AND si.index_id = dt.index_id
ORDER BY OBJECT_NAME(dt.object_id)
dt.avg_fragmentation_in_percent, dt.avg_page_space_used_in_percent
FROM
(SELECT object_id, index_id, avg_fragmentation_in_percent, avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(‘SQLDBPool’), NULL, NULL, NULL, ‘DETAILED’)
WHERE index_id <> 0) AS dt
INNER JOIN sys.indexes AS si
ON si.object_id = dt.object_id
AND si.index_id = dt.index_id
ORDER BY OBJECT_NAME(dt.object_id)
–
Script to Get Fragmention information for a single table
SELECT TableName = object_name(object_id), database_id, index_id, index_type_desc,avg_fragmentation_in_percent, fragment_count, page_count
FROM sys.dm_db_index_physical_stats (DB_ID(N’SQLDBPool’),OBJECT_ID(N’mySQLDBPool.Emp’), NULL, NULL , ‘LIMITED’);
SELECT TableName = object_name(object_id), database_id, index_id, index_type_desc,avg_fragmentation_in_percent, fragment_count, page_count
FROM sys.dm_db_index_physical_stats (DB_ID(N’SQLDBPool’),OBJECT_ID(N’mySQLDBPool.Emp’), NULL, NULL , ‘LIMITED’);
–script to get the index information
exec sp_helpindex [mySQLDBPool.Emp]
exec sp_helpindex [mySQLDBPool.Emp]
–Script
to Reorganize an index
ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto
REORGANIZE
GO
ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto
REORGANIZE
GO
–
Rebuild an index (offline mode)
ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,STATISTICS_NORECOMPUTE = ON);
ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,STATISTICS_NORECOMPUTE = ON);
–Script
to find which columns don’t have statistics
SELECT c.name AS ‘Column Name’
FROM sys.columns AS c
LEFT OUTER JOIN sys.stats_columns AS sc
ON sc.[object_id] = c.[object_id]
AND sc.column_id = c.column_id
WHERE c.[object_id] = OBJECT_ID(‘mySQLDBPool.Emp’)
AND sc.column_id IS NULL
ORDER BY c.column_id
SELECT c.name AS ‘Column Name’
FROM sys.columns AS c
LEFT OUTER JOIN sys.stats_columns AS sc
ON sc.[object_id] = c.[object_id]
AND sc.column_id = c.column_id
WHERE c.[object_id] = OBJECT_ID(‘mySQLDBPool.Emp’)
AND sc.column_id IS NULL
ORDER BY c.column_id
–
Create Statistics on DOB column
CREATE STATISTICS st_BirthDate
ON mySQLDBPool.Emp(DOB)
WITH FULLSCAN
CREATE STATISTICS st_BirthDate
ON mySQLDBPool.Emp(DOB)
WITH FULLSCAN
– When
were statistics on indexes last updated
SELECT ‘Index Name’ = i.name, ‘Statistics Date’ = STATS_DATE(i.object_id, i.index_id)
FROM sys.objects AS o WITH (NOLOCK)
JOIN sys.indexes AS i WITH (NOLOCK)
ON o.name = ‘Emp’
AND o.object_id = i.object_id
ORDER BY STATS_DATE(i.object_id, i.index_id);
SELECT ‘Index Name’ = i.name, ‘Statistics Date’ = STATS_DATE(i.object_id, i.index_id)
FROM sys.objects AS o WITH (NOLOCK)
JOIN sys.indexes AS i WITH (NOLOCK)
ON o.name = ‘Emp’
AND o.object_id = i.object_id
ORDER BY STATS_DATE(i.object_id, i.index_id);
–
Update statistics on all indexes in the table
UPDATE STATISTICS mySQLDBPool.Emp
WITH FULLSCAN
UPDATE STATISTICS mySQLDBPool.Emp
WITH FULLSCAN
– Script to shrink database
DBCC SHRINKDATABASE(N’SQLDBPool’ )
GO
–
Shrink data file (truncate only)
DBCC SHRINKFILE (N’SQLDBPool_Data’ , 0, TRUNCATEONLY)
GO
DBCC SHRINKFILE (N’SQLDBPool_Data’ , 0, TRUNCATEONLY)
GO
–
Script to shrink Shrink data file – Very Slow and Enhances the fragmentation
DBCC SHRINKFILE (N’SQLDBPool_Data’ , 10)
GO
– Script Shrink transaction log file
DBCC SHRINKFILE (N’SQLDBPool_Log’ , 0, TRUNCATEONLY)
GO
DBCC SHRINKFILE (N’SQLDBPool_Data’ , 10)
GO
– Script Shrink transaction log file
DBCC SHRINKFILE (N’SQLDBPool_Log’ , 0, TRUNCATEONLY)
GO
–
Script to create view
CREATE VIEW emp_view
AS
SELECT *
FROM mySQLDBPool.emp
CREATE VIEW emp_view
AS
SELECT *
FROM mySQLDBPool.emp
–rename table name
Old Table Name and New Table Name
EXEC sys.Sp_rename
‘empl’,
‘empInfo’
EXEC sys.Sp_rename
‘empl’,
‘empInfo’