Home > Store

Microsoft SQL Server 2014 Unleashed

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

Microsoft SQL Server 2014 Unleashed

eBook (Watermarked)

  • Your Price: $38.39
  • List Price: $47.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 Adobe® 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.


  • Copyright 2015
  • Dimensions: 7" x 9-1/8"
  • Pages: 2000
  • Edition: 1st
  • eBook (Watermarked)
  • ISBN-10: 0-13-408446-2
  • ISBN-13: 978-0-13-408446-6

The industry’s most complete, useful, and up-to-date guide to SQL Server 2014.

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 examples you’ll need to install, monitor, maintain, and optimize the
most complex database environments. The provided examples and sample code provide plenty of hands-on opportunities to learn more about SQL Server and create your own viable solutions.

Four leading SQL Server experts present deep practical insights for administering SQL Server, analyzing and optimizing queries, implementing data warehouses, ensuring high availability, tuning performance, and much more. You will benefit from their behind-the-scenes look into SQL Server, showing what goes on behind the various wizards and GUI-based tools. You’ll learn how to use the underlying SQL commands to fully unlock the power and capabilities of SQL Server.

Writing for all intermediate-to-advanced-level SQL Server professionals, the authors draw on immense production experience with SQL Server. Throughout, they focus on successfully applying SQL Server 2014’s most powerful capabilities and its newest tools and features.

Detailed information on how to…

  • Understand SQL Server 2014’s new features and each edition’s capabilities and licensing
  • Install, upgrade to, and configure SQL Server 2014 for better performance and easier management
  • Streamline and automate key administration tasks with Smart Admin
  • Leverage powerful new backup/restore options: flexible backup to URL, Managed Backup to Windows Azure, and encrypted backups
  • Strengthen security with new features for enforcing “least privilege”
  • Improve performance with updateable columnstore indexes, Delayed Durability, and other enhancements
  • Execute queries and business logic more efficiently with memoryoptimized tables, buffer pool extension, and natively-compiled stored procedures
  • Control workloads and Disk I/O with the Resource Governor
  • Deploy AlwaysOn Availability Groups and Failover Cluster Instances to achieve enterprise-class availability and disaster recovery
  • Apply new Business Intelligence improvements in Master Data Services, data quality, and Parallel Data Warehouse

Sample Content

Table of Contents

Introduction     1
Who This Book Is For     2
What This Book Covers     2
Conventions Used in This Book     4
Good Luck!     5

Part I Welcome to Microsoft SQL Server

1 SQL Server 2014 Overview     9
SQL Server Components and Features     9
    The SQL Server Database Engine     10
    SQL Server 2014 Administration and Management Tools     12
    Replication     15
    Merge Replication     16
    SQL Server AlwaysOn Features     17
    SQL Server Service Broker     18
    Full-Text and Semantic Search     18
    SQL Server Integration Services (SSIS)     20
    SQL Server Analysis Services (SSAS)     21
    SQL Server Reporting Services (SSRS)     23
    Master Data Services     23
    Data Quality Services     24
SQL Server 2014 Editions     24
    SQL Server 2014 Standard Edition     25
    SQL Server 2014 Enterprise Edition     26
    Differences Between the Enterprise and Standard Editions of SQL Server     26
    Other SQL Server 2014 Editions     28
SQL Server Licensing     30
    Web Edition Licensing     31
    Developer Edition Licensing     32
    Express Edition Licensing     32
    Choosing a Licensing Model     32
    Mixing Licensing Models     32
    Licensing SQL Server of High Availability     32
    Licensing SQL Server in a Virtual Environment     34
Summary     35
2 What’s New in SQL Server 2014     37
New SQL Server 2014 Features     37
    Memory-Optimized Tables/In-Memory OLTP     38
    New Cardinality Estimation Logic     38
    Delayed Durability for Transactions     38
    Buffer Pool Extension     38
    SQL Server Data Tools for Business Intelligence     39
SQL Server 2014 Enhancements     39
    Resource Governor Enhancements     39
    Security Enhancements     39
    Backup and Restore Enhancements     40
    Indexing Enhancements     40
    Monitoring Enhancements     41
    SQL Server AlwaysOn and Availability Groups Enhancements     42
    New Transact-SQL Enhancements     42
Deprecated and Discontinued Features     42
Summary     45

