Home > Store

Microsoft SQL Server 2012 Unleashed

Register your product to gain access to bonus material or receive a coupon.

Microsoft SQL Server 2012 Unleashed


  • Sorry, this book is no longer in print.
Not for Sale

eBook (Watermarked)

  • Your Price: $46.39
  • List Price: $57.99
  • Includes EPUB and PDF
  • About eBook Formats
  • This eBook includes the following formats, accessible from your Account page after purchase:

    ePub EPUB The open industry format known for its reflowable content and usability on supported mobile devices.

    Adobe Reader PDF The popular standard, used most often with the free Acrobat® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.



  • The definitive, best-selling guide to SQL Server -- now massively updated for SQL Server 2012, with 30-40% updated material
  • Expert real-world coverage of ALL aspects of SQL Server 2012: administration, integration, reporting, analysis, development, optimization, security, and more
  • 4 new chapters: Always-On, Azure, MDS/DQS, and Parallel Data Warehouse Appliance
  • Updated SQL code examples, sample databases, and application code help you take full advantage of the newest capabilities
  • Improved organization for faster, easier access
  • By a world-class team of SQL Server consultants and solution developers


  • Copyright 2014
  • Edition: 1st
  • Book
  • ISBN-10: 0-672-33692-8
  • ISBN-13: 978-0-672-33692-8

Buy the print version of¿Microsoft SQL Server 2012 Unleashed and get the eBook version for free! eBook version includes chapters 44-60 not included in the print. See inside the book for access code and details.

With up-to-the-minute content, this is the industry’s most complete, useful guide to SQL Server 2012.

You’ll find start-to-finish coverage of SQL Server’s core database server and management capabilities: all the real-world information, tips, guidelines, and samples you’ll need to create and manage complex database solutions. The additional online chapters add extensive coverage of SQL Server Integration Services, Reporting Services, Analysis Services, T-SQL programming, .NET Framework integration, and much more.

Authored by four expert SQL Server administrators, designers, developers, architects, and consultants, this book reflects immense experience with SQL Server in production environments. Intended for intermediate-to-advanced-level SQL Server professionals, it focuses on the product’s most complex and powerful capabilities, and its newest tools and features.

  • Understand SQL Server 2012’s newest features, licensing changes, and capabilities of each edition
  • Manage SQL Server 2012 more effectively with SQL Server Management Studio, the SQLCMD command-line query tool, and Powershell
  • Use Policy-Based Management to centrally configure and operate SQL Server
  • Utilize the new Extended Events trace capabilities within SSMS
  • Maximize performance by optimizing design, queries, analysis, and workload management
  • Implement new best practices for SQL Server high availability
  • Deploy AlwaysOn Availability Groups and Failover Cluster Instances to achieve enterprise-class availability and disaster recovery
  • Leverage new business intelligence improvements, including Master Data Services, Data Quality Services and Parallel Data Warehouse
  • Deliver better full-text search with SQL Server 2012’s new Semantic Search
  • Improve reporting with new SQL Server 2012 Reporting Services features

Download the following from informit.com/title/9780672336928: Sample databases and code examples



Download the online sample databases and code examples for Microsoft SQL Server 2012 Unleashed here

Sample Content

Online Sample Chapter

What's New in SQL Server 2012

Sample Pages

Download the sample pages (includes Chapter 2 and Index)

Table of Contents

Introduction    1

Who This Book Is For    2

What This Book Covers    2

Conventions Used in This Book    4

Good Luck!    6

Part I  Welcome to Microsoft SQL Server

1  SQL Server 2012 Overview    9

SQL Server Components and Features    9

The SQL Server Database Engine    10

SQL Server 2012 Administration and Management Tools    12

Replication    16

Merge Replication    17

Database Mirroring    17

SQL Server AlwaysOn Features    18

SQL Server Service Broker    19

Full-Text and Semantic Search    20

SQL Server Integration Services (SSIS)    21

SQL Server Analysis Services (SSAS)    22

SQL Server Reporting Services (SSRS)    24

Master Data Services    25

Data Quality Services    26

SQL Server 2012 Editions    26

SQL Server 2012 Standard Edition    26

SQL Server 2012 Enterprise Edition    27

Differences Between the Enterprise and Standard Editions of SQL Server    28

Other SQL Server 2012 Editions    29

SQL Server Licensing Models    32

Web Edition Licensing    33

Developer Edition Licensing    33

Express Edition Licensing    33

Choosing a Licensing Model    33

Mixing Licensing Models    34

Passive Server/Failover Licensing    34

Virtual Server Licensing    34

Summary    35

2  What’s New in SQL Server 2012    37

New SQL Server 2012 Features    37

New and Improved Storage Features    38

New Transact-SQL Constructs    39

New Scalability and Performance Features    40

New Security Features    40

New Availability Features    40

Statistical Semantic Search    41

Data Quality Services    41

SQL Server 2012 Enhancements    42

SQL Server Management Studio Enhancements    42

Resource Governor Enhancements    43

Spatial Data Enhancements    43

Integration Services Enhancements    43

Service Broker Enhancements    44

Full-Text Search Enhancements    44

Analysis Services Enhancements    45

Reporting Services Enhancements    45

Master Data Services Enhancements    46

Deprecated Features    46

Summary    47

3  Examples of SQL Server Implementations    49

Application Terms    50

OLTP Application Examples    51

OLTP ERP Example    51

OLTP Shopping Cart Example    53

DSS Application Examples    55

DSS Example One    55

DSS Example Two    56

DSS Example Three    57

Summary    59

Part II  SQL Server Tools and Utilities

4  SQL Server Management Studio    63

What’s New in SSMS    63

The Integrated Environment    64

Window Management    64

Integrated Help    67

Administration Tools    71

Registered Servers    71

Object Explorer    72

Activity Monitor    75

Log File Viewer    77

SQL Server Utility    78

Development Tools    84

The Query Editor    84

Managing Projects in SSMS    92

Integrating SSMS with Source Control    93

Using SSMS Templates    95

Using SSMS Snippets    99

T-SQL Debugging    100

Multiserver Queries    102

Summary    102

5  SQL Server Command-Line Utilities    105

What’s New in SQL Server Command-Line Utilities    106

The sqlcmd Command-Line Utility    107

Executing the sqlcmd Utility    108

Using Scripting Variables with sqlcmd    111

The dta Command-Line Utility    111

The tablediff Command-Line Utility    114

The bcp Command-Line Utility    117

The sqldiag Command-Line Utility    118

The sqlservr Command-Line Utility    120

The SqlLocalDB Command-Line Utility    121

Summary    123

6  SQL Server Profiler    125

What’s New with SQL Server Profiler    125

SQL Server Profiler Architecture    126

Creating Traces    127

Events    129

Data Columns    131

Filters    134

Executing Traces and Working with Trace Output    136

Saving and Exporting Traces    137

Saving Trace Output to a File    137

Saving Trace Output to a Table    137

Saving the Profiler GUI Output    138

Importing Trace Files    138

Importing a Trace File into a Trace Table    139

Analyzing Trace Output with the Database Engine

Tuning Advisor    142

Replaying Trace Data    142

