You are on page 1of 383

Microsoft SQL Server

2012

1 Microsoft SQL Server 2012


2 Microsoft SQL Server 2012
3

Microsoft SQL Server 2012


4
5 Recovery Model
6
7
8 SQL Azure
9
10

()

11
12 SQL Server 2012
13 SQL Server
14 SQL Server Agent
15 SQL Server 2012
16 SQL Server 2012
17 SQL Server 2012
18 SQL Server 2012
19 SQL Server 2012
20 SQL Server 2012

1 Microsoft SQL Server 2012


SQL Server
SQL Server
SQL Server

1.1 SQL Server


SQL Server
SQL Server
SQL Server
SQL Server Edition
SQL Server

SQL Server






SQL Server
SQL Server 2012
Business Intelligence

SQL Server
SQL Server
Database Engine / Data Quality Services
Analysis Services / Data Mining
Reporting Services / Integration Services



Default instance
Named instance

SQL Server Edition


Premium Editions
Parallel Data Warehouse

Enterprise

Core Editions
Business Intelligence

Standard

Other Editions
Express

Compact

Developer

SQL Azure

Web

SQL Server
Version

Release Year

1.0

1989

1.1

1991

4.2

1992

4.21

1994

6.0

1995

6.5

1996

7.0

1998

2000

2000

2005

2005

2008

2008

2008 R2

2010

2012

2012

1.2 SQL Server

SQL Server Management Studio





Tabular Data Stream (TDS) Protocol
SQL Native Access Client (SNAC)
Transported by TCP/IP, Named Pipes, Shared Memory


Windows Logins/Windows Groups
SQL Server Logins

SQL Server Management Studio


SQL Server



SQL Server
Database Engine, Analysis Services, Reporting Services,
Integration Services, SQL Server Compact


Business Intelligence (BI)
Visual Studio 2010
Analysis Services Project
Integration Services project
Reporting Services project

SQL Server

1.3 SQL Server

SQL Server Configuration Manager


SQL Server Services
Network Ports and Listeners
Creating Server Aliases

SQL Server Configuration Manager


SQL Server
SQL Server

SQL Server Services

Windows


Windows

Network Ports and Listeners





Creating Server Aliases





SQL Server Profiler


Database Engine Tuning Advisor
Master Data Services Configuration Manager
Reporting Services Configuration Manager
Data Quality Services Client
SQL Server Error and Usage Reporting
PowerShell Provider
SQL Server Management Objects (SMO)

2 Microsoft SQL Server


2012

SQL Server

2.1 SQL Server

SQL Server
CPU

32 64

I/O

SQL Server
Users

Query Execution

Storage Engine
Query Execution

I/O ,


Storage Engine

SQL OS

CPU
Windows

SQL
CPU


SQL Server

32 64
SQL Server
4GB 32
4GB WOW 64
8TB 64

AWE extension 32
SQL Server 2012
Itanium
SQL Server performance 64
Edition


Buffer Pool SQL Server


8 K

SQL


I/O
I/O
Buffer cache

I/O
Buffer cache

2.2


I/O



CPU
30%


NUMA
SQL Server


SQL Server
I/O Data cache, Plan
cache

I/O





database mirroring

/

I/O
I/O

SAN based storage
RAID

I/O

2.3

I/O
SQLIOSIM
SQLIO


I/O

I/O
I/O
OLTP
OLAP

I/O subsystem


I/O

SQLIOSIM

GUI

SQLIO

I/O

3 Microsoft SQL
Server 2012


SQL Server

3.1


I/O
Virtualization


SQL Server 2012 Edition

Maximum Memory

Enterprise

Operating system max

Business Intelligence

64GB

Web

64GB for Database Engine,


4GB for Reporting Services

Express

1GB

Express with Advanced Services

1GB for Database Engine,


4GB for Reporting Services

32 4GB



Windows Server 2012
Windows Server 2008 R2 SP1
Windows 7 SP1
Windows Vista SP2

Domain controllers
64

.NET Framework 4.0 3.5 SP1


PowerShell 2.0
SQL Server Native Client
SQL Server
Windows Installer 4.5
Internet Explorer 6 SP1

Shared Memory
Named pipes
TCP/IP



Filegroup
Transaction logs RAID
array
tempdb


Service Account



Local Service Account



Service account



Windows Collations Windows Locale
SQL Server Collation
SQL
Default Collation Sort Rules
Collation

3.2 SQL Server






Service Pack Hotfixes


System State


SQL Server
Error

%programfiles%\Microsoft
SQL Server\110\Setup Bootstrap\Log


Global rules text
Component update
User-requested action

3.3
SQL Server
SQL Server

SQL Server




SQL Server
SQL Server Microsoft

Microsoft

Hotfixes
Cumulative Updates
Service Packs



Setup.exe /q /ACTION=CompleteImage /INSTANCENAME=MYNEWINST
/INSTANCEID=<MYINST> /SQLSVCACCOUNT="<DomainName\UserName>"
/SQLSVCPASSWORD="<StrongPassword>"
/SQLSYSADMINACCOUNTS="<DomainName\UserName>"
/AGTSVCACCOUNT="NT AUTHORITY\Network Service"
/IACCEPTSQLSERVERLICENSETERMS


Setup.exe /q /ACTION=upgrade /INSTANCENAME=MSSQLSERVER
/RSUPGRADEDATABASEACCOUNT="<Provide a SQL Server logon account
that can connect to the report server during upgrade>"
/RSUPGRADEPASSWORD="<Provide a password for the report server
upgrade account>" /ISSVCAccount="NT Authority\Network Service"
/IACCEPTSQLSERVERLICENSETERMS

4
SQL Server
Files FileGroups

4.1 SQL Server

SQL Server

SQL Server
Tempdb

SQL Server
HD1
.mdf
HD2

MyDB

.ndf

.ndf
.ldf

HD3
Image, Text

Primary FG

Secondary FG
Third FG



RAID



Log


Data, Log Tempdb



data Log

autogrowth

SQL Server
System
Db

User
Db

Distribution

Master

MSDB

Model