Part II SQL Server Tools and Utilities

3 SQL Server Management Studio     49
What’s New in SSMS     50
The Integrated Environment     50
    Window Management     50
    Integrated Help     53
Administration Tools     56
    Registered Servers     56
    Object Explorer     58
    Activity Monitor     60
    Log File Viewer     62
    SQL Server Utility     64
Development Tools     69
    The Query Editor     69
    Managing Projects in SSMS     77
    Integrating SSMS with Source Control     78
    Using SSMS Templates     80
    Using SSMS Snippets     84
    T-SQL Debugging     85
    Multiserver Queries     86
Summary     87
4 SQL Server Command-Line Utilities     89
What’s New in SQL Server Command-Line Utilities     90
The sqlcmd Command-Line Utility     91
    Executing the sqlcmd Utility     93
    Using Scripting Variables with sqlcmd     95
The dta Command-Line Utility     96
The tablediff Command-Line Utility     99
The bcp Command-Line Utility     102
The sqldiag Command-Line Utility     103
The sqlservr Command-Line Utility     105
The sqlLocalDB Command-Line Utility     106
Summary     108
5 SQL Server Profiler     111
What’s New with SQL Server Profiler     111
SQL Server Profiler Architecture     112
Creating Traces     113
    Events     115
    Data Columns     117
    Filters     120
Executing Traces and Working with Trace Output     122
Saving and Exporting Traces     123
    Saving Trace Output to a File     123
    Saving Trace Output to a Table     124
    Saving the Profiler GUI Output     124
    Importing Trace Files     125
    Importing a Trace File into a Trace Table     125
    Analyzing Trace Output with the Database Engine Tuning Advisor     128
Replaying Trace Data     128
Defining Server-Side Traces     131
    Monitoring Running Traces     141
    Stopping Server-Side Traces     143
Profiler Usage Scenarios     145
    Analyzing Slow Stored Procedures or Queries     145
    Deadlocks     146
    Identifying Ad Hoc Queries     148
    Identifying Performance Bottlenecks     148
    Monitoring Auto-Update Statistics     150
    Monitoring Application Progress     151
Summary     153
6 SQL Distributed Replay     155
What’s New for Distributed Replay     155
Overview of Distributed Replay     155
Distributed Replay Components     156
    Distributed Replay Administrative Tool     157
    Distributed Replay Controller     157
    Distributed Replay Clients     158
    Target Server     158
Configuring Distributed Replay     158
    Controller Configuration File     159
    Client Configuration File     159
    Preprocess Configuration File     160
    Replay Configuration File     161
Replay the Trace Data     163
    Configure Permissions and Security     163
    Capture the Workload     165
    Preprocess the Trace File     166
    Apply the Workload     167
Summary     169

Part III SQL Server Administration

7 SQL Server System and Database Administration     173
What’s New in SQL Server System and Database Administration     173
System Administrator Responsibilities     174
System Databases     174
    The master Database     175
    The resource Database     176
    The model Database     176
    The msdb Database     176
    The distribution Database     176
    The tempdb Database     177
    Maintaining System Databases     177
System Tables     178
System Views     179
    Compatibility Views     180
    Catalog Views     182
    Information Schema Views     184
    Dynamic Management Views     186
System Stored Procedures     189
    Useful System Stored Procedures     189
Summary     191
8 Installing SQL Server 2014     193
What’s New in Installing SQL Server 2014     193
    Installation Requirements     193
    Hardware Requirements     194
    Software Requirements     195
Installation Walkthrough     198
    Install Screens, Step-by-Step     198
    Installing SQL Server Documentation     217
Installing SQL Server Using a Configuration File     219
    Running an Automated or Manual Install     224
Installing SQL Server Using Sysprep     226
    Preparing a SQL Server Sysprep Image     226
    Completing a SQL Server Sysprep Image     229
    Modifying a SQL Server Sysprep Image     231
    Common Uses of SQL Server Sysprep Images     232
Installing Service Packs and Cumulative Updates     233
    Applying a Service Pack or Cumulative Update During a New Installation     233
Summary     236
9 Upgrading to SQL Server 2014     237
What’s New in Upgrading SQL Server     237
    The SQL Server 2014 Upgrade Matrix     237