Defining Server-Side Traces    144

Monitoring Running Traces    155

Stopping Server-Side Traces    156

Profiler Usage Scenarios    158

Analyzing Slow Stored Procedures or Queries    158

Deadlocks    159

Identifying Ad Hoc Queries    161

Identifying Performance Bottlenecks    162

Monitoring Auto-Update Statistics    164

Monitoring Application Progress    164

Summary    166

Part III  SQL Server Administration

7  SQL Server System and Database Administration    169

What’s New in SQL Server System and Database Administration    169

System Administrator Responsibilities    170

System Databases    171

The master Database    171

The resource Database    172

The model Database    172

The msdb Database    172

The distribution Database    172

The tempdb Database    173

Maintaining System Databases    173

System Tables    174

System Views    175

Compatibility Views    176

Catalog Views    178

Information Schema Views    180

Dynamic Management Views    182

System Stored Procedures    185

Useful System Stored Procedures    186

Summary    187

8  Installing SQL Server 2012    189

What’s New in Installing SQL Server 2012    189

Installation Requirements    190

Hardware Requirements    190

Software Requirements    191

Installation Walkthrough    195

Install Screens, Step-by-Step    196

Installing SQL Server Documentation    216

Installing SQL Server Using a Configuration File    218

Running an Automated or Manual Install    224

Installing Service Packs and Cumulative Updates    225

Applying a Service Pack or Cumulative Update During

a New Installation    225

Applying a Service Pack or Cumulative Update to an

Existing Installation    227

Installing a Service Pack from the Command Line    231

Summary    232

9  Upgrading to SQL Server 2012    233

What’s New in Upgrading SQL Server    233

SQL Server 2012    233

The SQL Server 2012 Upgrade Matrix    234

Identifying Products and Features to be Upgraded    236

Using the SQL Server Upgrade Advisor (UA)    237

Getting Started with the UA    237

The Analysis Wizard    239

The Report Viewer    244

Destination: SQL Server 2012    245

Side-by-Side Upgrade    246

Upgrading In-Place    254

Upgrading the Database Engine    256

Installing Product Updates (Slipstreaming)

During Upgrades    258

Upgrading Using a Configuration File    260

Upgrading from Pre-SQL Server 2005 Versions    261

Upgrading Other SQL Server Components    261

Upgrading Analysis Services    262

Upgrading SQL Server Analysis Services    262

Upgrading Reporting Services    262

Performing an In-Place Upgrade of Reporting Services    262

Migrating to Reporting Services 2012    264

Upgrading SSIS Packages    265

Migrating DTS Packages    266

Summary    267

10  Client Installation and Configuration    269

What’s New in Client Installation and Configuration    269

Client/Server Networking Considerations    270

Server Network Protocols    271

The Server Endpoint Layer    273

The Role of SQL Browser    276

Client Installation    277

Installing the Client Tools    277

Installing SNAC    278

Client Configuration    280

Client Configuration Using SSCM    280

Connection Encryption    283

Client Data Access Technologies    285

Provider Choices    286

Connecting Using the Various Providers and Drivers    287

General Networking Considerations and Troubleshooting    293

Summary    295

11  Database Backup and Restore    297

What’s New in Database Backup and Restore    297

Developing a Backup and Restore Plan    298

Types of Backups    299

Full Database Backups    300

Differential Database Backups    300

Partial Backups    301

Differential Partial Backups    301

File and Filegroup Backups    301

Copy-Only Backups    302

Transaction Log Backups    302

Recovery Models    302

Full Recovery    303

Bulk-Logged Recovery    304

Simple Recovery    305

Backup Devices    306

Disk Devices    306

Tape Devices    307

Network Shares    307

Media Sets and Families    307

Creating Backup Devices    308

Backing Up a Database    308

Creating Database Backups with SSMS    308

Creating Database Backups with T-SQL    311

Backing Up the Transaction Log    314

Creating Transaction Log Backups with SSMS    314

Creating Transaction Log Backups with T-SQL    315

Backup Scenarios    316

Full Database Backups Only    316

Full Database Backups with Transaction Log Backups    317

Differential Backups    318

Partial Backups    319

File/Filegroup Backups    321

Mirrored Backups    322

Copy-Only Backups    323

Compressed Backups    323

System Database Backups    324

Restoring Databases and Transaction Logs    324

Restores with T-SQL    325

Restoring by Using SSMS    329

Restore Information    333

Restore Scenarios    337

Restoring to a Different Database    337

Restoring a Snapshot    338

Restoring a Transaction Log    338

Restoring to the Point of Failure    339

Restoring to a Point in Time    342

Online Restores    342

Restoring the System Databases    344

Additional Backup Considerations    346

Frequency of Backups    346

Using a Standby Server    347

Snapshot Backups    348

Considerations for Very Large Databases    348

Maintenance Plans    348

Summary    349

12  Database Mail    351

What’s New in Database Mail    351

Setting Up Database Mail    352

Creating Mail Profiles and Accounts    353

Using T-SQL to Update and Delete Mail Objects    356

Setting System-Wide Mail Settings    357

Testing Your Setup    357

Sending and Receiving with Database Mail    358

The Service Broker Architecture    358

Sending Email    358

Receiving Email    364

Using SQL Server Agent Mail    364

Job Mail Notifications    365

Creating an Operator    365

Enabling SQL Agent Mail    365

Creating the Job    365

Testing the Job-Completion Notification    366

Alert Mail Notifications    367

Creating an Alert    367

Testing the Alert Notification    368

Related Views and Procedures    368

Viewing the Mail Configuration Objects    368

Viewing Mail Message Data    369

Summary    371

13  SQL Server Agent    373

What’s New in Scheduling and Notification    374

Configuring the SQL Server Agent    374

Configuring SQL Server Agent Properties    374

Configuring the SQL Server Agent Startup Account    376

Configuring Email Notification    378

SQL Server Agent Proxy Account    380

Viewing the SQL Server Agent Error Log    381

SQL Server Agent Security    382

Managing Operators    383

Managing Jobs    385

Defining Job Properties    385

Defining Job Steps    386

Defining Multiple Jobs Steps    389

Defining Job Schedules    390

Defining Job Notifications    391

Viewing Job History    392

Managing Alerts    393

Defining Alert Properties    393

Defining Alert Responses    397

Scripting Jobs and Alerts    399

Multiserver Job Management    400

Creating a Master Server    401

Enlisting Target Servers    401

Creating Multiserver Jobs    402

Event Forwarding    402

Summary    403

14  Administering SQL Server 2012 with PowerShell    405

What’s New with PowerShell    405

Overview of PowerShell    406

Start Using PowerShell Now    407

Common Terminology    407

Object-Based Functionality    408

SQL Server Management Objects    408

WMI    409

Installing PowerShell    409

PowerShell Console    409

Scriptable and Interactive    410

Default Security    411

Execution Policy    411

Profiles    411

Built-In Help Features    411

PowerShell Scripting Basics    414

A Few Basic Cmdlets    414

Creating a PowerShell Script    415

Adding Comments    415

Variables    416

Escaping Characters    417

Special Variable $_    418

Joining Variables and Strings    418

Passing Arguments    419