TempDB Resource

Adwork

AdWork
DW

Tempdb
Tempdb


workload SQL Server instance

I/O
tempdb 8

4.2 Files FileGroups



GUI
T-SQL Create database



Collation




Auto Options
Page Verify checksum
Recovery Model Full, Simple,
Bulk
State options Online/Offline,


0

Service account
Log




SSMS
Alter database
DBCC Checkdb Shrinkfile



auto-groth

Time-out


DBCC Shrinkdatabase, DBCC Shrinkfile



Primary filegroup .mdf
Other filegroup .ndf
Log file .ldf

1 File

Disk1

Primary filegroups
C:\mssql2k\data\My_db_primary.mdf

Disk2

FG1 filegroups
D:\mssql2k\data\My_db_secondary1.ndf

Disk3

FG2 filegroups
E:\mssql2k\data\My_db_secondary2.ndf

Disk4

Log File
F:\mssql2k\data\log1.ldf

2 filegroups

Disk1

Primary filegroups
C:\mssql2k\data\My_db_primary.mdf

Disk2

FG1 filegroups
D:\mssql2k\data\My_db_secondary1.ndf

Disk3
Disk4

E:\mssql2k\data\My_db_secondary2.ndf

Log File
F:\mssql2k\data\log1.ldf

3 filegroups RAID Controller

RAID
Cont.1

Primary filegroups
C:\mssql2k\data\My_db_primary.mdf RAID 1

RAID
Cont.2

FG1 filegroups
D:\mssql2k\data\My_db_secondary1.ndf RAID 5

RAID
Cont.3

E:\mssql2k\data\My_db_secondary2.ndf RAID 5

RAID
Cont. 4

Log File
F:\mssql2k\data\log1.ldf RAID 10

SAN
RAID1

RAID2

RAID3

RAID4

S1

S2

File filegroups
filegroups
Data file Transaction log
Transaction log filegroups
Datafile filegroup

File Filegroup
db1t.log

.mdf

db1.ndf

Primary FG

db11.ndf

db12.ndf

FG1
db1x.ndf

DB1
db2t.log
.mdf

Primary Fg
DB2

Db2.ndf

Db21.ndf

FG2DB1

Db22.ndf

Filegroup
Db1.log

Db1.mdf

Db2.ndf

Db3.ndf

Primary FG
Db4.ndf

DB1
Table1 (Fields/Records)
Taped1

Db5.ndf

Filegroup ( )

Db2.ndf

Db3.ndf

Db1.log

Db1.mdf

FG1
Primary FG
DB1

Db4.ndf

FG2

Table1 (Fields/Records)

Db5.ndf

File filegroups
Primary data files Transaction log
file
filegroups
Log files Data file Physical Disk
Data file Primary data file
Secondary data file data (
Technique FileGroup Table
FG )

Filegroup ()

Db3.ndf

Db2.ndf

Db1.log

Db1.mdf

FG1
Db4.ndf

Primary FG

FG2

DB1

Tape2
Tape1

Tape3

Db5.ndf

4.3

detach attach


detach attach
detach


Data Log
Detach/Attach
Alter Database
Detach/Attach


Offline



Master
SQL Server services

Alter database



Backup Restore
Detach Attach
Copy Database Wizard

Copy Database Wizard



logins, jobs, maintenance
plans, user-defined error message
SQL Agent Job

5 Recovery Model

Transaction log

5.1




Data based Backups (Full, Differential, Copy, Filegroup, File)
Log based Backups (Log , Tail Log)

? (RTO)
? (RPO)

5.2 Transaction log

SQL Server Transaction Logs


Transaction Log

Transaction Logs
Checkpoint Options

SQL Server Transaction Logs


Transaction logs provide a history of actions executed by a database management system to
guarantee Atomicity and Durability properties

Data modification is
sent by application

3
Buffer Cache

Modification is recorded
in transaction log on disk

Data pages are located in,


or read into, the buffer cache
and then modified

Later, checkpoint
writes dirty pages
to database

Transaction Log



Transaction logs
Truncation Logs


Recovery Model

Simple

Truncates

Full

Bulk Logged

Transaction Logs

Recovery Model
Transaction log Full Bulk
Transactions

Checkpoint Options
Checkpoint
Automatic
Indirect
Manual
Internal

CheckPoint

5.3

Microsoft SQL Server


Full
Transaction log
Differential


DB
Full-Backup

Full
Differential-Backup
Transaction
Transaction log

Full + Diff
Mon

Full

Tue

Wed

Thus

Fri

Diff1

Diff2

Diff3

Diff4

Backup

Full

Diff2

Full + Transaction Log

Mon

Full

Tue

Wed

Thus

Tr1

Tr2

Tr3

Fri

Tr4

Backup
Full

Tr1

Tr2

Tr3

Full + Diff +Transaction Log

Mon

Full

Tue

Wed

Thus

Tr1

Diff1

Tr2

Backup
Full

Diff1

Tr2

Tr3

Fri

Tr3

6
Transaction log

Backup

6.1 Transaction log

Full Database

Differential
Transaction Log

Full Database
Full
Log
BACKUP DATABASE {database_name |
@database_name_var}
TO <backup_device> [, ...n]
[WITH
[FORMAT]
[[,] {INIT | NOINIT}]]
]


Meta
mirrored Enterprise Edition




SQL Server 2008

I/O CPU



NT

Differential
Full
Full Backup

Transaction log

differential
BACKUP DATABASE AdventureWorks
TO DISK = 'L:\SQLBackups\AW_Diff.bak'
WITH DIFFERENTIAL, INIT;

Transaction Log
Transaction log
Transaction

Truncates Options
Full Bulk-logged
BACKUP LOG AdventureWorks
TO DISK = 'L:\SQLBackups\AW_Log.bak'
WITH NOINIT;

6.2


Mirrored Media Sets
Mirrored 4
Mirrors
Enterprise Edition

Checksum

checksum


Restore verifyonly
Checksum option


SQL Server
msdb T-sql SSMS

Restore Labelonly
Restore Headeronly

Restore Filelistonly