Identifying Products and Features to be Upgraded     240
Using the SQL Server Upgrade Advisor (UA)     241
    Getting Started with the UA     241
    The Analysis Wizard     243
    The Report Viewer     249
Destination: SQL Server 2014     250
    Side-by-Side Upgrades     251
    Upgrading In-Place     259
    Upgrading the Database Engine     260
Installing Product Updates (Slipstreaming) During Upgrades     263
Upgrading Using a Configuration File     264
    Upgrading from Pre-SQL Server 2005 Versions     266
Upgrading Other SQL Server Components     266
    Upgrading Analysis Services     266
    Upgrading SQL Server Analysis Services     266
    Upgrading Reporting Services     266
    Upgrading SSIS Packages     269
    Migrating DTS Packages     271
Summary     271
10 Client Installation and Configuration     273
What’s New in Client Installation and Configuration     273
    Client/Server Networking Considerations     274
    Server Network Protocols     275
    The Server Endpoint Layer     277
    The Role of SQL Browser     280
Client Installation     281
    Installing the Client Tools     281
    Installing SNAC     282
Client Configuration     284
    Client Configuration Using SSCM     284
    Connection Encryption     287
Client Data Access Technologies     289
    Provider Choices     290
    Connecting Using the Various Providers and Drivers     291
    General Networking Considerations and Troubleshooting     296
Summary     299
11 Database Backup and Restore     301
What’s New in Database Backup and Restore     301
Developing a Backup and Restore Plan     302
Types of Backups     303
    Full Database Backups     304
    Differential Database Backups     304
    Partial Backups     305
    Differential Partial Backups     305
    File and Filegroup Backups     305
    Copy-Only Backups     306
    Transaction Log Backups     306
Recovery Models     306
    Full Recovery     307
    Bulk-Logged Recovery     308
    Simple Recovery     309
Backup Devices     310
    Disk Devices     310
    Tape Devices     310
    Network Shares     311
    Media Sets and Families     311
    Creating Backup Devices     311
Backing Up a Database     312
    Creating Database Backups with SSMS     312
    Creating Database Backups with T-SQL     315
Backing Up the Transaction Log     318
    Creating Transaction Log Backups with SSMS     318
    Creating Transaction Log Backups with T-SQL     319
Backup Scenarios     320
    Full Database Backups Only     320
    Full Database Backups with Transaction Log Backups     321
    Differential Backups     322
    Partial Backups     323
    File/Filegroup Backups     325
    Mirrored Backups     326
    Copy-Only Backups     326
    Compressed Backups     327
    Encrypted Backups     328
    System Database Backups     329
Restoring Databases and Transaction Logs     330
    Restores with T-SQL     330
    Restoring by Using SSMS     334
    Restore Information     339
Restore Scenarios     342
    Restoring to a Different Database     342
    Restoring a Snapshot     344
    Restoring a Transaction Log     344
    Restoring to the Point of Failure     345
    Restoring to a Point in Time     347
    Online Restores     349
    Restoring the System Databases     349
Additional Backup Considerations     351
    Frequency of Backups     352
    Using a Standby Server     352
    Snapshot Backups     353
    Considerations for Very Large Databases     354
    Maintenance Plans     354
Summary     355
12 Database Mail     357
What’s New in Database Mail     357
Setting Up Database Mail     358
    Creating Mail Profiles and Accounts     359
    Using T-SQL to Update and Delete Mail Objects     362
    Setting System-Wide Mail Settings     363
    Testing Your Setup     364
Sending and Receiving with Database Mail     364
    The Service Broker Architecture     364
    Sending Email     365
    Receiving Email     371
Using SQL Server Agent Mail     371
    Job Mail Notifications     371
    Creating an Operator     371
    Enabling SQL Agent Mail     371
    Creating the Job     372
    Testing the Job-Completion Notification     373
    Alert Mail Notifications     373
    Creating an Alert     373
    Testing the Alert Notification     374
Related Views and Procedures     375
    Viewing the Mail Configuration Objects     375
    Viewing Mail Message Data     376
Summary     377
13 SQL Server Agent     379
What’s New in Scheduling and Notification     380
Configuring the SQL Server Agent     380
    Configuring SQL Server Agent Properties     380
    Configuring the SQL Server Agent Startup Account     382
    Configuring Email Notification     384
    SQL Server Agent Proxy Account     385