Using Param    419

Arrays    420

Operators    421

Conditional Statements    421

Functions    422

Looping Statements    423

Filtering Cmdlets    424

Formatting Cmdlets    425

Dealing with CSV Files    426

Dealing with Dates and Times    427

-WhatIf/-Confirm Parameters    428

PowerShell in SQL Server 2012    428

Adding PowerShell Support    428

Accessing SQL Server PowerShell    429

SQL Server PowerShell    430

SQL Provider    431

SQL Cmdlets    432

SQL Server Agent Support    432

Step-by-Step Examples    432

General Tasks    433

Scheduling Scripts    433

Common OS-Related Tasks    435

SQL Server-Specific Tasks    437

Using the Provider    438

Creating a Database Table    438

Performing a Database Backup    440

Checking Server Settings    441

Checking the Database Usage    442

Getting Table Properties    443

Cmdlet Example: Invoke-SqlCmd    443

Cmdlet Example: Invoke-PolicyEvaluation    444

Joining Columns    444

Retrieving an Entry    445

Summary    445

15  SQL Server Policy-Based Management    447

What’s New in Policy-Based Management    447

Introduction to Policy-Based Management    448

Policy-Based Management Concepts    449

Facets    449

Conditions    452

Policies    453

Categories    453

Targets    453

Execution Modes    453

Central Management Servers    454

Implementing Policy-Based Management    456

Creating a Condition Based on a Facet    456

Creating a Category    460

Evaluating Policies    462

Importing and Exporting Policies    462

Sample Templates and Real-World Examples    464

Sample Policy Templates    464

Evaluating Recovery Models    464

Implementing Surface Area Configuration Checks    464

Ensuring Object Naming Conventions    465

Checking Best Practices Compliance    465

Policy-Based Management Best Practices    465

Summary    466

Part IV  SQL Server Security Administration

16  Security and Compliance    469

Exposure and Risk    470

Across the Life Cycle    471

The Security Big Picture    472

Identity Access Management Components    474

Data Security Compliance and SQL Server    476

SQL Server Auditing    478

Setting Up Auditing via T-SQL    484

SQL Injection Is Easy to Do    485

Summary    487

17  Security and User Administration    489

What’s New in Security and User Administration    489

An Overview of SQL Server Security    490

Authentication Methods    493

Windows Authentication Mode    493

Mixed Authentication Mode    493

Setting the Authentication Mode    493

Managing Principals    494

Logins    494

SQL Server Security: Users    497

The dbo User    498

The guest User    498


The sys User    499

User/Schema Separation    500

Roles    501

Fixed Server Roles    501

Fixed Database Roles    502

The public Role    505

User-Defined Database Roles    506

User-Defined Server Roles    507

Application Roles    508

Managing Securables    508

Managing Permissions    509

Managing SQL Server Logins    511

Using SSMS to Manage Logins    512

Using T-SQL to Manage Logins    516

Managing SQL Server Users    517

Using SSMS to Manage Users    517

Using T-SQL to Manage Users    519

Managing Database Roles    520

Using SSMS to Manage Database Roles    520

Using T-SQL to Manage Database Roles    521

Managing Server Roles    522

Using SSMS to Manage Server Roles    522

Using T-SQL to Manage Server Roles    522

Managing SQL Server Permissions    524

Using SSMS to Manage Permissions    524

Using SSMS to Manage Permissions at the Server Level    524

Using SSMS to Manage Permissions at the Database Level    527

Using SSMS to Manage Permissions at the Object Level    529

Using T-SQL to Manage Permissions    531

The Execution Context    533

Explicit Context Switching    533

Implicit Context Switching    534

Summary    535

18  Data Encryption    537

What’s New in Data Encryption    538

An Overview of Data Security    538

An Overview of Data Encryption    539

SQL Server Key Management    541

Extensible Key Management    543

Column-Level Encryption    544

Encrypting Columns Using a Passphrase    545

Encrypting Columns Using a Certificate    547

Transparent Data Encryption    551

Implementing Transparent Data Encryption    552

Managing TDE in SSMS    554

Backing Up TDE Certificates and Keys    556

The Limitations of TDE    557

Column-Level Encryption Versus Transparent

Data Encryption    557

Summary    558

Part V  Database Administration

19  Creating and Managing Databases    563

What’s New in Creating and Managing Databases    564

Data Storage in SQL Server    564

Database Files    565

Primary Files    566

Secondary Files    566

Using Filegroups    567

Using Partitions    570

Transaction Log Files    570

Creating Databases    572

Using SSMS to Create a Database    572

Using T-SQL to Create Databases    576

Setting Database Options    577

The Database Options    577

Using T-SQL to Set Database Options    580

Retrieving Option Information    581

Managing Databases    583

Managing File Growth    583

Expanding Databases    584

Shrinking Databases    585

Moving Databases    589

Restoring a Database to a New Location    590


Detaching and Attaching Databases    591

Contained Databases    594

Creating a Contained Database    594

Connecting to a Contained Database    597

Summary    598

20  Creating and Managing Tables    599

What’s New in SQL Server 2012    599

Creating Tables    600

Using Object Explorer to Create Tables    600

Using Database Diagrams to Create Tables    601

Using T-SQL to Create Tables    602

Defining Columns    605

Data Types    605

Column Properties    612

Column Sets    618

Working with Sparse Columns    619

Sparse Columns: Good or Bad?    623

Defining Sparse Columns in SSMS    623

Defining Table Location    623

Defining Table Constraints    625

Modifying Tables    627

Using T-SQL to Modify Tables    627

Using Object Explorer and the Table Designer to Modify Tables    630

Using Database Diagrams to Modify Tables    633

Dropping Tables    635

Using Partitioned Tables    636

Creating a Partition Function    637

Creating a Partition Scheme    640

Creating a Partitioned Table    641

Adding and Dropping Table Partitions    644

Switching Table Partitions    648

Using FILESTREAM Storage    652

Enabling FILESTREAM Storage    653

Setting Up a Database for FILESTREAM Storage    656

Using FILESTREAM Storage for Data Columns    657

Using FileTables    660

FileTable Prerequisites    660

Creating FileTables    661

Copying Files to the FileTable    662

Creating Temporary Tables    663

Summary    664

21  Creating and Managing Indexes    665

What’s New in Creating and Managing Indexes    665

Types of Indexes    666

Clustered Indexes    666

Nonclustered Indexes    668

Creating Indexes    669

Creating Indexes with T-SQL    670

Creating Indexes with SSMS    673

Managing Indexes    676

Managing Indexes with T-SQL    677

Managing Indexes with SSMS    680

Dropping Indexes    681

Online Indexing Operations    681

Indexes on Views    683

Summary    684

22  Implementing Data Integrity    685

What’s New in Data Integrity    685

Types of Data Integrity    686

Domain Integrity    686

Entity Integrity    686

Referential Integrity    686

Enforcing Data Integrity    686

Implementing Declarative Data Integrity    686

Implementing Procedural Data Integrity    687

Using Constraints    687

The PRIMARY KEY Constraint    687

The UNIQUE Constraint    689

The FOREIGN KEY Referential Integrity Constraint    690

