0% found this document useful (0 votes)
6 views9 pages

DBAT SQLCode180730

The document provides detailed SQL commands for managing databases, including restoring, backing up, and altering database properties for AdventureWorks2014. It covers user and role management, index creation and maintenance, data transfer methods, and performance monitoring techniques. Additionally, it discusses advanced topics such as contained databases, data compression, and diagnosing performance issues.

Uploaded by

rahuld.deb97
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views9 pages

DBAT SQLCode180730

The document provides detailed SQL commands for managing databases, including restoring, backing up, and altering database properties for AdventureWorks2014. It covers user and role management, index creation and maintenance, data transfer methods, and performance monitoring techniques. Additionally, it discusses advanced topics such as contained databases, data compression, and diagnosing performance issues.

Uploaded by

rahuld.deb97
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Restoring a Database

USE [master]
RESTORE DATABASE [AdventureWorks2014] FROM DISK = N'C:\DBA\
AdventureWorks2014.bak'
WITH FILE = 1, MOVE N'AdventureWorks2014_Data' TO
N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\
AdventureWorks2014_Data.mdf',
MOVE N'AdventureWorks2014_Log' TO
N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\
AdventureWorks2014_Log.ldf'
Backing up Database
BACKUP DATABASE [AdventureWorks2014] TO DISK = N'C:\DBA\AdventureWorksBackup2'
WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2014-Full Database Backup', SKIP,
NOREWIND, NOUNLOAD, STATS = 10
GO

Change Recovery Model


ALTER DATABASE [AdventureWorks2014] SET RECOVERY FULL WITH NO_WAIT
GO

Backing up in SSMS
BACKUP DATABASE [AdventureWorks2014]
TO DISK = N'C:\DBA\AdventureWorksBackup2' WITH DIFFERENTIAL
, NOFORMAT, NOINIT, NAME = N'AdventureWorks2014-Full Database Backup'
, SKIP, NOREWIND, NOUNLOAD, STATS = 10

BACKUP LOG [AdventureWorks2014] TO DISK = N'C:\DBA\AdventureWorksBackup2'


WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2014-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10

Using NORECOVERY and RECOVERY


restore database [AdventureWorks2014] with recovery