Viewing the SQL Server Agent Error Log     387
SQL Server Agent Security     388
Managing Operators     389
Managing Jobs     391
    Defining Job Properties     391
    Defining Job Steps     392
    Defining Multiple Job Steps     394
    Defining Job Schedules     395
    Defining Job Notifications     397
    Viewing Job History     398
Managing Alerts     399
    Defining Alert Properties     399
    Defining Alert Responses     402
Scripting Jobs and Alerts     404
Multiserver Job Management     405
    Creating a Master Server     406
    Enlisting Target Servers     407
    Creating Multiserver Jobs     407
Event Forwarding     407
Summary     408
14 SQL Server Policy-Based Management     409
What’s New in Policy-Based Management     409
Introduction to Policy-Based Management     410
Policy-Based Management Concepts     411
    Facets     411
    Conditions     414
    Policies     415
    Categories     415
    Targets     415
    Execution Modes     415
    Central Management Servers     416
Implementing Policy-Based Management     418
    Creating a Condition Based on a Facet     418
    Creating a Policy     420
    Creating a Category     422
    Evaluating Policies     424
    Importing and Exporting Policies     425
Sample Templates and Real-World Examples     426
    Sample Policy Templates     426
    Evaluating Recovery Models     427
    Ensuring Object Naming Conventions     427
    Checking Best Practices Compliance     427
Policy-Based Management Best Practices     427
Summary     428
15 Security and User Administration     429
What’s New in Security and User Administration     429
An Overview of SQL Server Security     430
Authentication Methods     433
    Windows Authentication Mode     433
    Mixed Authentication Mode     433
    Setting the Authentication Mode     433
Managing Principals     434
    Logins     434
    SQL Server Security: Users     437
    The dbo User     438
    The guest User     439
    The INFORMATION_SCHEMA User     439
    The sys User     439
    User/Schema Separation     440
    Roles     441
    Fixed Server Roles     442
    Fixed Database Roles     443
    The public Role     445
    User-Defined Database Roles     446
    User-Defined Server Roles     448
    Application Roles     448
Managing Securables     449
Managing Permissions     450
Managing SQL Server Logins     452
    Using SSMS to Manage Logins     452
    Using T-SQL to Manage Logins     456
Managing SQL Server Users     457
    Using SSMS to Manage Users     458
    Using T-SQL to Manage Users     460
Managing Database Roles     461
    Using SSMS to Manage Database Roles     461
    Using T-SQL to Manage Database Roles     462
Managing Server Roles     462
    Using SSMS to Manage Server Roles     463
    Using T-SQL to Manage Server Roles     463
Managing SQL Server Permissions     464
    Using SSMS to Manage Permissions     464
    Using SSMS to Manage Permissions at the Server Level     465
    Using SSMS to Manage Permissions at the Database Level     467
    Using SSMS to Manage Permissions at the Object Level     470
    Using T-SQL to Manage Permissions     472
The Execution Context     473
    Explicit Context Switching     473
    Implicit Context Switching     474
Summary     475
16 Data Encryption     477
What’s New in Data Encryption     478
An Overview of Data Encryption     478
SQL Server Key Management     480
    Extensible Key Management     482
Column-Level Encryption     483
    Encrypting Columns Using a Passphrase     484
    Encrypting Columns Using a Certificate     486
Transparent Data Encryption     490
    Implementing Transparent Data Encryption     491
    Managing TDE in SSMS     493
    Backing Up TDE Certificates and Keys     495
    The Limitations of TDE     496
Column-Level Encryption Versus Transparent Data Encryption     496
Summary     498
17 Managing Linked Servers     499
What’s New in Managing Linked Servers     500
Linked Servers     500
    Distributed Queries     501
    Distributed Transactions     502
Adding, Dropping, and Configuring Linked Servers     503
    sp_addlinkedserver     503
    sp_linkedservers     510
    sp_dropserver     512
    sp_serveroption     512
Mapping Local Logins to Logins on Linked Servers     513
    sp_addlinkedsrvlogin     514
    sp_droplinkedsrvlogin     515
    sp_helplinkedsrvlogin     516