The CHECK Constraint    694

Creating Constraints    695

Managing Constraints    700

Rules    704

Defaults    705

Declarative Defaults    705

Bound Defaults    707

When a Default Is Applied    707

Restrictions on Defaults    709

Summary    710

23  Creating and Managing Views    711

What’s New in Creating and Managing Views    711

Definition of Views    711

Using Views    712

Simplifying Data Manipulation    713

Focusing on Specific Data    714

Abstracting Data    715

Controlling Access to Data    716

Creating Views    718

Creating Views Using T-SQL    719


Creating Views Using the View Designer    723

Managing Views    725

Altering Views with T-SQL    726

Dropping Views with T-SQL    726

Managing Views with SSMS    727

Data Modifications and Views    727

Partitioned Views    728

Modifying Data Through a Partitioned View    732

Distributed Partitioned Views    732

Indexed Views    734

Creating Indexed Views    734

Indexed Views and Performance    737

To Expand or Not to Expand    740

Summary    741

24  Creating and Managing Stored Procedures    743

What’s New in Creating and Managing Stored Procedures    743

Advantages of Stored Procedures    743

Creating Stored Procedures    745

Creating Procedures in SSMS    746

Executing Stored Procedures    753

Executing Procedures in SSMS    754

Execution Context and the EXECUTE AS Clause    755

Using the WITH RESULT SETS Clause    758

Deferred Name Resolution    761

Identifying Objects Referenced in Stored Procedures    763

Viewing Stored Procedures    765

Modifying Stored Procedures    769

Viewing and Modifying Stored Procedures with SSMS    769

Using Input Parameters    771

Setting Default Values for Parameters    772

Passing Object Names as Parameters    775

Using Wildcards in Parameters    777

Using Table-Valued Parameters    778

Using Output Parameters    780

Returning Procedure Status    781

Debugging Stored Procedures Using SQL Server Management Studio    783

Using System Stored Procedures    785

Startup Procedures    789

Summary    793

25  Creating and Managing User-Defined Functions    795

Why Use User-Defined Functions?    795

Types of User-Defined Functions    798

Scalar Functions    798

Table-Valued Functions    801

Creating and Managing User-Defined Functions    803

Creating User-Defined Functions    803

Viewing and Modifying User-Defined Functions    814

Managing User-Defined Function Permissions    823

Rewriting Stored Procedures as Functions    824

Creating and Using CLR Functions    825

Adding CLR Functions to a Database    825

Deciding Between Using T-SQL or CLR Functions    827

Summary    828

26  Creating and Managing Triggers    829

What’s New in Creating and Managing Triggers    830

Using DML Triggers    830

Creating DML Triggers    831

Using AFTER Triggers    833

Using inserted and deleted Tables    837

INSTEAD OF Triggers    841

Using DDL Triggers    849

Creating DDL Triggers    853

Managing DDL Triggers    857

Using CLR Triggers    859

Using Nested Triggers    862

Using Recursive Triggers    862

Summary    863

27  Transaction Management and the Transaction Log    865

What’s New in Transaction Management    865

What Is a Transaction?    865

How SQL Server Manages Transactions    866

Defining Transactions    867

AutoCommit Transactions    867

Explicit User-Defined Transactions    868

Implicit Transactions    874

Implicit Transactions Versus Explicit Transactions    877

Transactions and Batches    877

Transactions and Stored Procedures    879

Transactions and Triggers    884

Triggers and Transaction Nesting    885

Triggers and Multistatement Transactions    888

Using Savepoints in Triggers    889

Transactions and Locking    890


Coding Effective Transactions    892

Transaction Logging and the Recovery Process    893

The Checkpoint Process    894

Automatic Checkpoints    896

Indirect Checkpoints    897

Manual Checkpoints    899

The Recovery Process    900

Managing the Transaction Log    902

Long-Running Transactions    906

Distributed Transactions    909

Summary    910

28  Database Snapshots    911

What’s New with Database Snapshots    912

What Are Database Snapshots?    912

Limitations and Restrictions of Database Snapshots    917

Copy-on-Write Technology    918

When to Use Database Snapshots    919

Reverting to a Snapshot for Recovery Purposes    919

Safeguarding a Database Prior to Making Mass Changes    921

Providing a Testing (or Quality Assurance) Starting

Point (Baseline)    921

Providing a Point-in-Time Reporting Database    922

Providing a Highly Available and Offloaded Reporting

Database from a Database Mirror    923

Setup and Breakdown of a Database Snapshot    924

Creating a Database Snapshot    925

Removing a Database Snapshot    930

Reverting to a Database Snapshot for Recovery    930

Reverting a Source Database from a Database Snapshot    930

Using Database Snapshots with Testing and QA    931

Database Snapshots Maintenance and Security Considerations    932

Security for Database Snapshots    932

Snapshot Sparse File Size Management    932

Number of Database Snapshots per Source Database    933

Summary    933

29  Database Maintenance    935

What’s New in Database Maintenance    936

The Maintenance Plan Wizard    936

Backing Up Databases    937

Checking Database Integrity    941

Shrinking Databases    942

Maintaining Indexes and Statistics    943

Scheduling a Maintenance Plan    947

Managing Maintenance Plans Without the Wizard    950

Executing a Maintenance Plan    954

Maintenance Without a Maintenance Plan    955

Database Maintenance Policies    956

Summary    956

Part VI  SQL Server Performance and Optimization

30  Data Structures, Indexes, and Performance    959

What’s New for Data Structures, Indexes, and Performance    960

Understanding Data Structures    960

Database Files and Filegroups    961

Primary Data File    962

Secondary Data Files    963

The Log File    963

File Management    963

Using Filegroups    965

FILESTREAM Filegroups    967

Database Pages    969

Page Types    970

Data Pages    971

Row-Overflow Pages    977

LOB Data Pages    978

Index Pages    980

Space Allocation Structures    981

Extents    981

Global and Shared Global Allocation Map Pages    982

Page Free Space Pages    983

Index Allocation Map Pages    983

Differential Changed Map Pages    984

Bulk Changed Map Pages    984

Data Compression    985

Row-Level Compression    985

Page-Level Compression    988

The CI Record    990

Implementing Page Compression    990

Evaluating Page Compression    991

Managing Data Compression with SSMS    994

Understanding Table Structures    995

Heap Tables    997

Clustered Tables    999

Understanding Index Structures    1000

Clustered Indexes    1001

Nonclustered Indexes    1004

Columnstore Indexes    1008

Data Modification and Performance    1013

Inserting Data    1013

Deleting Rows    1016

Updating Rows    1017

Index Utilization    1018

Index Selection    1020

Evaluating Index Usefulness    1021

Index Statistics    1024

The Statistics Histogram    1026

How the Statistics Histogram Is Used    1028

Index Densities    1029

Estimating Rows Using Index Statistics    1030

Generating and Maintaining Index and Column Statistics    1031

SQL Server Index Maintenance    1040

Setting the Fill Factor    1050

Reapplying the Fill Factor    1052

Disabling Indexes    1052

Managing Indexes with SSMS    1054

Index Design Guidelines    1054

Clustered Index Indications    1055