BACKUP LOG [AdventureWorks2014] TO DISK = N'C:\Program Files\Microsoft SQL


Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\AdventureWorks2014_LogBackup_2018-07-
31_18-35-51.bak' WITH NOFORMAT, NOINIT, NAME =
N'AdventureWorks2014_LogBackup_2018-07-31_18-35-51', NOSKIP, NOREWIND, NOUNLOAD,
STATS = 5
RESTORE DATABASE [AdventureWorks2014backup2] FROM DISK = N'C:\DBA\
AdventureWorksBackup2' WITH FILE = 2, MOVE N'AdventureWorks2014_Data' TO N'C:\
Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\
AdventureWorks2014backup2_Data.mdf', MOVE N'AdventureWorks2014_Log' TO N'C:\
Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\
AdventureWorks2014backup2_Log.ldf', NORECOVERY, NOUNLOAD, STATS = 5
RESTORE DATABASE [AdventureWorks2014backup2] FROM DISK = N'C:\DBA\
AdventureWorksBackup2' WITH FILE = 5, NORECOVERY, NOUNLOAD, STATS = 5
RESTORE LOG [AdventureWorks2014backup2] FROM DISK = N'C:\DBA\
AdventureWorksBackup2' WITH FILE = 6, NORECOVERY, NOUNLOAD, STATS = 5
RESTORE LOG [AdventureWorks2014backup2] FROM DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\
AdventureWorks2014_LogBackup_2018-07-30_22-21-00.bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5
RESTORE LOG [AdventureWorks2014backup2] FROM DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\
AdventureWorks2014_LogBackup_2018-07-30_22-28-32.bak'
WITH FILE = 1, NOUNLOAD, STATS = 5
13d. Recover from a corrupted Drive
ALTER DATABASE [AdventureWorks2014backup3] SET SINGLE_USER WITH ROLLBACK
IMMEDIATE
DBCC CHECKDB ([AdventureWorks2014backup3], REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE [AdventureWorks2014backup3] SET MULTI_USER;

Logins and Users


17c. Create Login accounts
CREATE LOGIN [DESKTOP-KBB0EE5\SQLTest] FROM WINDOWS WITH
DEFAULT_DATABASE=[AdventureWorks2014]
GO
17b. Secure the SQL Server with server roles
ALTER SERVER ROLE [sysadmin] ADD MEMBER [DESKTOP-KBB0EE5\SQLTest]
GO

17e. Create and Maintain User-Defined Server Roles


CREATE SERVER ROLE [MyServerRole2]
GO

ALTER SERVER ROLE [MyServerRole2] ADD MEMBER [DESKTOP-KBB0EE5\SQLTest]


GO

use [master]
GO

DENY ALTER ANY LOGIN TO [MyServerRole2]


GO

19c. Create Database User Accounts


USE [AdventureWorks2014]
GO
CREATE USER [SQLTest] FOR LOGIN [DESKTOP-KBB0EE5\SQLTest] WITH
DEFAULT_SCHEMA=[dbo]
GO

Add Users to Fixed Database Roles


ALTER ROLE [db_datareader] ADD MEMBER [SQLTest]
GO
Create User Database-Level Roles
USE [AdventureWorks2014]
GO
CREATE ROLE [MyNewDatabaseRole]
GO
USE [AdventureWorks2014]
GO
ALTER ROLE [MyNewDatabaseRole] ADD MEMBER [SQLTest]
GO
use [AdventureWorks2014]
GO
DENY SELECT ON [HumanResources].[Employee] TO [MyNewDatabaseRole]
GO
use [AdventureWorks2014]
GO
GRANT SELECT ON [HumanResources].[Department] TO [MyNewDatabaseRole]
GO

Schema
USE [AdventureWorks2014]
GO
CREATE SCHEMA [MyNewSchema] AUTHORIZATION [SQLTest]
GO
15d. Implement indexes
USE [AdventureWorks2014]

GO

CREATE CLUSTERED INDEX [IX_NewTable_ID] ON [dbo].[NewTable]


[ID])

GO

CREATE NONCLUSTERED INDEX [IX_NewTable_Color] ON [dbo].[NewTable]


(ColorName] ASC)
INCLUDE ([ObjectName])

GO

DROP INDEX [IX_NewTable_Color] ON [dbo].[NewTable]


GO
15e. Defrag/Rebuild indexes
USE [AdventureWorks2014]
GO
ALTER INDEX [IX_NewTable_ID] ON [dbo].[NewTable] REBUILD WITH (ONLINE = ON)
GO
ALTER INDEX [IX_NewTable_ID] ON [dbo].[NewTable] REORGANIZE
GO

select *
from sys.dm_db_index_physical_stats(DB_ID('AdventureWorks2014')
,object_id(N'[Person].[Address]'),null,null,null) as stats
join sys.indexes as i
on stats.object_id = i.object_id and stats.index_id = i.index_id

USE [AdventureWorks2014]
GO
ALTER INDEX [PK_Address_AddressID] ON [Person].[Address] REORGANIZE WITH (
LOB_COMPACTION = ON )
GO
ALTER INDEX [AK_Address_rowguid] ON [Person].[Address] REORGANIZE WITH (
LOB_COMPACTION = ON )
GO
ALTER INDEX
[IX_Address_AddressLine1_AddressLine2_City_StateProvinceID_PostalCode] ON
[Person].[Address] REORGANIZE WITH ( LOB_COMPACTION = ON )
GO
ALTER INDEX [IX_Address_StateProvinceID] ON [Person].[Address] REORGANIZE WITH (
LOB_COMPACTION = ON )
GO
15c. Identify unused indexes
select object_name(u.object_id) as [Object Name], *
from sys.dm_db_index_usage_stats as U
join sys.indexes as I
on u.object_id = i.object_id and u.index_id = i.index_id