6.3 Backup





I/O


Transaction log
Log


SQL Writer Service Volume Shadow Copy Service (VSS)
framework
VDI ISVs 3



Copy-only Truncate
Full Model
Copy-only Full


Differential
BACKUP DATABASE AdventureWorks
TO DISK = 'L:\SQLBackups\AW_Copy.bak'
WITH COPY_ONLY, INIT;



Log

Options
NoRecovery

(
Recovering)
Continue_after_error



Point-in-time

7.1



Simple Recovery model
Full Recovery Model


Advanced Online, Piecemeal, Page
Restore


Tail-log
Full Bulk-logged recovery model


Full , File Filegroup
Differential
Full Bulk-logged recovery model

7.2


With recovery

Transaction log
With Standby


3

Redo Transaction
Undo

Redo Undo

With recovery

With recovery (default)
Online
With norecovery


With norecovery
With recovery


Full differential
Restore database
Differential
With norecovery Transaction
log
RESTORE DATABASE
AdventureWorks
FROM DISK =
'D:\SQLBackups\AW.bak'
WITH RECOVERY;

Transaction log
Transaction log Restore log
log

RESTORE LOG Payroll


FROM DISK =
'D:\SQLBackups\PayrollLogs.bak'
WITH NORECOVERY;

With Standby
read-only

undo

Standby Log
shipping
Log

RESTORE LOG Payroll


FROM DISK = 'D:\Backups\PyLg.bak'
WITH STANDBY = 'D:\Backups\ULog.bak';

7.3 Point-in-time
Point-in-time Recovery
Stopat
Stopatmark

Point-in-time Recovery

Transaction log Point in time
Point in time
Transaction
Full recovery model
Logs Bulk_logged
Log

Stopat
SQL Server Management Studio (SSMS)
T-SQL
Stopat with recovery
transaction
point in time

Point in time
Point in time

Stopatmark

Transactions marked
Begin tran <name> with mark <description>


Stopatmark
Stopbeforemark

Mark Transaction log backup


7.4
System Database
master database
filegroup

System Database
Master > Metadata

Login Information, Error Message, Linkserver (


System SP ) Primary File

MSDB > Master Alert, Job, Schedule


SQL Server Agent

Distribution > replication


Model > (Database Template)
DB

TempDB > Temporary process


data
shutdown

Master

Server instance single user mode


restore database Master d]y[,kd
SQLCMD

If SQL Server instance is accessible


1. Backup
Master DB
Stop Server
Studio..

2. Path
run (Single
Connection Mode)

If SQL Server instance is accessible


cont.

3. Result Connection

4. Master DB
SQL CMD

If SQL Server instance is accessible


cont.

5. Start Service

FileGroup

Backup (Tail-log)
filegroup
Differential
Transaction log

Full/Bulk-logged)

8 SQL Azure
/ SQL Server

8.1 / SQL Server





Constraints


ETL (Extract, Transform, Load)
Microsoft SQL Server Integration Service




View

Bulk Copy Program (bcp)


Bulk insert
Openrowset(Bulk)
Import/Export Wizard
XML Bulk Load


Constraints, Indexes, Triggers


triggers


TABLOCK


Bulk_logged Simple model


SQL Servers




Clustered index
Metadata

metadata

Constraints
Primary key Unique



Foreign key

Foreign Key Check



Foreign key Check


8.2
SQL Server Integration
SQL Server Import/Export Wizard

SQL Server Integration


SSIS ETL
SSIS



Dtexec dtexecui
SQL Server Agent jobs

SSIS

SQL Server Business Intelligence Development Studio (BIDS)
Import/Export Wizard

SQL Server Import/Export Wizard


Wizard

8.3
bcp
Bulk Insert
Openrowset

bcp

SQL Instance
Creating a format file:
bcp Adv.Sales.Currency format nul -T -c x -f Cur.xml

Exporting data into a file:


bcp Adv.Sales.Currency out Cur.dat -T c

Importing data using a format file:


bcp tempdb.Sales.Currency2 in Cur.dat -T -f Cur.xml

Bulk Insert

bcp
SQL
Check_constraints Fire_Triggers

BULK INSERT AdventureWorks.Sales.OrderDetail
FROM 'f:\orders\neworders.txt'
WITH
(
FIELDTERMINATOR ='|',
ROWTERMINATOR ='|\n'
);
GO

Openrowset

OLE-DB provider
Bulk provider
From
Insert ..Select

SELECT *
FROM OPENROWSET(
BULK 'c:\mssql\export.csv',
FORMATFILE = 'c:\mssql\format.fmt',
FIRSTROW = 2) AS a;
GO

9
SQL Server

9.1 SQL Server

SQL Server
SQL Server
Windows
SQL Server Logins Policies

SQL Server
Securables
Permissions

Principals

Windows

Windows Group
Domain User Account
Local User Account

ACL

Files
Registry Keys

GRANT/REVOKE/DENY

SQL
Server

Database

SQL Server Login


Server Role
User
Database Role
Application Role
Group

CREATE
ALTER
DROP
CONTROL
CONNECT
SELECT
EXECUTE
UPDATE
DELETE
INSERT
TAKE OWNERSHIP
VIEW DEFINITION
BACKUP

Server
Database

Schema

SQL Server

Microsoft SQL Server 2
Windows Authentication
SQL Server and Windows Authentication (Mixed Mode)

Windows
Windows Logins
Object Explorer options SSMS
T-SQL Create Login

Drop Login
error
CREATE LOGIN [AdventureWorks\Student]
FROM WINDOWS
WITH DEFAULT_DATABASE=[tempdb],
DEFAULT_LANGUAGE=[us_english];
GO
CREATE LOGIN [AdventureWorks\Salespeople]
FROM WINDOWS;
GO

SQL Server Logins Policies


SQL Server Login
Object Explorer options SSMS
T-SQL Create Login

account policy
Alter login /
CREATE LOGIN SalesManager
WITH PASSWORD = 'Pa$$w0rd',
CHECK_POLICY = ON;
GO
CREATE LOGIN SalesApp
WITH PASSWORD = 'Pa$$w0rd',
CHECK_POLICY = OFF;
GO