Nonclustered Index Indications    1057

Index Covering    1059

Included Columns    1061

Wide Indexes Versus Multiple Indexes    1062

Indexed Views    1062

Indexes on Computed Columns    1064

Filtered Indexes and Statistics    1065

Creating and Using Filtered Indexes    1067

Creating and Using Filtered Statistics    1069

Choosing Indexes: Query Versus Update Performance    1070

Identifying Missing Indexes    1071

The Database Engine Tuning Advisor    1072

Missing Index Dynamic Management Objects    1072

Missing Index Feature Versus Database Engine

Tuning Advisor    1074

Identifying Unused Indexes    1075

Summary    1078

31  Understanding Query Optimization    1079

What’s New in Query Optimization    1080

What Is the Query Optimizer?    1080

Query Compilation and Optimization    1081

Compiling DML Statements    1081

Optimization Steps    1082

Query Analysis    1083

Identifying Search Arguments    1083

Identifying OR Clauses    1083

Identifying Join Clauses    1084

Row Estimation and Index Selection    1085

Evaluating SARG and Join Selectivity    1085

Estimating Access Path Cost    1090

Using Multiple Indexes    1097

Optimizing with Indexed Views    1104

Optimizing with Filtered Indexes    1107

Join Selection    1109

Join Processing Strategies    1109

Determining the Optimal Join Order    1114

Subquery Processing    1115

Execution Plan Selection    1118

Query Plan Caching    1121

Query Plan Reuse    1121

Query Plan Aging    1123

Recompiling Query Plans    1124

Monitoring the Plan Cache    1125

Other Query Processing Strategies    1133

Predicate Transitivity    1133

Group by Optimization    1134

Queries with DISTINCT    1134

Queries with UNION    1135

Queries Using Columnstore Indexes    1136

Parallel Query Processing    1137

Parallel Query Configuration Options    1138

Identifying Parallel Queries    1139

Common Query Optimization Problems    1140

Out-of-Date or Insufficient Statistics    1140

Poor Index Design    1141

Search Argument Problems    1141

Large Complex Queries    1143

Triggers    1143

Managing the Optimizer    1144

Optimizer Hints    1145

Forced Parameterization    1151

Using the USE PLAN Query Hint    1153

Using Plan Guides    1155

Limiting Query Plan Execution with the Query Governor    1163

Summary    1166

32  Query Analysis    1167

What’s New in Query Analysis    1168

Query Analysis in SSMS    1168

Execution Plan ToolTips    1169

Logical and Physical Operator Icons    1173

Analyzing Stored Procedures    1181

Saving and Viewing Graphical Execution Plans    1181

Displaying Execution Plan XML    1183

Missing Index Hints    1184

SSMS Client Statistics    1188

Using the SET SHOWPLAN Options    1190




Using sys.dm_exec_query_plan    1194

Query Statistics    1196



Using datediff() to Measure Runtime    1202



Query Analysis with SQL Server Profiler    1204

Summary    1206

33  Locking and Performance    1207

What’s New in Locking and Performance    1207

The Need for Locking    1207

Transaction Isolation Levels in SQL Server    1208

Read Uncommitted Isolation    1209

Read Committed Isolation    1210

Read Committed Snapshot Isolation    1211

Repeatable Read Isolation    1212

Serializable Read Isolation    1213

Snapshot Isolation    1213

The Lock Manager    1216

Monitoring Lock Activity in SQL Server    1217

Querying the sys.dm_tran_locks View    1217

Viewing Locking Activity with SQL Server Profiler    1221

Monitoring Locks with Performance Monitor    1223

SQL Server Lock Types    1225

Shared Locks    1226

Update Locks    1227

Exclusive Locks    1228

Intent Locks    1228

Schema Locks    1229

Bulk Update Locks    1230

SQL Server Lock Granularity    1230

Serialization and Key-Range Locking    1232

Using Application Locks    1236

Index Locking    1239

Row-Level Versus Page-Level Locking    1240

Lock Escalation    1241

Lock Compatibility    1243

Locking Contention and Deadlocks    1243

Identifying Locking Contention    1244

Setting the Lock Timeout Interval    1247

Minimizing Locking Contention    1248

Deadlocks    1249

Table Hints for Locking    1263

Transaction Isolation-Level Hints    1264

Lock Granularity Hints    1266

Lock Type Hints    1266

Optimistic Locking    1266

Optimistic Locking Using the rowversion Data Type    1267

Optimistic Locking with Snapshot Isolation    1269

Summary    1272

34  Database Design and Performance    1273

What’s New in Database Design and Performance    1273

Basic Tenets of Designing for Performance    1274

Logical Database Design Issues    1275

Normalization Conditions    1275

Normalization Forms    1275

Benefits of Normalization    1277

Drawbacks of Normalization    1277

Denormalizing a Database    1277

Denormalization Guidelines    1278

Essential Denormalization Techniques    1279

Database Filegroups and Performance    1285

RAID Technology    1287

RAID Level 0    1287

RAID Level 1    1289

RAID Level 10    1290

RAID Level 5    1290

SQL Server and SAN Technology    1292

What Is a SAN?    1292

SAN Considerations for SQL Server    1293

Summary    1294

35  Monitoring SQL Server Performance    1295

What’s New in Monitoring SQL Server Performance    1296

Performance Monitoring Tools    1297

The Data Collector and the MDW    1297

SQL Server Utility    1319

SQL Server Extended Events    1323

Windows Performance Monitor    1359

A Performance Monitoring Approach    1371

Monitoring the Network Interface    1372

Monitoring the Processors    1374

Monitoring Memory    1379

Monitoring the Disk System    1382

Monitoring SQL Server’s Disk Activity    1384

Monitoring Other SQL Server Performance Items    1385

Summary    1386

36  SQL Server Database Engine Tuning Advisor    1387

What’s New in SQL Server Database Engine Tuning Advisor    1387

SQL Server Instance Architecture    1388

Database Engine Tuning Advisor    1389

The Database Engine Tuning Advisor GUI    1390

The Database Engine Tuning Advisor Command Line    1397

Summary    1405

37  Managing Workloads with the Resource Governor    1407

What’s New for Resource Governor    1408

Overview of Resource Governor    1408

Resource Governor Components    1410

Classification    1410

Resource Pools    1410

Workload Groups    1412

Configuring Resource Governor    1413

Enabling Resource Governor    1413

Defining Resource Pools    1415

Defining Workload Groups    1417

Creating a Classifier Function    1421

Monitoring Resource Usage    1424

Modifying Your Resource Governor Configuration    1428

Deleting Workload Groups    1429

Deleting Resource Pools    1430

Modifying a Classifier Function    1431

Summary    1431

38  A Performance and Tuning Methodology    1433

The Full Architectural Landscape    1434

Primary Performance and Tuning Handles    1435

A Performance and Tuning Methodology    1436

Designing In Performance and Tuning from the Start    1437

Code and Test    1440

Performance and Tuning for an Existing Implementation    1442

Performance and Tuning Design Guidelines    1448

Hardware and Operating System Guidelines    1448

SQL Server Instance Guidelines    1450

Database-Level Guidelines    1451

Table Design Guidelines    1451