15h. Create Statistics


create statistics St_NewTable on [dbo].[NewTable] ([ColorName])
where [ColorName] is not null

16a. Transfer data


EXEC master.dbo.sp_detach_db @dbname = N'AdventureWorks2014backup'
GO
CREATE DATABASE [AdventureWorks2014backup] ON
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\
DATA\AdventureWorks2014backup_Data.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\
DATA\AdventureWorks2014backup_Log.ldf' )
FOR ATTACH
GO

16b. Bulk Copy


bcp AdventureWorks2014.dbo.NewTable in “c:\dba\BCPOut.dat” -T -c

bcp AdventureWorks2014.dbo.NewTable2 out “c:\dba\BCPOut.dat” -T -c

16c. Bulk Insert


bulk insert [dbo].[FlatFile3]
from 'c:\dba\FlatFile.txt'
with
(FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW = 2
)

5b. Administer jobs


USE msdb
GO

select * from sysjobsteps


select * from syssessions
select * from sysjobactivity
select * from sysjobhistory
select * from sysschedules

5b. Administer Alerts


exec sp_addmessage 50001, 16, 'I am raising an alert'
select * from sys.messages

RAISERROR (50001, 16, 1) WITH LOG

Manage and configure databases


6a. Design multiple file groups
CREATE DATABASE [DBAdatabase]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'DBAdatabase', FILENAME =
N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\
DBAdatabase.mdf'
, SIZE = 102400KB , FILEGROWTH = 65536KB ),
FILEGROUP [Secondary]
( NAME = N'DBAdatabase2', FILENAME =
N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\
DBAdatabase2.ndf'
, SIZE = 102400KB , FILEGROWTH = 65536KB )
LOG ON
( NAME = N'DBAdatabase_log', FILENAME =
N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\
DBAdatabase_log.ldf'
, SIZE = 8192KB , FILEGROWTH = 65536KB )
GO

IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name =
N'Secondary')
ALTER DATABASE [DBAdatabase] MODIFY FILEGROUP [Secondary] DEFAULT
GO

6c. Moving objects from one filegroup to another