9.2



dbo guest



role
Grant, Deny, Revoke


Logins

Object Explorer options SSMS
T-SQL Create Login
CREATE USER SecureUser
FOR LOGIN SecureUser;
GO
CREATE USER Student
FOR LOGIN [AdventureWorks\Student];
GO
CREATE USER HRApp
FOR LOGIN HRUser;
GO

dbo guest
Dbo
sa syadmin role dbo

Guest


Grant Connect Guest

Windows user
Windows Group

9.3
Double-Hop
Impersonation Delegation
Security IDs

Double-Hop
1

User identity Bob presented to


the application

Web Server

Delegation is not permitted.


Identity of the service account used
instead of the identity of Bob's
identity

Application process
impersonates Bob to access
local resources

Database access disallowed


because of incorrect identity

DB Server

Impersonation Delegation

Impersonation
Delegation

Security IDs




Security Identifiers (SIDs)

, SQL Server Logins SIDs



SIDs Windows logins Windows



SID Login
SID

10
Server Roles

10.1 Server Roles




Public



USE master;
GO
GRANT ALTER ON LOGIN::HRApp
TO [AdventureWorks\Holly];
GO
GRANT ALTER ANY DATABASE
TO [AdventureWorks\Holly];
GO


master


sys.server_permissions
Typical Server-scoped Permissions
ALTER ANY DATABASE

ALTER TRACE

BACKUP DATABASE

BACKUP LOG

CONNECT SQL

CONTROL SERVER

CREATE DATABASE

SHUTDOWN

VIEW ANY DEFINITION

VIEW SERVER STATE

sysadmin

CONTROL SERVER (with GRANT option)

Dbcreator

ALTER ANY DATABASE

diskadmin

ALTER RESOURCES

serveradmin

ALTER ANY ENDPOINT, ALTER


RESOURCES, ALTER SERVER STATE,
ALTER SETTINGS, SHUTDOWN, VIEW
SERVER STATE

securityadmin

ALTER ANY LOGIN

processadmin

SQL

ALTER ANY CONNECTION


ALTER SERVER STATE

bulkadmin

ADMINISTER BULK OPERATIONS

setupadmin

ALTER ANY LINKED SERVER

Public
Server-scope
Fixed server

View any database
Connect


SQL Server 2012



USE master;
GO
CREATE SERVER ROLE staff;
GO

10.2



Roles
(Database Owner)



USE AdventureWorks;
GO
GRANT CREATE TABLE TO HRManager;
GO
GRANT VIEW DEFINITION TO James;
GO

db_owner

DB

db_securityadmin

db_accessadmin

db_backupoperator

db_ddladmin

DDL

db_datawriter

db_datareader

db_denydatawriter

db_denydatareader

Roles

Object Explorer options SSMS
T-SQL Create Login

USE AdventureWorks;
GO
ALTER ROLE db_datareader
ADD MEMBER James;
GO

(Database Owner)
Dbo sa sysadmin
dbo

10.3


Create role
Roles Owner
Role
Role

USE MarketDev;
GO
CREATE ROLE MarketingReaders
AUTHORIZATION dbo;
GO
GRANT SELECT ON SCHEMA::Marketing
TO MarketingReaders;
GO

dbo

Public

IS_SRVROLEMEMBER, IS_MEMBER
IF IS_MEMBER('BankManagers') = 0
BEGIN
PRINT 'Operation is only for bank manager use';
ROLLBACK;
END;


User runs
app

App connects to db
as user

App authenticates using


sp_setapprole
App assumes
app role

11


Schema

11.1

GRANT, REVOKE, DENY


WITH GRANT OPTION

Windows

Windows Group
Domain User Account
Local User Account
SQL Server Login
Server Role
User
Database Role
Application Role

SQL Server
Database


SQL Server

Server
Database
Schema

GRANT, REVOKE, DENY


GRANT
DENY

REVOKE GRANT DENY



Select
Insert, Update, Delete
References
USE MarketDev;
GO

GRANT SELECT ON OBJECT::Marketing.Salesperson


TO HRApp;
GO
GRANT SELECT ON Marketing.Salesperson
TO HRApp;
GO




Grant Deny
GRANT SELECT ON Marketing.Salesperson
( SalespersonID, EmailAlias)
TO James;
GO
DENY SELECT ON Marketing.Salesperson
TO Holly;
GO
GRANT SELECT ON Marketing.Salesperson
( SalespersonID, FirstName, LastName)
TO Holly;
GO

WITH GRANT OPTION


With Grant Option

CASCADE Revoke
DENY
GRANT UPDATE ON Marketing.Salesperson
TO James
WITH GRANT OPTION;
GO
REVOKE UPDATE ON Marketing.Salesperson
FROM James
CASCADE;
GO

11.2

Stored Procedures


Stored Procedures
Stored Procedures
Execute
Alter
View Definition
USE MarketDev;
GO

GRANT EXECUTE ON
Reports.GetProductColors
TO Mod11User;
GO


Execute Scalar UDFs
Select TVFs
References Check, Default

USE MarketDev;
GO

GRANT EXECUTE ON
Reports.GetProductColors
TO Mod11User;
GO


SQL CLR T-SQL
CLR 3
SAFE ( )
External_access
Unsafe

External_access Unsafe

Unsafe Unrestricted GUI SQL
Server Management Studio

11.3 Schema
User-Schema

Schema

User-Schema
Schemas

SQL Server 2005




Create Schema
sys.schemas

Schemas

Dbo
Guest
Sys
Information_schema


Schema,
schema
dbo Schema

, dbo schema

schema
Select ProductID From Production.Product

Schema
Tables, Views, Stored
procedures, Schema
Schema

USE MarketDev;
GO
GRANT EXECUTE
ON SCHEMA::Marketing
TO Mod11User;
GO
GRANT SELECT
ON SCHEMA::DirectMarketing
TO Mod11User;
GO

12 SQL Server 2012


SQL Server
SQL Server
SQL Server

12.1 SQL
Server