Indexing Guidelines    1453

View Design Guidelines    1455

Transact-SQL Guidelines    1455

Application Design Guidelines    1459

Distributed Data Guidelines    1460

High-Availability Guidelines    1460

Tools of the Performance and Tuning Trade    1461

Microsoft Out-of-the-Box    1461

Third-Party Performance and Tuning Tools    1462

Summary    1464

Part VII  SQL Server High Availability

39  SQL Server High Availability Fundamentals    1467

What’s New in High Availability    1468

What Is High Availability?    1469

The Fundamentals of HA    1471

Hardware Factors    1471

Backup Considerations    1471

Operating System Upgrades    1472

Vendor Agreements Followed    1472

Training Kept Up-to-Date    1472

Quality Assurance Done Well    1472

Standards/Procedures Followed    1472

Server Instance Isolation    1472

Building Solutions with One or More HA Options    1474

Failover Cluster Services (FCS)    1475

SQL Clustering    1476

AlwaysOn Failover Clustering Instance (FCI)    1478

AlwaysOn Availability Groups    1479

Data Replication    1480

Change Data Capture    1482

Log Shipping    1482

Database Mirroring    1484

Combining Failover with Scale-Out Options    1485

Other HA Techniques That Yield Great Results    1486

High Availability from the Windows Server Family Side    1489

Microsoft Virtual Machines and Hyper-V    1489

Summary    1490

40  Data Replication    1493

What’s New in Data Replication    1494

What Is Replication?    1495

The Publisher, Distributor, and Subscriber

Magazine Metaphor    1497

Publications and Articles    1498

Filtering Articles    1498

Replication Scenarios    1503

The Central Publisher Replication Model    1503

The Central Publisher with Remote Distributor

Replication Model    1504

The Publishing Subscriber Replication Model    1506

The Central Subscriber Replication Model    1507

The Multiple Publishers with Multiple Subscribers

Replication Model    1507

The Updating Subscribers Replication Model    1509

The Peer-to-Peer Replication Model    1511

Subscriptions    1511

Anonymous Subscriptions (Pull Subscriptions)    1513

The Distribution Database    1513

Replication Agents    1515

The Snapshot Agent    1516

The Log Reader Agent    1518

The Distribution Agent    1519

The Merge Agent    1520

Other Specialized Agents    1520

Planning for SQL Server Data Replication    1521

Autonomy, Timing, and Latency of Data    1522

Methods of Data Distribution    1522

SQL Server Replication Types    1523

Snapshot Replication    1523

Transactional Replication    1524

Merge Replication    1525

Basing the Replication Design on User Requirements    1526

Data Characteristics    1528

Setting Up Replication    1529

Creating a Distributor and Enabling Publishing    1529

Creating a Publication    1535

Horizontal and Vertical Filtering    1542

Creating Subscriptions    1544

Scripting Replication    1550

Monitoring Replication    1555

Replication Monitoring SQL Statements    1555

Monitoring Replication within SQL Server Management

Studio    1557

Troubleshooting Replication Failures    1559

Peer-to-Peer Replication    1560

The Performance Monitor    1566

Replication in Heterogeneous Environments    1566

Backup and Recovery in a Replication Configuration    1567

Some Thoughts on Performance    1568

Log Shipping    1569

Data Replication and Database Mirroring or AlwaysOn

Features for Fault Tolerance and High Availability    1569

Change Data Capture    1570

The Change Data Capture Tables    1571

Enabling CDC for a Database    1572

Enabling CDC for a Table    1573

Querying the CDC Tables    1575

CDC and DDL Changes to Source Tables    1581

CDC and AlwaysOn Availability Groups    1582

Change Tracking    1582

Implementing Change Tracking    1583

Identifying Tracked Changes    1585

Identifying Changed Columns    1589

Change Tracking Overhead    1590

Summary    1591

41  Database Mirroring    1593

What’s New in Database Mirroring    1594

What Is Database Mirroring?    1594

Copy-on-Write Technology    1596

When to Use Database Mirroring    1597

Roles of the Database Mirroring Configuration    1597

Playing Roles and Switching Roles    1598

Database Mirroring Operating Modes    1598

Setting Up and Configuring Database Mirroring    1599

Getting Ready to Mirror a Database    1600

Creating the Endpoints    1603

Granting Permissions    1605

Creating the Database on the Mirror Server    1605

Identifying the Other Endpoints for Database Mirroring    1607

Configuring Database Mirroring by Using the Wizard    1609

Monitoring a Mirrored Database Environment    1616

Removing Mirroring    1619

Testing Failover from the Principal to the Mirror    1621

Client Setup and Configuration for Database Mirroring    1623

Using Replication and Database Mirroring Together    1624

Using Database Snapshots from a Mirror for Reporting    1625

Summary    1627

42  SQL Server Failover Clustering    1629

What’s New in SQL Server Failover Clustering    1630

How Microsoft SQL Server Failover Clustering Works    1630

Understanding WSFC    1632

Extending WSFC with NLB    1636

How WSFC Sets the Stage for SQL Server Clustering    1637

Installing SQL Server Failover Clustering    1638

Configuring SQL Server Database Disks    1639

Installing Network Interfaces    1641

Installing WSFC    1641

Cluster Events    1642

Installing SQL Server within WSFC    1642

Fail Over to Another Node    1655

The Client Connection Impact of a Failover    1655

Potential Problems to Watch Out for with SQL Server

Failover Clustering    1658

Summary    1659

43  SQL Server AlwaysOn and Availability Groups    1661

SQL Server AlwaysOn and Availability Groups    1661

Windows Failover Cluster Services    1662

AlwaysOn Failover Clustering Instances    1662

AlwaysOn Availability Groups    1663

Combining Failover with Scale-Out Options    1666

Building a Multinode AlwaysOn Configuration    1666

Adding Replicas    1681

Dashboard and Monitoring    1681

Summary    1683

Part VIII  SQL Server Application Development

44  What’s New for Transact-SQL in SQL Server 2012    1687

THROW Statement    1687

The SEQUENCE Object    1693

SEQUENCE Objects Versus Identity Columns    1701

New Conversion Functions    1702

The PARSE Function    1702

The TRY_PARSE Function    1703

The TRY_CONVERT Function    1704

New Logical Functions    1705

The CHOOSE Function    1705

The IIF Function    1706

New String Functions    1706

CONCAT    1706

FORMAT    1708

New date and time Functions    1714

Some Recently Added Date and Time Features You

May Have Missed    1717

Date and Time Conversions    1720

SQL Server 2012 Enhancements to Windowing Functions    1722

The OVER Clause    1722

Ranking Functions    1723

Calculating Aggregates with the OVER Clause    1729

SQL Server 2012 Enhancements to Windowing Functions    1730

Ad Hoc Query Paging    1744

New Features and Enhancements to Spatial Data    1747

The Spatial Data Types    1747

Spatial Instance Types    1748

Other SQL Server 2012 Enhancements    1749

Representing Spatial Data in SQL Server 2012    1750

Working with Geometry Data    1751

Working with Geography Data    1754

Spatial Data Support in SSMS    1756

Spatial Data Types: Where to Go from Here?    1759