--Creating new Clustered Index on a different filegroup
CREATE CLUSTERED INDEX [ClusteredIndex-20180805-100419] ON [dbo].[tblTable]
(
[Heading1] ASC,
[Heading2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [Third]

GO

--Creating new table and specifying filegroup


create table dbo.tblTable2
(Heading1 int,
Heading2 int)
ON [Third]

--Moving an existing index to a different filegroup


CREATE CLUSTERED INDEX [ClusteredIndex-20180805-100419] ON [dbo].[tblTable]
(
[Heading1] ASC,
[Heading2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF
, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [Secondary]

GO
13e, 14d-e. Managing and restoring a multi-TB database
BACKUP DATABASE [DBAdatabase] FILEGROUP = N'Secondary' TO
DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\
DBAdatabase.bak'
WITH NOFORMAT, NOINIT, NAME = N'DBAdatabase-Full Database Backup', SKIP,
NOREWIND, NOUNLOAD, STATS = 10
GO

RESTORE DATABASE [DBAdatabase] FILE = N'DBAdatabase2'


FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\
Backup\DBAdatabase.bak'
WITH FILE = 1, NOUNLOAD, STATS = 10
GO

RESTORE DATABASE [AdventureWorks2014] PAGE='23:34' FROM DISK = N'C:\Program


Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\
AdventureWorks2014_LogBackup_2018-07-31_18-35-51.bak' WITH FILE = 6,
NORECOVERY, NOUNLOAD, STATS = 5

6h. Manage Log File Growth


select *
from sys.dm_db_log_space_usage

select *
from sys.databases

dbcc shrinkfile(DBAdatabase_log, 3)

6i. DBCC
dbcc shrinkdatabase([DBAdatabase],20)
select * from sys.database_files

dbcc shrinkfile(3, truncateonly)


dbcc shrinkfile(DBAdatabase3, emptyfile)
19d. Contained login
EXEC sys.sp_configure N'contained database authentication', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO

6d, 19d. Implement and configure contained databases


sp_configure 'show advanced options', 1
go
RECONFIGURE
GO
EXEC sys.sp_configure N'contained database authentication', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'show advanced options', 0
go
RECONFIGURE
GO
ALTER DATABASE [DBAdatabase] SET CONTAINMENT = PARTIAL
GO

USE [DBAdatabase]
GO
CREATE USER [ContainedUser] WITH PASSWORD=N'Passw0rd!'
GO
6e. Data Compression
USE [AdventureWorks2014]
ALTER INDEX [IX_Employee_OrganizationNode] ON [HumanResources].[Employee]
REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
DATA_COMPRESSION = PAGE)

select *
from sys.indexes
where object_name(object_id)='Department'

exec sp_estimate_data_compression_savings
'HumanResources', 'Department', 2, NULL, 'PAGE'

15k. Column store indexes


CREATE NONCLUSTERED COLUMNSTORE INDEX [NonClusteredColumnStoreIndex-20180805-
151345]
ON [dbo].[tblPartition]
(
[DateOfEntry]
)WITH (DROP_EXISTING = OFF, COMPRESSION_DELAY = 0)

GO
10d. Diagnose blocking, live locking and deadlocking
--Session 1
begin tran
update [dbo].[FlatFile]
set Heading1 = heading1+1

--Session 2
begin tran
update [dbo].[FlatFile2]
set Heading1 = heading1+1

select *
from [dbo].[FlatFile]

--Session 1
begin tran
update [dbo].[FlatFile2]
set Heading1 = heading1+1

10c. Monitor via DMV or other MS product; 10e. diagnose waits


exec sp_who2
--kill 59

select *
from sys.databases

select resource_type, request_status, request_mode, resource_description,


request_session_id
from sys.dm_tran_locks
where resource_database_id = 5 and request_session_id in (58, 59)

select *
from sys.dm_os_waiting_tasks
where session_id in (58, 59)

select *
from sys.dm_exec_requests

10f, 10g. Performance detection with built in DMVs


select * --CPU
from sys.dm_os_schedulers
where scheduler_id <256

select count(database_id)*8/1024.0 as [Cache in Mb], database_id --Buffer


Pool/Data Cache
from sys.dm_os_buffer_descriptors
group by database_id

select *
from sys.sysperfinfo
where object_name like 'SQLServer:Buffer Manager%'
order by counter_name

11b. Collect performance data by using System Monitor


diskperf -Y

12e. Monitor elevated privileges as well as unsolicited attempts to


connect
select prin.name, perm.*
from sys.server_permissions as perm
join sys.server_principals as prin
on perm.grantee_principal_id = prin.principal_id

EXEC sys.sp_configure N'show advanced options', N'1' RECONFIGURE WITH OVERRIDE


GO
EXEC sys.sp_configure N'common criteria compliance enabled', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0' RECONFIGURE WITH OVERRIDE
GO

exec xp_readerrorlog 2

4b. Full Text Index


select *
from [Person].[Address]
where CONTAINS(AddressLine1, 'Drive NEAR Glaze')

4c. SSIS Security


USE msdb
go
select *
from sysssispackages
select *
from sysssislog

4d. Filestream
EXEC sp_configure filestream_access_level, 2
RECONFIGURE

CREATE DATABASE [Filestream]


CONTAINMENT = NONE
ON PRIMARY
( NAME = N'Filestream', FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL14.MSSQLSERVER\MSSQL\DATA\Filestream.mdf' , SIZE = 8192KB , FILEGROWTH =
65536KB ),
FILEGROUP [FilestreamData] CONTAINS FILESTREAM
( NAME = N'FilestreamData', FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL14.MSSQLSERVER\MSSQL\DATA\FilestreamData' )
LOG ON
( NAME = N'Filestream_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL14.MSSQLSERVER\MSSQL\DATA\Filestream_log.ldf' , SIZE = 8192KB , FILEGROWTH =
65536KB )
GO

You might also like