C2 Audit
Common Criteria Audit
Trigger
SQL Trace

C2 Audit
C2
U.S. Trusted Computer Systems Evaluation
Criteria (TCSEC)
Common Criteria

SQL Server C2
SQL Server

C2 audit sp_configure

Common Criteria Audit


Common Criteria
1999
C2
20
ISO15408

Common criteria compliance enabled


sp_configure Enterprise edition

Residual information protection (RIP)

Grant Deny

Trigger

DML (Data manipulation language)




Select

Recursive

SQL Trace
SQL Server Profiler
Error


SQL Trace
Stored procedures

12.2 SQL Server

SQL Server
SQL Server
audit




DMVs System Views




Event Windows

SQL Server
SQL Server Audit
SQL Server 2008
Extended Events
SQL server 2012 Enterprise
SQL Server 2012

Audits
Server and Database Audit Specifications
Actions and Action Groups
Targets

SQL Server
SQL Server



audit

(Server)
(Database)
(Audit)




Application Windows
Windows




SQL Server Service
Account Generate Security Audits

Audit name

SQL Server

Queue delay (in milliseconds)


Shut down server on audit failure

Audit destination
Maximum rollover files
Maximum file size (MB)

Reserve disk space


Maximum files



GUI T-SQL

CREATE SERVER
AUDIT SPECIFICATION
FailedLoginSpec
FOR SERVER AUDIT
Audit-20121222-171544
ADD (FAILED_LOGIN_GROUP);



GUI T-SQL

CREATE DATABASE
AUDIT SPECIFICATION
BackupRestoreSpec
FOR SERVER AUDIT
Audit-20121222-171544
ADD (BACKUP_RESTORE_GROUP);

DMVs System Views


SQL Server DMV System Views
SQL Server
Audit-related DMVs
sys.dm_server_audit_status
sys.dm_audit_actions
sys.dm_audit_class_type_map

Audit-related System Views


sys.server_audits
sys.server_file_audits
sys.server_audit_specifications
sys.server_audit_specification_details
sys.database_audit_specifications
sys.database_audit_specification_details

12.3 SQL Server




SQL server


Log viewers


sys.fn_get_audit_file
SELECT * FROM sys.fn_get_audit_file(
'J:\SQLAudits\Audit\LoginLogoutLog\*',
NULL,
NULL);

4000


Sequence_no

SQL server

SIDs
GUID

Create Server audit
Edition SQL Server

Mirror
GUIDs

13 SQL Server
SQL Server
SQL Server Agent
SQL Server Agent Jobs

13.1 SQL Server


SQL Server
SQL Server
SQL server agent

SQL Server

SQL Server

GUI
Jobs
Alerts
Operators Jobs Alerts

SQL server agent


SQL Server Agent SQL server

Windows

Execute jobs
Fire alerts
Contact Operators

Automatic

13.2 SQL Server Agent

Jobs,

Job Job

Job
Jobs
Jobs

Jobs, Job Job


SQL Server Agent Jobs
SQL Server Agent
Jobs
T-SQL

PowerShell

Jobs

SQL Server Agent

Jobs

Job
Job step 1: Back up Database
(Transact-SQL)

Fail?

Yes
Write to
Application Log

No
Job step 2: Transfer Data
(CmdExec)

Fail?

Yes
Notify operator

No
Job step 3: Custom Application
(PowerShell)

Fail?

Fail the job

No
Job succeeded
Notify operator

Yes

Jobs
Job
Job

Jobs
Jobs


> Script Job as > Create to > New
Query Editor Window

13.3 SQL Server Agent Jobs



SQL Server Agent
System

SQL Server Agent msdb


Job SSMS
Job

SQL Server Agent


System
SQL Server Agent msdb
System Agent dbo schema
Tables Books Online

Job
SELECT j.name, jh.run_date, jh.run_time, jh.message
FROM msdb.dbo.sysjobhistory AS jh
INNER JOIN msdb.dbo.sysjobs AS j
ON jh.job_id = j.job_id
WHERE jh.step_id = 0;
GO


SQL Server Agent
Service
msdb

job
Job

Job

Job
Job
Job
Schedule

14 SQL Server
Agent

SQL Server Agent



Proxy Account

14.1 SQL Server


Agent

SQL Server agent


SQL Server Agent

Agent Job
SQL Server Agent

SQL Server agent


SQL Server Agent job
Service account
Built-in accounts Local Network Service
Windows domain accounts
Jobs
SQL Server

T-SQL job
Windows Network Job Proxy
Accounts

SQL Server Agent


Sysadmin SQL
Server Agent
msdb

SQLAgentUserRole

Jobs Schedules

SQLAgentReaderRole

SQLAgentUserRole
permission View

SQLAgentOperatorRole

Jobs
View proxies
proxies Alerts

Agent Job

Job T-SQL
SQL Server Agent Job
sysadmin

SQL
Server Agent service account
sysadmin

sysadmin SQL Server agent account (


)
Proxy Accounts

SQL Server Agent





SQL Server Agent Service account Proxy
SQL User

T-SQL Job

14.2



(Credentials)

Service Master key


Windows SQL Server

Proxy accounts

SQL Server Agent


Job


T-SQL SSMS
master Service master
key

USE master;
GO
CREATE CREDENTIAL Agent_Export
WITH IDENTITY = N'VIENNA\Agent_Export',
SECRET = N'Pa$$w0rd';
GO


sys.credentials
Alter credential

Drop credential
SELECT * FROM sys.credentials;
GO
ALTER CREDENTIAL Agent_Export
WITH IDENTITY = N'VIENNA\Agent_Export',
SECRET = N'NewPa$$w0rd';
GO
DROP CREDENTIAL Agent_Export;
GO

14.3 Proxy Account


Proxy Accounts
Proxy
Proxy Accounts

Proxy Accounts
Proxy Accounts SQL Server Agent
Microsoft Windows
SSMS dbo.sp_add_proxy
msdb
sysadmin

SQL Login
Msdb server role
Job Step

Proxy

Credential

Resource

Proxy
Proxies SQL Server Subsystems
Proxies subsystems