Obtaining General Information About Linked Servers     517
Executing a Stored Procedure via a Linked Server     518
Setting Up Linked Servers Using SQL Server Management Studio     519
Summary     523
18 SQL Server Configuration Options     525
What’s New in Configuring, Tuning, and Optimizing SQL Server Options     525
SQL Server Instance Architecture     526
Configuration Options     527
Fixing an Incorrect Option Setting     535
Setting Configuration Options with SSMS     535
Obsolete Configuration Options     535
Configuration Options and Performance     536
    access check cache bucket count     536
    access check cache quota     536
    ad hoc distributed queries     537
    affinity I/O mask     537
    affinity mask     539
    Agent XP     540
    backup checksum default     541
    backup compression default     541
    blocked process threshold     542
    c2 audit mode     542
    clr enabled     543
    common criteria compliance enabled     543
    contained database authentication     543
    cost threshold for parallelism     544
    cross db ownership chaining     545
    cursor threshold     545
    Database Mail XPs     546
    default full-text language     546
    default language     548
    default trace enabled     550
    disallow results from triggers     551
    EKM provider enabled     551
    filestream_access_level     551
    fill factor     552
    index create memory     552
    in-doubt xact resolution     553
    lightweight pooling     553
    locks     554
    max degree of parallelism     554
    max server memory and min server memory     554
    max text repl size     556
    max worker threads     557
    media retention     558
    min memory per query     558
    nested triggers     559
    network packet size     559
    Ole Automation Procedures     560
    optimize for ad hoc workloads     560
    PH_timeout     561
    priority boost     561
    query governor cost limit     562
    query wait     562
    recovery interval     563
    remote access     564
    remote admin connections     564
    remote login timeout     564
    remote proc trans     565
    remote query timeout     565
    scan for startup procs     565
    show advanced options     566
    user connections     566
    user options     567
    XP-Related Configuration Options     568
Summary     569
19 Working with and Deploying to Azure SQL Database     571
Setting Up Subscriptions, Servers, and Databases     571
    Setting Up Your Windows Azure Subscription     572
    Creating a Logical Database Server     574
Managing Your Server     576
    Configuring Your Firewall     577
    Using SQL Server Management Studio     578
    Using Management Portal     579
Working with Databases     580
    Understanding SQL Database Service Tiers     580
    Managing Databases Using T-SQL     584
    Migrating Data into SQL Database     586
    Copying Databases     587
    Exporting Databases     588
Backing Up and Restoring Databases     590
    Using SQL Database Backup, Replication, and Recovery     590
    Using Database Copies for Backup and Restore     592
    Using BACPAC Files for Backup and Restore     593
Managing Logins, Users, and Roles     595
    Understanding Roles     595
    Managing Logins and Users     596
Considerations for SQL Database Client Applications     598
    Connectivity Limitations     598
    Connection String Differences     599
Understanding SQL Database Billing     599
    Baseline Billing     599
    Tracking Your Usage     601
Understanding SQL Database Limitations     603
    Unsupported and Partially Supported Functionality     603
    References     606
Summary     606

Part IV Database Administration

20 Creating and Managing Databases     609
What’s New in Creating and Managing Databases     610
Data Storage in SQL Server     610
Database Files     611
    Primary Files     612
    Secondary Files     612
    Using Filegroups     613
    Using Partitions     616
    Transaction Log Files     616
Creating Databases     617
    Using SSMS to Create a Database     618
    Using T-SQL to Create Databases     621
Setting Database Options     622
    The Database Options     623
    Using T-SQL to Set Database Options     625
    Retrieving Option Information     626
Managing Databases     629
    Managing File Growth     629
    Expanding Databases     630
    Shrinking Databases     631
    Moving Databases     636
    Restoring a Database to a New Location     636
    Using ALTER DATABASE     636
    Detaching and Attaching Databases     637
Contained Databases     639
    Creating a Contained Database     640
    Connecting to a Contained Database     642
Summary     643
21 Creating and Managing Tables     645
What’s New in SQL Server 2014     645
Creating Tables     646
    Using Object Explorer to Create Tables     646
    Using Database Diagrams to Create Tables     647
    Using T-SQL to Create Tables     648
Defining Columns     650
    Data Types     651
    Column Properties     657
    Column Sets     663
    Working with Sparse Columns     664
    Sparse Columns: Good or Bad?     667
    Defining Sparse Columns in SSMS     667