Summary    1759

45  Transact-SQL Programming Guidelines, Tips, and Tricks    1761

General T-SQL Coding Recommendations    1762

Provide Explicit Column Lists    1762

Qualify Object Names with a Schema Name    1764

Avoid SQL Injection Attacks When Using Dynamic SQL    1768

Comment Your T-SQL Code    1778

General T-SQL Performance Recommendations    1779

UNION Versus UNION ALL Performance    1779

Use IF EXISTS Instead of SELECT COUNT(*)    1779

Avoid Unnecessary ORDER BY or DISTINCT Clauses    1779

Temp Tables Versus Table Variables Versus Common Table Expressions    1780

Avoid Unnecessary Function Executions    1781

Cursors and Performance    1782

Variable Assignment in UPDATE Statements    1784

In Case You Missed It: Recently Added T-SQL Features    1788

TOP Enhancements    1788

The OUTPUT Clause    1793

MERGE Statement    1798

MERGE Statement Best Practices and Guidelines    1804

Insert over DML    1805

Common Table Expressions    1807

Recursive Queries with CTEs    1809

Using the Hierarchyid Data Type    1818

Creating a Hierarchy    1818

Populating the Hierarchy    1819

Querying the Hierarchy    1821

Modifying the Hierarchy    1825

Using Row Numbers for Paging Results    1830

De-Duping Data with Ranking Functions    1834

PIVOT and UNPIVOT    1836

The APPLY Operator    1841



The TABLESAMPLE Clause    1843

Variable Assignment in DECLARE Statements    1847

Compound Assignment Operators    1848

GROUP BY Clause Enhancements    1848


The grouping_id() Function    1852

General T-SQL Tips and Tricks    1854

Date Calculations    1854

Using CONTEXT_INFO    1857

Working with Outer Joins    1859

Generating T-SQL Statements with T-SQL    1869

Summary    1869

46  Advanced Stored Procedure Programming and Optimization    1871

T-SQL Stored Procedure Coding Guidelines    1871

Calling Stored Procedures from Transactions    1874

Handling Errors in Stored Procedures    1877

Using Cursors in Stored Procedures    1881

Using CURSOR Variables in Stored Procedures    1886

Nested Stored Procedures    1892

Recursive Stored Procedures    1893

Using Temporary Tables in Stored Procedures    1897

Temporary Table Performance Tips    1899

Using the table Data Type    1901

Stored Procedure Performance    1903

Query Plan Caching    1904

The SQL Server Plan Cache    1904

Shared Query Plans    1905

Automatic Query Plan Recompilation    1905

Forcing Recompilation of Query Plans    1908

Using Dynamic SQL in Stored Procedures    1912

Using sp_executesql    1915

Installing and Using .NET CLR Stored Procedures    1918

Adding CLR Stored Procedures to a Database    1919

T-SQL or CLR Stored Procedures?    1920

Using xp_cmdshell    1921

Summary    1922

47  SQL Server and the .NET Framework    1925

What’s New in SQL Server 2012 and the .NET Framework    1925

Getting Comfortable with ADO.NET 4.5 and SQL Server 2012    1926

Essential ADO.NET Development Techniques    1926

Developing with LINQ to SQL    1933

Getting Started with LINQ to SQL    1933

Going Deeper    1935

Uncovering LINQ to SQL with LINQPad    1938

Introducing the Entity Framework    1942

Getting Started    1943

Data Operations with EF Entities    1946

Using WCF Data Services    1951

Getting Set Up    1951

Essentials    1951

Building Your Data Service    1951

CRUD Operations    1958

Summary    1963

48  SQLCLR: Developing SQL Server Objects in .NET    1965

What’s New for SQLCLR in SQL Server 2012    1965

Developing Custom Managed Database Objects    1968

An Introduction to Custom Managed Database Objects    1968

Managed Object Permissions    1969

Developing Managed Objects with Visual Studio 2012    1971

Developing Managed Stored Procedures    1972

Developing Managed User-Defined Functions (UDFs)    1977

Developing Managed User-Defined Types (UDTs)    1987

Developing Managed User-Defined Aggregates (UDAs)    1995

Developing Managed Triggers    1998

Using Transactions    2004

Using the Related System Catalogs    2006

Summary    2007

49  Using XML in SQL Server 2012    2009

What’s New in Using XML in SQL Server 2012    2009

Understanding XML    2011

Relational Data as XML: The FOR XML Modes    2011

RAW Mode    2012

AUTO Mode    2018

EXPLICIT Mode    2022

PATH Mode    2026

FOR XML and the xml Data Type    2029

XML as Relational Data: Using OPENXML    2031

Using the xml Data Type    2035

Defining and Using xml Columns    2036

Using XML Schema Collections    2039

The Built-in xml Data Type Methods    2045

Indexing and Full-Text Indexing of xml Columns    2063

Indexing xml Columns    2064

Full-Text Indexing xml Columns    2077

Summary    2078

50  SQL Server Service Broker    2079

What’s New in Service Broker    2079

Understanding Distributed Messaging    2080

The Basics of Service Broker    2080

Example System Design    2084

Understanding Service Broker Constructs    2085

Defining Messages and Choosing a Message Type    2085

Setting Up Contracts for Communication    2090

Creating Queues for Message Storage    2091

Defining Services to Send and Receive Messages    2093

Planning Conversations Between Services    2094

Service Broker Routing and Security    2105

Using Certificates for Conversation Encryption    2105

A Final Note on the Sample System    2113

Troubleshooting SSB Applications with ssbdiagnose.exe    2113

AlwaysOn Availability Group Support    2114

Related System Catalogs    2115

Summary    2117

51  SQL Server Full-Text Search    2119

What’s New in SQL Server 2012 Full-Text Search    2120

Installing SQL FTS    2121

Upgrade Options in SQL Server 2012    2123

How SQL Server FTS Works    2124

Indexing    2125

Searching    2131

Implementing SQL Server 2012 Full-Text Catalogs    2131

Setting Up a Full-Text Index    2134

Using T-SQL Commands to Build Full-Text Indexes    2134

Using the Full-Text Indexing Wizard to Build Full-Text

Indexes and Catalogs    2152

Full-Text Searches    2155



Semantic Search    2164

Full-Text Search Maintenance    2166

Full-Text Search Performance    2167

Full-Text Search Troubleshooting    2167

Summary    2169

52  Working with SQL Azure    2171

Setting Up Subscriptions, Servers, and Databases    2171

Setting Up Your Windows Azure Subscription    2172

Creating a Logical Server    2174

Managing Your Server    2176

Configuring Your Firewall    2176

Using SQL Server Management Studio    2177

Using Management Portal    2179

Working with Databases    2179

Understanding SQL Database Editions    2179

Managing Databases Using T-SQL    2183

Migrating Data into SQL Database    2184

Copying Databases    2186

Backing Up and Restoring Databases    2187

Using Database Copies for Backup and Restore    2187

Using BACPAC Files for Backup and Restore    2187

Managing Logins, Users, and Roles    2189

Understanding Roles    2190

Managing Logins and Users    2190

Using SQL Database with ADO.NET    2192