Job Subsystem T-SQL

Proxy Accounts
Proxies msdb
msdb
Sysproxies, sysproxylogin, sysproxyloginsubsystem,
syssubsystems
USE msdb;
GO
SELECT p.name as ProxyName,
c.name as CredentialName,
p.description as ProxyDescription
FROM dbo.sysproxies AS p
INNER JOIN sys.credentials AS c
ON p.credential_id = c.credential_id;

15 SQL Server 2012


Database Mail
SQL Server
Operators, Alerts Notifications

15.1 Database Mail


Database Mail
Database Mail Profiles
Database Mail
Database mail

Database Mail
Database Mail smtp
E-mail
Database mail configuration Wizard

Service Broker

SQL Server Agent Mail


Job Alert
Mail profile SQL Server Agent Account

Database Mail Profiles


Database mail
send mails
Database Mail

Private

Private profile
Public profile

Public

Database Mail
Database mail:

SQL Server Engine
Stored procedures
DatabaseMailUserRole msdb
( Sysadmin server )

Private profiles

Database mail
Database Mail

msdb
USE msdb;
GO
DECLARE @CutoffDate datetime ;
SET @CutoffDate = DATEADD(m, -1,SYSDATETIME());
EXECUTE dbo.sysmail_delete_mailitems_sp
@sent_before = @CutoffDate;
EXECUTE dbo.sysmail_delete_log_sp
@logged_before = @CutoffDate;
GO

15.2 SQL Server


?

SQL Server Error

Error number
Error Message
Severity
State
Procedure Name
Line Number

error
Error
Error
error
Stored procedures Trigger
batch, stored procedure, trigger


SQL Server
error
0 to 9
10
11 to 16
17 to 19
20 to 24
25




Software errors

SQL Server Service error

SQL Server Error


Severe Errors

SQL Server Logs


sp_altermessage


6
sp_cycle_errorlog

15.3 Operators, Alerts


Notifications

SQL Server Agent Operator


SQL Server Alerts
Alerts
Alert
Alerts Notification

SQL Server Agent Operator


SQL Server Agent Operator
Job Alert
Operators
Email
Pager
Net Send

Fail-safe operator

SQL Server Alerts


Alerts
Alerts
SQL Server events
SQL Server
WMI

Alerts
Operator
Job

Alerts
SSMS sp_add_alert

EXEC msdb.dbo.sp_add_alert
@name=N'AdventureWorks Transaction Log Full',
@message_id=9002, @delay_between_responses=0,
@database_name=N'AdventureWorks';
GO

Alert
Job
Job

Tokens
Operators

EXEC msdb.dbo.sp_add_notification
@alert_name
= N'AdventureWorks Transaction Log Full',
@operator_name=N'SQL Admins',
@notification_method = 1;
GO

Alerts Notification
SQL Server Agent
Error message Application log
Application

Alert
alert

Alert
Job
Database mail SMTP server configuration
database mail SSMS

16 SQL Server 2012




16.1
DBCC Checkdb
DBCC checkdb
DBCC checkdb repair

DBCC Checkdb



Filestream
Service Broker


permit data loss

DBCC checkdb

PHYSICAL_ONLY

NOINDEX

nonclustered indexes

EXTENDED_LOGICAL_CHECKS

logical , spatial
XML

TABLOCK

Locks database snapshots

ALL_ERRORMSGS
NO_INFOMSGS
ESTIMATEONLY

200
error
tempdb

DBCC checkdb repair


Single_user
DBCC checkdb
Repair_rebuild
Repair_allow_data_loss

Data loss

16.2


SQL Server

Fillfactor Pad_index


Table Scan

Index
Microsoft SQL Server

SQL Server
B-tree
Clustered index (Leaf level)
Nonclustered index leaf level
id

index_id

root_page

Root Index Page

Intermediate
Level

Leaf Nodes

Index Pages


Internal
External


SQL Server management studio Index
properties
System function sys.dm_db_index_physical_stats

Fillfactor Pad_index
clustered indexes
FillFactor ()
Pad_index ( root )
ALTER TABLE Person.Contact
ADD CONSTRAINT PK_Contact_ContactID
PRIMARY KEY CLUSTERED
(
ContactID ASC
) WITH (PAD_INDEX = OFF, FILLFACTOR = 70);
GO


(Rebuild)


Transaction log

(Reorganize)

Transaction log

ALTER INDEX CL_LogTime ON dbo.LogTime
REBUILD;
ALTER INDEX ALL ON dbo.LogTime
REORGANIZE;




Shared lcoks

Schema


ALTER INDEX IX_Contact_EmailAddress
ON Person.Contact REBUILD
WITH ( PAD_INDEX = OFF,
FILLFACTOR = 80,
ONLINE = ON,
MAXDOP = 4 );

AUTO_UPDATE_STATISTICS

UPDATE STATISTICS
sp_updatestats

SQL Server

16.3
SQL Server Database maintenance
Database Maintenance

SQL Server Database


maintenance


SQL Server Agent
SSIS
Wizard

Database Maintenance
Job Activity Monitor
msdb

Operator

17 SQL Server 2012


SQL Server Profiler Extended
Events Profiler
Database Engine Tuning Advisor
Tracing

17.1 SQL Server Profiler


Extended Events Profiler
SQL Server Profiler
Tracing
Trace Events
Trace columns
Traces
Trace Template
Extended Events Profiler

SQL Server Profiler


SQL Server Profiler SQL
Server
SQL Trace
debugging, ,
deadlock

Tracing
Profiler traces

( 5 MB )
()

Trace Events

Events
Categories

SQL:BatchCompleted

A SQL Server batch completed

SQL:StmtCompleted

A T-SQL statement completed

RPC:Completed

A remote procedure call (stored procedure)


completed

Audit Login / Audit Logout

Login or Logout occurred

Deadlock Graph

An XML description of a deadlock was


captured

Trace columns

Trace

Traces

Trace

Trace Template
Trace templates
SQL Server
Standard template
Template

Extended Events Profiler


SQL Server
SQL Server Audit