Defining Table Location     668
Defining Table Constraints     670
Modifying Tables     672
    Using T-SQL to Modify Tables     672
    Using Object Explorer and the Table Designer to Modify Tables     675
    Using Database Diagrams to Modify Tables     678
Dropping Tables     680
Using Partitioned Tables     681
    Creating a Partition Function     682
    Creating a Partition Scheme     684
    Creating a Partitioned Table     686
    Adding and Dropping Table Partitions     689
    Switching Table Partitions     693
Using FILESTREAM Storage     697
    Enabling FILESTREAM Storage     698
    Setting Up a Database for FILESTREAM Storage     701
    Using FILESTREAM Storage for Data Columns     702
Using FileTables     705
    FileTable Prerequisites     705
    Creating FileTables     707
    Copying Files to the FileTable     707
Creating Temporary Tables     709
Summary     710
22 Creating and Managing Indexes     711
What’s New in Creating and Managing Indexes     711
Types of Indexes     712
    Clustered Indexes     712
    Nonclustered Indexes     714
Creating Indexes     716
    Creating Indexes with T-SQL     716
    Creating Indexes with SSMS     720
Managing Indexes     722
    Managing Indexes with T-SQL     723
    Managing Indexes with SSMS     726
Dropping Indexes     727
Online Indexing Operations     727
Indexes on Views     729
Summary     730
23 Implementing Data Integrity     731
What’s New in Data Integrity     731
Types of Data Integrity     732
    Domain Integrity     732
    Entity Integrity     732
    Referential Integrity     732
Enforcing Data Integrity     732
    Implementing Declarative Data Integrity     732
    Implementing Procedural Data Integrity     733
Using Constraints     733
    The PRIMARY KEY Constraint     733
    The UNIQUE Constraint     735
    The FOREIGN KEY Referential Integrity Constraint     736
    The CHECK Constraint     740
    Creating Constraints     742
    Managing Constraints     747
Rules     750
Defaults     751
    Declarative Defaults     751
    Bound Defaults     753
When a Default Is Applied     754
    Restrictions on Defaults     755
Summary     756
24 Creating and Managing Views     757
What’s New in Creating and Managing Views     757
Definition of Views     757
Using Views     758
    Simplifying Data Manipulation     759
    Focusing on Specific Data     760
    Abstracting Data     761
    Controlling Access to Data     762
Creating Views     764
    Creating Views Using T-SQL     765
    ENCRYPTION     767
    Creating Views Using the View Designer     769
Managing Views     772
    Altering Views with T-SQL     772
    Dropping Views with T-SQL     773
    Managing Views with SSMS     773
Data Modifications and Views     773
Partitioned Views     774
    Modifying Data Through a Partitioned View     778
    Distributed Partitioned Views     779
Indexed Views     780
    Creating Indexed Views     781
    Indexed Views and Performance     783
    To Expand or Not to Expand     786
Summary     787
25 Creating and Managing Stored Procedures     789
What’s New in Creating and Managing Stored Procedures     789
Advantages of Stored Procedures     789
Creating Stored Procedures     791
    Creating Procedures in SSMS     792
Executing Stored Procedures     799
    Executing Procedures in SSMS     800
    Execution Context and the EXECUTE AS Clause     802
    Using the WITH RESULT SETS Clause     804
Deferred Name Resolution     807
    Identifying the Objects Referenced Within Stored Procedures     809
Viewing Stored Procedures     811
Modifying Stored Procedures     814
    Viewing and Modifying Stored Procedures with SSMS     815
Using Input Parameters     816
    Setting Default Values for Parameters     817
    Passing Object Names as Parameters     820
    Using Wildcards in Parameters     822
    Using Table-Valued Parameters     823
Using Output Parameters     825
Returning Procedure Status     826
Debugging Stored Procedures Using SQL Server Management Studio     827
Startup Procedures     830
Natively Compiled Stored Procedures     834
T-SQL Stored Procedure Coding Guidelines     838
Summary     839
26 Creating and Managing User-Defined Functions     841
Why Use User-Defined Functions?     841
Types of User-Defined Functions     844
    Scalar Functions     844
    Table-Valued Functions     847
Creating and Managing User-Defined Functions     849
    Creating User-Defined Functions     849
    Viewing and Modifying User-Defined Functions     860
    Managing User-Defined Function Permissions     868