Connecting to SQL Database Using a Custom

Windows Application    2192

Connectivity Limitations    2196

Understanding SQL Database Billing    2203

Baseline Billing    2203

Tracking Your Usage    2204

Understanding SQL Database Limitations    2206

Unsupported and Partially Supported Functionality    2206

References    2209

Summary    2209

Part IX  SQL Server Business Intelligence Features

53  SQL Server 2012 Analysis Services    2213

What’s New in SSAS    2213

Understanding SSAS and OLAP    2215

Understanding the SSAS Environment Wizards    2217

OLAP Versus OLTP    2221

An Analytics Design Methodology    2223

An Analytics Mini-Methodology    2223

An OLAP Requirements Example: CompSales International    2225

CompSales International Requirements    2225

OLAP Cube Creation    2227

Using SQL Server SSDT    2228

Creating an OLAP Database    2229

Defining Dimensions and Hierarchies    2235

Creating the Other Dimensions    2244

Creating the Cube    2246

Building and Deploying the Cube    2249

Populating the Cube with Data    2251

Aggregating Data Within the Cube    2252

Browsing Data in the Cube    2257

Delivering Data to Users    2261

ADO MD    2263

Query Analysis and Optimization    2264

Generating a Relational Database    2266

Limitations of a Relational Database    2267

Cube Perspectives    2267

Data Mining    2268

Security and Roles    2278

Tabular Models and SSAS    2279

OLAP Performance    2280

Summary    2281

54  SQL Server Integration Services    2283

What’s New with SSIS    2284

SSIS Basics    2285

SSIS Architecture and Concepts    2290

SSIS Tools and Utilities    2293

A Data Transformation Requirement    2298

Running the SSIS Import and Export Wizard    2300

The SSIS Designer    2309

The Package Execution Utility    2318

The dtexec Utility    2320

Running Packages    2321

Running Package Examples    2325

The dtutil Utility    2326

dtutil Examples    2328

Change Data Capture and SSIS    2333

Using bcp    2333

Fundamentals of Exporting and Importing Data    2335

File Data Types    2338

Format Files    2339

Using Views    2348

Logged and Nonlogged Operations    2348

Batches    2349

Parallel Loading    2349

Supplying Hints to bcp    2350

Summary    2352

55  SQL Server 2012 Reporting Services    2353

What’s New in SSRS 2012    2353

Discontinued Functionality and Breaking Changes    2354

Reporting Services Architecture    2355

HTTP Architecture    2358

Installing and Configuring SSRS    2358

The Installation Sequence    2359

SSRS Configuration Using RSCM    2362

Developing Reports    2367

Tools of the Trade    2367

Report Basics    2368

Overview of the Report Development Process    2369

Data Planning and Preparation    2369

Using Shared Data Sources    2370

Using Datasets    2370

Using Shared Datasets    2371

Developing Reports Using SSDT    2371

Working with the Tablix    2379

Understanding Expressions    2380

Report Design Fundamentals    2383

Designing Reports Using Report Builder    2394

Report Builder and Report Model Security    2409

Enabling Report Builder    2410

Management and Security    2410

Securing Reports    2410

Subscriptions    2412

Report Execution Options    2414

Performance and Monitoring    2416

SSRS Trace Log    2416

Execution Log    2416

Windows Event Log    2417

Performance Counters    2417

Summary    2417

56  Master Data Services and Data Quality Services    2419

Master Data Services    2419

Data Quality Services    2420

What’s New in MDS and DQS    2420

Master Data Management    2421

Master Data Services Terms and Concepts    2423

Master Data Services    2426

Data Quality Services    2446

Summary    2460

57  Parallel Data Warehouse    2463

What’s New in Parallel Data Warehouse    2463

Understanding MPP and PDW    2464

MPP Architecture    2465

The PDW    2466

Data on a PDW    2468

PDW and Big Data (Hadoop)    2471

xVelocity Columnstore Indexes    2471

Columnstore Indexes    2472

Summary    2477

Part X  Bonus Chapters

58  Managing Linked Servers    2481

What’s New in Managing Linked Servers    2482

Linked Servers    2483

Distributed Queries    2483

Distributed Transactions    2484

Adding, Dropping, and Configuring Linked Servers    2485

sp_addlinkedserver    2485

sp_linkedservers    2492

sp_dropserver    2494

sp_serveroption    2494

Mapping Local Logins to Logins on Linked Servers    2495

sp_addlinkedsrvlogin    2496

sp_droplinkedsrvlogin    2497

sp_helplinkedsrvlogin    2498

Obtaining General Information About Linked Servers    2499

Executing a Stored Procedure via a Linked Server    2500

Setting Up Linked Servers Using SQL Server Management Studio    2501

Summary    2505

59  SQL Server Disaster Recovery Planning    2507

What’s New in SQL Server Disaster

Recovery Planning    2508

How to Approach Disaster Recovery    2508

Disaster Recovery Patterns    2510

Recovery Objectives    2514

A Data-Centric Approach to Disaster Recovery    2516

Microsoft SQL Server Options for Disaster Recovery    2516

Data Replication    2517

Log Shipping    2519

Database Mirroring and Snapshots    2519

Change Data Capture    2521

AlwaysOn Availability Groups    2521

The Overall Disaster Recovery Process    2522

The Focus of Disaster Recovery    2523

Planning and Executing a Disaster Recovery    2530

Have You Detached a Database Recently?    2530

Third-Party Disaster Recovery Alternatives    2530

Summary    2531

60  SQL Server Configuration Options    2533

What’s New in Configuring, Tuning, and Optimizing

SQL Server Options    2533

SQL Server Instance Architecture    2534

Configuration Options    2535

Fixing an Incorrect Option Setting    2542

Setting Configuration Options with SSMS    2543

Obsolete Configuration Options    2543

Configuration Options and Performance    2544

access check cache bucket count    2544

access check cache quota    2544

ad hoc distributed queries    2545

affinity I/O mask    2545

affinity mask    2547

Agent XP    2548

backup compression default    2549

blocked process threshold    2550

c2 audit mode    2550

clr enabled    2550

common criteria compliance enabled    2551

contained database authentication    2551

cost threshold for parallelism    2552

cross db ownership chaining    2553

cursor threshold    2553

Database Mail XPs    2554

default full-text language    2554

default language    2556

default trace enabled    2558

disallow results from triggers    2558

EKM provider enabled    2559

filestream_access_level    2559

fill factor    2559

index create memory    2560

in-doubt xact resolution    2560

lightweight pooling    2561

locks    2561

max degree of parallelism    2562

max server memory and min server memory    2562

max text repl size    2564

max worker threads    2565

media retention    2566

min memory per query    2566

nested triggers    2567

network packet size    2567

Ole Automation Procedures    2568

optimize for ad hoc workloads    2568

PH_timeout    2569

priority boost    2569

query governor cost limit    2570

query wait    2571

recovery interval    2571

remote access    2572

remote admin connections    2572

remote login timeout    2573

remote proc trans    2573

remote query timeout    2573

scan for startup procs    2575

show advanced options    2575

user connections    2575

user options    2577

XP-Related Configuration Options    2577

Summary    2578

Index    2579


Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020