database engine
Analysis services
SQL Server Profiler users
SQL Server Management Studio

17.2 Database Engine


Tuning Advisor
Performance tuning
Performance tuning
Database Engine Tuning Advisor
Database Engine Tuning Advisor

Performance tuning

Performance tuning
Database Engine Tuning Advisor
SSMS


SQL Server Data collection


SQL Server Profiler
SQL Trace
SQL Server Extended Event
Reliability and Performance Monitor

Database Engine Tuning Advisor



SQL Server Profiler Traces
Workload

Database Engine
Tuning Advisor

Database and Database Objects

Reports and
Recommendations

Database Engine Tuning Advisor



schemas
workloads

17.3 Tracing

SQL Trace
SQL Trace SQL Server Profiler
Trace
Trace
Trace
Trace Reliability and Performance Monitor
Logs

SQL Trace
SQL Trace System stored
procedures SQL server
SQL Server Profiler SQL Traces
Events SMO
SQL Server Profiler SMO Traces

SQL Trace SQL Server Profiler


SQL Trace

database
engine
SMO



trace

SQL Server Profiler



SQL Trace





Trace

Trace
SQL Server Traces
Traces
SQL Server Profiler
SQL Server Table
CREATE TABLE dbo.tracetable
(
TextData nvarchar(max) NULL,
BinaryData varbinary(max) NULL,
...
);
INSERT INTO dbo.tracetable
SELECT * FROM
fn_trace_gettable('L:\Traces\adworks.trc',default);

Trace
Trace
TSQL-Replay trace template

SQL Server Profiler playback

SQL Server 2012 distributed replay



Trace
Trace
SQL Server


sp_configure
EXEC sp_configure 'show advanced options' , 1;
RECONFIGURE;
EXEC sp_configure 'default trace enabled' , 1;
RECONFIGURE;
EXEC sp_configure 'show advanced options' , 0;
RECONFIGURE;

Trace Reliability and Performance


Monitor Logs

SQL Trace events SQL


Server Profiler

18 SQL Server 2012




18.1

Dynamic Management Views Function


Dynamic Management Views
SQL Server management studio

SQL Server Counters

Dynamic Management Views


Function

SQL Server

sys.dm_exec_%

Execution and Connection

sys.dm_os_%

SQL OS related information

sys.dm_tran_%

Transaction Management

sys.dm_io_%

I/O related information

sys.dm_db_%

Database scoped information

Dynamic Management Views


Sys schema



SELECT s.original_login_name, s.program_name,
t.wait_type, t.wait_duration_ms
FROM sys.dm_os_waiting_tasks AS t
INNER JOIN sys.dm_exec_sessions AS s
ON t.session_id = s.session_id
WHERE s.is_user_process = 1
AND t.wait_duration_ms > 3000;

SELECT * FROM sys.dm_os_wait_stats


ORDER BY wait_time_ms DESC;

SQL Server management


studio

SQL Server Processes, Waits, I/O



SQL Server Dynamic Management
objects
View Server State



counter
data collector data collectors



CPU
Memory
Disk System
Network
SQL Server Counters

SQL Server Counters


SQL Server Performance
Monitor
Counters
Counter
Total

sys.dm_os_performnace_counters

18.2

Data Collector
Data collector
Data collector
Data collector
Data collector

Data Collector
Data collector SQL Server

Data collection




SQL Server

Data collector
SSIS SQL Agent jobs
SSMS
Data Collector
Performance Counter
SQL Trace
T-SQL

Data Collector
Performance Counter
SQL Trace
T-SQL

Data Repository
Centralized Data
Storage

Reporting

Data collector
Wizard-based

Management data Warehouse


Data collector

Data warehouse
System Data collection


Data collector
Data warehouse
Role

mdw_admin

Full

mdw_writer

data collectors

mdw_reader

Data collector
Role

dc_admin

Full

dc_operator

dc_proxy

Data collector
msdb
Stored procedures SSIS logging


Collection set
T-SQL

18.3

Collection


Collection
Data collector
SQL Server Management Studio


CPU, Duration, Reads, Writes


CPU, Memory, Disk, Network I/O
SQL Server Waits SQL Server


Disk Usage System Data Collection Set
T-SQL collector
6
730


Server Activity System Data Collection Set
DMV snapshot Performance counter
60 15
14

SQL Server Windows


Processes


Query Statistics System Data collection
Activity collector
10 15
14

19 SQL Server 2012



Virtualizing SQL Server
Data-tier

19.1
Central Management
Multi-server

Central Management
Central Management Servers


CMS


T-SQL
Policy-Based management
Object Explorer

Windows Authentication
ServerGroupReaderRole

Multi-server
T-SQL

19.2 Virtualizing SQL Server

SQL Server Virtualization


Virtualization
Virtualizing SQL Server
System Center Virtual Machine Manager

SQL Server Virtualization


Root Partition
Windows Server

Child Partition
Windows Server
SQL Server

Hyper-V Hypervisor

Hardware

Child Partition
Windows Server
SQL Server

Virtualization
SQL Server
Stand alone



failover clusters Live Migration

SLA
CPU ,

Virtualizing SQL Server


POC Virtualization
I/O
Pass-though disk
Virtualized
SQLIO

CPU
CPU



Hyper-V

System Center Virtual Machine


Manager

SCVMM Virtual
machine
System Center Suite
System Center Operations Manager
(SCOM)

19.3 Data-tier

Data-tier
Data-tier
Data-tier
Data-tier

Data-tier
T-SQL

Data-tier

Wizard




Model

.dacpac

Data-tier
Wizard
Change schema
T-SQL

Powershell

Data-tier
Data-tier



SSMS
Visual Studio


20 SQL Server 2012

SQL Server


20.1 SQL Server





20.2

SQL Server Error
Windows Event



Windows SQL Error
SQL Server

SQL DAC

SQL Server
Windows
master model
tempdb
Command Prompt

SQL Server Error



Editor
( )

Windows Event
System Windows

20.3


SQL Server
Shared Memory
Shared Memory


Windows Logins
Domain Controller
SQL Server Domain controller