Rewriting Stored Procedures as Functions     869
Summary     871
27 Creating and Managing Triggers     873
What’s New in Creating and Managing Triggers     874
Using DML Triggers     874
    Creating DML Triggers     875
    Using AFTER Triggers     877
    Using inserted and deleted Tables     881
    INSTEAD OF Triggers     885
Using DDL Triggers     893
    Creating DDL Triggers     897
    Managing DDL Triggers     901
Using Nested Triggers     903
Using Recursive Triggers     903
Summary     905
28 Transaction Management and the Transaction Log     907
What’s New in Transaction Management     907
What Is a Transaction?     907
How SQL Server Manages Transactions     908
Defining Transactions     909
    AutoCommit Transactions     909
    Explicit User-Defined Transactions     910
    Implicit Transactions     916
    Implicit Transactions Versus Explicit Transactions     918
Transactions and T-SQL Batches     919
Transactions and Stored Procedures     921
Transactions and Triggers     926
    Triggers and Transaction Nesting     927
    Triggers and Multistatement Transactions     930
    Using Savepoints in Triggers     931
Transactions and Locking     933
    READ_COMMITTED_SNAPSHOT Isolation     934
Coding Effective Transactions     934
Transaction Logging and the Recovery Process     935
    The Checkpoint Process     939
    Automatic Checkpoints     941
    Indirect Checkpoints     942
    Manual Checkpoints     944
    The Recovery Process     945
    Managing the Transaction Log     947
Long-Running Transactions     952
Distributed Transactions     954
Summary     955
29 Database Snapshots     957
What’s New with Database Snapshots     958
What Are Database Snapshots?     958
Limitations and Restrictions of Database Snapshots     962
Copy-on-Write Technology     964
When to Use Database Snapshots     965
    Reverting to a Snapshot for Recovery Purposes     965
    Safeguarding a Database Prior to Making Mass Changes     966
    Providing a Testing (or Quality Assurance) Starting Point (Baseline)     967
    Providing a Point-in-Time Reporting Database     967
    Providing a Highly Available and Offloaded Reporting Database from a Database Mirror     968
Setup and Breakdown of a Database Snapshot     970
    Creating a Database Snapshot     970
    Removing a Database Snapshot     974
Reverting to a Database Snapshot for Recovery     975
    Reverting a Source Database from a Database Snapshot     975
Database Snapshots Maintenance and Security Considerations     977
    Security for Database Snapshots     977
    Snapshot Sparse File Size Management     977
    Number of Database Snapshots per Source Database     977
Summary     978
30 Database Maintenance     979
What’s New in Database Maintenance     980
The Maintenance Plan Wizard     980
    Backing Up Databases     983
    Checking Database Integrity     987
    Shrinking Databases     988
    Maintaining Indexes and Statistics     990
    Scheduling a Maintenance Plan     993
Managing Maintenance Plans Without the Wizard     997
Executing a Maintenance Plan     1001
Maintenance Without a Maintenance Plan     1002
Database Maintenance Policies     1003
Summary     1003

Part V SQL Server Performance and Optimization

31 Understanding SQL Server Data Structures     1007
What’s New for Data Structures     1007
Understanding Data Structures     1008
Database Files and Filegroups     1008
    Primary Data File     1010
    Secondary Data Files     1010
    The Log File     1011
    File Management     1011
    Using Filegroups     1012
    FILESTREAM Filegroups     1015
Database Pages     1017
    Page Types     1017
    Data Pages     1018
    Row-Overflow Pages     1024
    LOB Data Pages     1025
    Index Pages     1028
Space Allocation Structures     1029
    Extents     1029
    Global and Shared Global Allocation Map Pages     1030
    Page Free Space Pages     1031
    Index Allocation Map Pages     1031
    Differential Changed Map Pages     1032
    Bulk Changed Map Pages     1032
Data Compression     1033
    Row-Level Compression     1033
    Page-Level Compression     1035
    The CI Record     1038
    Implementing Page Compression     1038
    Evaluating Page Compression     1039
    Managing Data Compression with SSMS     1042
Understanding Table Structures     1043
    Heap Tables     1045
    Clustered Tables     1047
Understanding Index Structures     1048
    Clustered Indexes     1049
    Nonclustered Indexes     1052
    Columnstore Indexes     1057
Data Modification and Performance     1062
    Inserting Data     1062
    Deleting Rows     1065
    Updating Rows     1066
Summary     1068
32 Indexes and Performance     1069
What’s New for Indexes and Performance     1069
Index Utilization     1070
Index Selection     1072
Evaluating Index Usefulness     1073
Index Statistics     1076
    The Statistics Histogram     1078
    How the Statistics Histogram Is Used     1080
    Index Densities     1081
    Estimating Rows Using Index Statistics     1082
    Generating and Maintaining Index and Column Statistics     1085
SQL Server Index Maintenance     1093
    Setting the Fill Factor     1103
    Reapplying the Fill Factor     1105
    Disabling Indexes     1106
    Managing Indexes with SSMS     1107
Index Design Guidelines     1108
    Clustered Index Indications     1109
    Nonclustered Index Indications     1111
    Index Covering     1112
    Included Columns     1114
    Wide Indexes Versus Multiple Indexes     1115
Indexed Views     1116
Indexes on Computed Columns     1117
Filtered Indexes and Statistics     1119
    Creating and Using Filtered Indexes     1120
    Creating and Using Filtered Statistics     1122
Choosing Indexes: Query versus Update Performance     1124
Identifying Missing Indexes     1125
    The Database Engine Tuning Advisor     1125
    Missing Index Dynamic Management Objects     1126
    Missing Index Feature Versus Database Engine Tuning Advisor     1128
Identifying Unused Indexes     1129
Summary     1131
33 In-Memory Optimization and the Buffer Pool Extension     1133
Overview of In-Memory OLTP     1134
    In-Memory OLTP Concepts and Terminology     1136
In-Memory Optimization Requirements     1137
Limitations of In-Memory OLTP     1137
Using In-Memory OLTP     1138
    Enabling a Database for In-Memory OLTP     1138
    Creating Memory-Optimized Tables     1140
    Memory-Optimized Tables Row Structure     1142
    Indexes on Memory-Optimized Tables     1143
    Garbage Collection     1151
    Maintaining Statistics on Memory-Optimized Tables     1153
    Memory-Optimized Index Design Guidelines     1154
Using Memory-Optimized Tables     1156
    Interpreted T-SQL Support for In-Memory OLTP     1156
    Native Compilation     1157
    Natively Compiled Stored Procedures     1159
    Memory-Optimized Table Variables     1162
    Transactions and Memory-Optimized Tables     1162
    Monitoring Transactions on Memory-Optimized Tables     1170
Logging, Checkpoint, and Recovery for In-Memory OLTP     1170
    Transaction Logging     1171
    Checkpoint     1171
    Recovery     1174
Managing Memory for In-Memory OLTP     1175
    Monitoring Memory Usage     1176
    Managing Memory with the Resource Governor     1177
Backup and Recovery of Memory-Optimized Databases     1178
Migrating to In-Memory OLTP     1179
    Using the AMR Tool     1180
    Using the Table Memory Optimization Advisor to Migrate Disk-Based Tables     1181
Dynamic Management Views for In-Memory OLTP     1183
The Buffer Pool Extension     1185
Summary     1186
34 Understanding Query Optimization     1187
What’s New in Query Optimization     1188
What Is the Query Optimizer?     1188
Query Compilation and Optimization     1189
    Compiling DML Statements     1189
    Optimization Steps     1190
Query Analysis     1191
    Identifying Search Arguments     1191
    Identifying OR Clauses     1191
    Identifying Join Clauses     1192
Row Estimation and Index Selection     1193
    Evaluating SARG and Join Selectivity     1193
    Estimating Access Path Cost     1199
    Using Multiple Indexes     1206
    Optimizing with Indexed Views     1213
    Optimizing with Filtered Indexes     1216
    Evaluating Cardinality Estimates     1218
Join Selection     1219
    Join Processing Strategies     1219
    Determining the Optimal Join Order     1224
    Subquery Processing     1226
Execution Plan Selection     1228
Query Plan Caching     1231
    Query Plan Reuse     1231
    Query Plan Aging     1234
    Recompiling Query Plans     1234
    Monitoring the Plan Cache     1235
Other Query Processing Strategies     1243
    Predicate Transitivity     1244
    GROUP BY Optimization     1244
    Queries with DISTINCT     1245
    Queries with UNION     1245


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