SQL Server Logins


SQL Server Mixed mode


Connect

20.4


Deadlock

SQL Server ACID


(Shared Locks)
(Exclusive locks)

ACID
Atomicity > process fail

Consistency >
Isolation > transaction

Durability >

DB



error




SQL server Activity Monitor
Dynamic Management Views
SQL Server Data Collector

Autocommit Transactions
Default transaction mode
statement committed
rolled back
it is committed
it is rolled back

Compile error executed

Compile Error

Autocommit
T-SQL
Deadlock ( commit )
user ( commit
)

Autocommit
commit rollback

process
ATM

Explicit Transaction
mode BEGIN
TRANSACTION COMMIT TRANSACTION
process transaction user

process rollback
( Data Begin Transaction )
user defined Transaction ( SQL2000
)

Explicit Transactions
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
BEGIN TRANSACTION fund_transfer
EXEC debit_checking '100', 'account1'
EXEC credit_savings '100', 'account2'
COMMIT TRANSACTION

SAVE TRANSACTION
save point rollback (
rollback

)
Transaction log

SAVE TRANSACTION

Explicit Transaction

CREATE DATABASE
DROP DATABASE
ALTER DATABASE
BACKUP
RECONFIG
RESTORE
UPDATE STATISTICS

Implicit Transaction
BEGIN TRANSACTION
SQL SERVER Transaction
COMMIT TRANSACTION

Implicit Transactions
Setting implicit transaction mode on
SET IMPLICIT_TRANSACTIONS ON

An implicit transaction starts when one of the following


statements is executed
ALTER DATABASE

INSERT

CREATE

OPEN

DELETE

REVOKE

DROP

SELECT

FETCH

TRUNCATE TABLE

GRANT

UPDATE

Transaction must be explicitly completed with


COMMIT or ROLLBACK TRANSACTION

Implicit Transaction

Transactions Database

Buffer

( process )
Buffer RAM ( Server ) 2
1. Log Record Buffer
2. Database Buffer

Log Record Buffer


Memory Transaction Log SQL Server
Transaction Buffer
Commit Buffer Transaction
Log
Commit Transaction Log

Database Buffer
Memory Data SQL Server select
edit
edit Harddisk
Database Buffer
Modified Buffer (dirty pages)
Commit Modified Buffer
DB

Checkpoints
SQL Server Dirty
Pages ( ) Database
recovery Transaction Log

Transactions
Keep transactions as short as possible
Use caution with certain Transact-SQL statements
Avoid transactions that require user interaction
Do not browse data during a transaction
Affect the least rows possible with DML statements
Access the least rows possible with SELECT statements

Issues with nested transactions (BEGIN...COMMIT


statement pairs)
Allowed, but not recommended
Use @@trancount to determine nesting level

@@trancount

Global Variable for check nesting level


Default is 0
If have BEGIN TRANSACTION > +1
If have COMMIT TRANSACTION > -1
If have ROLLBACK TRANSACTION > RESET TO 0

@@trancount


Certain statements may not be included in explicit
transactions, such as:
ALTER DATABASE

RECONFIGURE

BACKUP

RESTORE DATABASE

CREATE DATABASE

RESTORE

DROP DATABASE

UPDATE STATISTICS

Full-text system stored procedure calls may not be


included in explicit transactions
You cannot use the following in implicit or explicit
transactions:
sp_dboption
System stored procedures that modify master

SQL Server Locking


What Concurrency Problems Are Prevented by
Locks?
Lockable Resources
Types of Locks
Lock Compatibility

Lost updates
Uncommitted dependencies (dirty read)
Inconsistent analysis (nonrepeatable read)
Phantom reads

Lockable
Item

RID
KEY
PAGE
EXTENT
TABLE
HOBT
FILE
APPLICATION
METADATA
ALLOCATION_UNIT
DATABASE

Description
Row identifier
Row lock within an index
Data page or index page
Group of pages
Entire table
A heap or B-tree
A database file
An application-specified resource
Metadata locks
An allocation unit
Entire database

Locks
Basic locks
Shared > Lock select
Exclusive > Lock insert, update, delete

Special situation locks


Intent
Update
Schema
Bulk update

Lock Compatibility
Some locks are compatible with other locks, and
some locks are not

Shared locks are compatible with all locks
except exclusive
Exclusive locks are not compatible with any other locks
Update locks are compatible only with shared locks

Session-Level Locking Options


Dynamic Locking
What Are Deadlocks?
Methods to View Locking Information
Best Practices

Session-Level
Transaction isolation level
READ UNCOMMITTED
READ COMMITTED (default)
REPEATABLE READ
SERIALIZABLE

Locking timeout
Limits time waiting for a locked resource
Use SET LOCK_TIMEOUT

Read Uncommited

Isolation Level
lock
Read Only

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

Read Uncommitted

2 session Test Dirty Read


Session1

Session2

Result can select

Read Committed Cursor Stability

Default of SQL2008
Commit
Dirty Read
Web Applilcation
( After commit )

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

Read Committed

2 session Test Dirty Read ( )


Session1

Session2

Result is wait for select

Repeatable Read
Hold Lock
lock transaction commit
Lost update, Dirty Read, Non Repeatable
Read

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

Repeatable Read

2 session Test Non Repeatable Read


Session1

Result still same.


Session2

Result is wait for update.

SERIALIZABLE
Isolation level
concurrency control

lock Deadlock

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

SERIALIZABLE

2 session Test Phantom Reads


Session1

Result still same.


Session2

Result is wait for insert.

Dynamic Locking
Dynamic
Locking

Cost

Row
Locking Cost
Concurrency Cost

Page
Granularity

Table

Deadlocks ?
How SQL server ends a deadlock
How to minimize deadlocks
How to customize the lock time-out setting

Transaction A
Transaction B
UPDATE Supplier

UPDATE Part

UPDATE Part

UPDATE Supplier

Supplier

Part

AB

Locking Information

Activity Monitor window


sys.dm_tran_locks Dynamic Management View
EnumLocks method
SQL Server Profiler
Windows System Monitor

You might also like