All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, request forms, and the appropriate contacts within the Pearson Education Global Rights & Permissions Department, please visit www.pearsoned.com/permissions/. No patent liability is assumed with respect to the use of the information contained herein. Although every precaution has been taken in the preparation of this book, the publisher and author assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use of the information contained herein.
ISBN-13: 978-1-5093-0383-0
ISBN-10: 1-5093-0383-9
Library of Congress Control Number: 2017953072
First Printing September 1 17
Trademarks
Microsoft and the trademarks listed at https://www.microsoft.com on the “Trademarks” webpage are trademarks of the Microsoft group of companies. All other marks are property of their respective owners.
Warning and Disclaimer
Every effort has been made to make this book as complete and as accurate as possible, but no warranty or fitness is implied. The information provided is on an “as is” basis. The authors, the publisher, and Microsoft Corporation shall have neither liability nor responsibility to any person or entity with respect to any loss or damages arising from the information contained in this book or programs accompanying it.
Special Sales
For information about buying this title in bulk quantities, or for special sales opportunities (which may include electronic versions; custom cover designs; and content particular to your business, training goals, marketing focus, or branding interests), please contact our corporate sales department at corpsales@pearsoned.com or (800) 382-3419.
For government sales inquiries, please contact governmentsales@pearsoned.com.
For questions about sales outside the U.S., please contact intlcs@pearson.com.
Editor-in-Chief
Greg Wiegand
Acquisitions Editor
Trina MacDonald
Development Editor
Troy Mott
Managing Editor
Sandra Schroeder
Senior Project Editor
Tracey Croom
Editorial Production
Backstop Media
Copy Editor
Christina Rudloff
Indexer
Julie Grady
Proofreader
Christina Rudloff
Technical Editor
Martin ‘MC’ Brown
Cover Designer
Creative, Seattle
Twist
Contents at a glance
Introduction
Preparing for the exam
Chapter 1 Configure data access and auditing
Chapter 2 Manage backup and restore of databases
Chapter 3 Manage and monitor SQL Server instances
Chapter 4 Manage high availability and disaster recovery
Index
Contents
Introduction
Organization of this book
Microsoft certifications
Acknowledgments
Microsoft Virtual Academy
Quick access to online references
Errata, updates, & book support
We want to hear from you
Stay in touch
Preparing for the exam
Chapter 1 Configure data access and auditing
Skill 1.1: Configure encryption
Implement column-level encryption
Implement Always Encrypted
Configure transparent data encryption
Implement backup encryption
Configure encryption for connections
Troubleshoot encryption errors
Skill 1.2 Configure data access and permissions
Create and maintain users
Create and maintain custom roles
Manage database object permissions
Configure row-level security
Configure dynamic data masking
Configure user options for Azure SQL Database
Skill 1.3: Configure auditing
Configure an audit on SQL Server
Query the SQL Server audit log
Manage a SQL Server audit
Configure an Azure SQL Database audit
Analyze audit logs and reports from Azure SQL Database
Thought experiment
Thought experiment answers
Chapter summary
Chapter 2 Manage backup and restore of databases
Skill 2.1: Develop a backup strategy
Design a backup strategy
Back up databases
Back up VLDBs
Manage transaction log backups
Configure backup automation
Skill 2.2 Restore databases
Design a restore strategy
Restore a database
Perform piecemeal restores
Perform page recovery
Perform point-in-time recovery
Restore a filegroup
Develop a plan to automate and test restores
Skill 2.3 Manage database integrity
Implement database consistency checks
Identify database corruption
Recover from database corruption
Thought experiment
Thought experiment answers
Chapter summary
Chapter 3 Manage and monitor SQL Server instances
Skill 3.1: Monitor database activity
Monitor current sessions
Identify sessions that cause blocking activity
Identify sessions that consume tempdb resources
Configure the data collector
Skill 3.2 Monitor queries
Manage the Query Store
Configure Extended Events and trace events
Identify problematic execution plans
Troubleshoot server health using Extended Events
Skill 3.3 Manage indexes
Identify and repair index fragmentation
Identify and create missing indexes
Identify and drop underutilized indexes
Manage existing columnstore indexes
Skill 3.4 Manage statistics
Identify and correct outdated statistics
Implement Auto Update Statistics
Implement statistics for large tables
Skill 3.5 Monitor SQL Server instances
Configure database mail
Create and manage operators
Create and manage SQL Agent alerts
Define custom alert actions
Define failure actions
Configure policy based management
Identify available space on data volumes
Identify the cause of performance degradation
Thought experiment
Thought experiment answers
Chapter summary
Chapter 4 Manage high availability and disaster recovery
Skill 4.1: Design a high availability solution
Skill 4.2: Design a disaster recovery solution
Skill 4.3: Implement log shipping
Architect log shipping
Configure log shipping
Monitor log shipping
Skill 4.4: Implement Availability Groups
Architect Availability Groups
Configure Windows clustering
Create an Availability Group
Configure read-only routing
Monitor Availability Groups
Manage failover
Create Distributed Availability Group
Skill 4.5: Implement failover clustering
Architect failover clustering
Configure failover clustering
Manage Shared Disks
Configure Cluster Shared Volumes
Thought experiment
Thought experiment answers
Chapter summary
Index
What do you think of this book? We want to hear from you!
Microsoft is interested in hearing your feedback so we can continually improve our books and learning resources for you. To participate in a brief online survey, please visit:
https://aka.ms/tellpress
Introduction
First and foremost, thank you for your purchase and all the best of luck in your endeavor to become certified and an expert in the SQL Server data platform. The 70-764 exam is intended for database professionals who perform installation, maintenance, and configuration tasks on the SQL Server platform. Other responsibilities include setting up database systems, making sure those systems operate efficiently, and regularly storing, backing up, and securing data from unauthorized access.
This book is geared toward database administrators who are looking to train in the administration of SQL Server 2016 infrastructure. To help you prepare for the exam you can use Microsoft Hyper-V to create SQL Server virtual machines (VMs) and follow the examples in this book. You can download an evaluation copy of Windows Server 2016 from https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016/. SQL Server 2016 can be downloaded for free from https://www.microsoft.com/en-us/sql-server/sql-server-downloads. You can download the AdventureWorks databases from https://msftdbprodsamples.codeplex.com/. The Wide World Importers database can be downloaded from https://github.com/Microsoft/sql-serversamples/releases/tag/wide-world-importers-v1.0.
This book covers every major topic area found on the exam, but it does not cover every exam question. Only the Microsoft exam team has access to the exam questions, and Microsoft regularly adds new questions to the exam, making it impossible to cover specific questions. You should consider this book a supplement to your relevant real-world experience and other study materials. If you encounter a topic in this book that you do not feel completely comfortable with, use the “Need more review?” links you’ll find in the text to find more information and take the time to research and study the topic. Great information is available on MSDN, TechNet, and in blogs and forums.
Organization of this book
This book is organized by the “Skills measured” list published for the exam. The “Skills measured” list is available for each exam on the Microsoft
Learning website: https://aka.ms/examlist. Each chapter in this book corresponds to a major topic area in the list, and the technical tasks in each topic area determine a chapter’s organization. If an exam covers six major topic areas, for example, the book will contain six chapters.
Microsoft certifications
Microsoft certifications distinguish you by proving your command of a broad set of skills and experience with current Microsoft products and technologies. The exams and corresponding certifications are developed to validate your mastery of critical competencies as you design and develop, or implement and support, solutions with Microsoft products and technologies both onpremises and in the cloud. Certification brings a variety of benefits to the individual and to employers and organizations.
More Info All Microsoft certifications
For information about Microsoft certifications, including a full list of available certifications, go to https://www.microsoft.com/learning.
Acknowledgments
Victor Isakov I would like to dedicate this book to Christopher, Isabelle, Marcus and Sofia. With your love and “infinite patience” I am the luckiest guy on this planet! It would be remiss of me not to also thank Trina MacDonald and Troy Mott for their “infinite patience” in helping me complete this “impossible task.”
Microsoft Virtual Academy
Build your knowledge of Microsoft technologies with free expert-led online training from Microsoft Virtual Academy (MVA). MVA offers a comprehensive library of videos, live events, and more to help you learn the latest technologies and prepare for certification exams. You’ll find what you need here: https://www.microsoftvirtualacademy.com
Quick access to online references
Throughout this book are addresses to webpages that the author has recommended you visit for more information. Some of these addresses (also known as URLs) can be painstaking to type into a web browser, so we’ve compiled all of them into a single list that readers of the print edition can refer to while they read.
Download the list at https://aka.ms/exam764administersql/downloads.
The URLs are organized by chapter and heading. Every time you come across a URL in the book, find the hyperlink in the list to go directly to the webpage.
Errata, updates, & book support
We’ve made every effort to ensure the accuracy of this book and its companion content. You can access updates to this book in the form of a list of submitted errata and their related corrections at:
https://aka.ms/exam764administersql/errata
If you discover an error that is not already listed, please submit it to us at the same page.
If you need additional support, email Microsoft Press Book Support at mspinput@microsoft.com.
Please note that product support for Microsoft software and hardware is not offered through the previous addresses. For help with Microsoft software or hardware, go to https://support.microsoft.com.
We want to hear from you
At Microsoft Press, your satisfaction is our top priority, and your feedback our most valuable asset. Please tell us what you think of this book at:
https://aka.ms/tellpress
We know you’re busy, so we’ve kept it short with just a few questions. Your answers go directly to the editors at Microsoft Press. (No personal information will be requested.) Thanks in advance for your input!
Stay in touch
Let’s keep the conversation going! We’re on Twitter: http://twitter.com/MicrosoftPress.
Important: How to use this book to study for the exam
Certification exams validate your on-the-job experience and product knowledge. To gauge your readiness to take an exam, use this Exam Ref to help you check your understanding of the skills tested by the exam. Determine the topics you know well and the areas in which you need more experience. To help you refresh your skills in specific areas, we have also provided “Need more review?” pointers, which direct you to more in-depth information outside the book.
The Exam Ref is not a substitute for hands-on experience. This book is not designed to teach you new skills.
We recommend that you round out your exam preparation by using a combination of available study materials and courses. Learn more about available classroom training at https://www.microsoft.com/learning. Microsoft Official Practice Tests are available for many exams at https://aka.ms/practicetests. You can also find free online courses and live events from Microsoft Virtual Academy at https://www.microsoftvirtualacademy.com.
This book is organized by the “Skills measured” list published for the exam. The “Skills measured” list for each exam is available on the Microsoft Learning website: https://aka.ms/examlist.
Note that this Exam Ref is based on publicly available information and the author’s experience. To safeguard the integrity of the exam, authors do not have access to the exam questions.
Chapter 1. Configure data access and auditing
Important Have you read page xiii?
It contains valuable information regarding the skills you need to pass the exam.
An organization’s data is one of its most important assets, and in the twentyfirst century securing your data is paramount. In this chapter we will exam the skills required to protect sensitive data through encryption, to control data access, and importantly to audit data access. In a lot of sectors there are common compliances and governance requirements, and SQL Server has technology and tools to help you achieve any such compliance.
Data loss comes in many forms, including hardware failure, database corruption, malicious activity, and user error, so you should develop a DRP to protect against all of these eventualities. It is common for organizations to have data governance requirements, requiring you to factor these into your data disaster strategy.
Skill 1.1 starts with the encryption of data within your SQL Server instance. We will examine how you can encrypt data at the column-level within the tables of your database, at the database level, and at the database backup level. Most data breaches within organizations are performed by employees, so it is important to configure the appropriate data access controls and audit potential unauthorized data access. In Skill 1.2 we turn our attention to how you control data access within your SQL Server instance. SQL Server logins, database users, server roles, database roles, and object permissions are covered because they might be in the exam. We will also focus on row-level security and dynamic data masking. Finally, in Skill 1.3 we cover how to configure auditing at the server and database level within SQL Server.
Pay attention to the new security features in SQL Server 2016, which are Always Encrypted, row-level security, and dynamic data masking. These new technologies make great candidates for exam questions, but of course you
must be prepared for many other technologies as well.
Skills in this chapter:
Configure encryption
Configure data access and permissions
Configure auditing
Skill 1.1: Configure encryption
Let’s start this section with how to configure encryption in SQL Server. We will examine how you can encrypt both data at rest and data in flight. Each encryption technology will have its own strengths, weaknesses and administrative complexity. Some encryption technology will restrict the types of operations that you can perform on your data.
Let’s begin by examining how you can encrypt columns within tables using column-level encryption and the new Always Encrypted capability. We will then move to the database level and look at how to encrypt the entire database and the database backups. Finally, we will cover how to configure encryption for connections, and how to troubleshoot encryption.
When configuring encryption it is critical to choose the order of which algorithms, certificates, and keys to operate. It is important to understand what the different encryption technologies encrypt, what they protect against, and how to configure them. The exam may require you to choose the appropriate encryption mechanism, list the proper business requirements, and describe the technical constraints.
This section covers how to:
Implement column-level encryption
Implement Always Encrypted
Configure transparent data encryption
Implement backup encryption
Configure encryption for connections
Troubleshoot encryption errors
Implement column-level encryption
The ability to encrypt data at the column level is a critical capability in any modern database engine. Column-level encryption has been supported since SQL Server 2005. Although this capability has seen improvements through releases of SQL Server, its core architecture has remained the same. Consequently, I would not expect many questions on column-level encryption in the exam because it represents older technology.
To understand and implement encryption in SQL Server you need to understand its encryption hierarchy and key management architecture. Layers of encryption are protected by preceding layers of encryption that can use asymmetric keys, certificates, and symmetric keys.
Extensible Key Management SQL Server EKM enables the encryption keys that protect the database files to be stored outside of the SQL Server environment such as a smartcard, a USB device, and the EKM module of Hardware Security Module (HSM). It also helps secure the SQL Server instance from database administrators because they will not necessarily have access to the external EKM/HSM module.
Service Master Key The Service Master Key (SMK) is the root of the database engine’s encryption hierarchy and is generated automatically the first time it is needed to encrypt another key. By default, the SMK is encrypted using the Windows data protection API (DPAPI) at the operating system level, which uses the local machine key. The SMK can only be opened by the Windows service account that created it, or by a principal that knows the service account name and its password.
Database Master Key The Database Master Key (DMK) is a symmetric key used to protect the private keys of certificates and asymmetric keys that are present in the database. When created it is encrypted using AES 256 and a password you provide. Query the [sys].[symmetric keys] catalog view to get information about the DMK.
Asymmetric Key An asymmetric key consists of a private and corresponding public key. Asymmetric encryption is computationally more expensive, but more secure than symmetric encryption. You can use an asymmetric key to encrypt a symmetric key within a database.
Symmetric Key A symmetric key is a single key that uses encryption. Symmetric encryption is generally used over asymmetric encryption because it is faster and less computationally expensive.
Certificate Certificates are a digitally signed security object that contain a public (and optionally a private) key for SQL Server, which can generate certificates. You can also use externally generated certificates, and just like with asymmetric keys, certificates can be used in asymmetric encryption.
Figure 1-1 shows SQL Server’s encryption hierarchy. Note that there are multiple ways to protect the encrypted data within the database.
FIGURE 1-1 SQL Server encryption hierarchy
When implementing column-level encryption, consider the following:
Encrypted data cannot be compressed, but compressed data can be encrypted.
When using compression, you should compress data before encrypting it for optimal results.
Stronger encryption algorithms consume more processor resources.
Starting with SQL Server 2016 the database engine can take advantage of hardware acceleration, using Intel AES-NI, when performing encryption/decryption tasks.
Starting with SQL Server 2016 the only algorithms that are supported with database compatibility 130 or above are AES-128, AES 192, and AES 256.
Older encryption algorithms, including DES, Triple DES, TRIPLE DES 3KEY, RC2, RC4, 128-bit RC4, and DESX are only supported under a database compatibility level of 120 or lower. You should not use these older, unsupported encryption algorithms because they are fundamentally less secure.
If you are encrypting a lot of data it is recommended that you encrypt the data using a symmetric key, and then encrypt the symmetric key with an asymmetric key.
For all intents and purposes, once you encrypt a column, indexes on that column typically become useless for searching. Consider removing the indexes. In some cases you can add a helper column to the table, such as in the example of the last 4 digits of a credit card.
The database administrator generally still has complete control over the SQL Server environment and consequently the ability to potentially view the encrypted data. In the next section of this chapter we will examine Always Encrypted and how this can be used to protect unauthorized access from the database administrator.
Perform the following tasks to encrypt data:
1. Create DMK
2. Create a certificate that will be protected by the DMK
3. Create SMK using the certificate that will be used by column encryption
4. Encrypt the column using the SMK
It’s important to appreciate that these high-level tasks only represent one technique for implementing column level encryption. As you saw in Figure 1-1 there are multiple encryption paths that you can deploy, that can use a myriad of encryption functions.
Need more Review? Encryption system functions
SQL Server supports a number of different system functions that support encryption, decryption, digital signing, and validation of digital signatures. To familiarize yourself with these functions for the function visit https://docs.microsoft.com/en-us/sql/tsql/functions/cryptographic-functions-transact-sql.
Listing 1-1 starts with a simple example where you can encrypt data using a symmetric key protected by a password. Note that the best practice of backing up the keys and certificates has been excluded. Pay attention to what our “clever” CTO does.
LISTING 1-1 Implementing column-level encryption using a password
Click here to view code image
USE tempdb; GO
-- Create sample table
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, EmployeeName VARCHAR(300), Position VARCHAR(100), Salary VARBINARY(128) ); GO
-- Create SMK
CREATE SYMMETRIC KEY SMK Emp WITH ALGORITHM = AES 256 ENCRYPTION BY PASSWORD = 'Pa$$w0rd'; GO
-- Open SMK
OPEN SYMMETRIC KEY SMK Emp DECRYPTION BY PASSWORD =
SELECT * , CONVERT(VARCHAR, DECRYPTBYKEY(Salary)) AS DecryptedSalary FROM Employees; GO
-- Close SMK
CLOSE SYMMETRIC KEY SMK Emp
GO
-- Query table with decrypted values after key SMK is closed
SELECT * , CONVERT(VARCHAR, DECRYPTBYKEY(Salary)) AS DecryptedSalary FROM Employees; GO
-- Clever CTO updates their salary to match CEO's salary
UPDATE Employees
SET Salary = (SELECT Salary FROM Employees WHERE Position = 'CEO')
WHERE EmployeeName = 'Marcus'; GO
-- Open SMK and query table with decrypted values
OPEN SYMMETRIC KEY SMK Emp DECRYPTION BY PASSWORD = 'Pa$$w0rd';
SELECT * , CONVERT(VARCHAR, DECRYPTBYKEY(Salary)) AS DecryptedSalary FROM Employees;
GO -- Cleanup
DROP TABLE Employees;
DROP SYMMETRIC KEY SMK Emp; GO
As you can see, the CTO is able to substitute their salary with the CIO’s salary, knowing full well that it is higher than his. There is no need to decrypt and re-encrypt the actual salary. This highlights the importance of understanding what various encryption and security techniques protect against, and how they can be potentially overcome. It also highlights how you should also implement other techniques, which we’ll look at in later sections in this chapter, such as security and the use of auditing to secure your data.
In this instance the ciphertext was created with no integrity checks that could help in the whole-value substitution of the encrypted value. A number of the SQL Server encryption functions support an authenticator parameter, which helps by adding contextual information to the plaintext before encrypting it. Upon adding an authenticator, the same value must be used during decryption that was used with encryption. If it is different, the decryption will fail. Microsoft recommends using a column that contains a unique, immutable value, such as the primary key, as the authenticator. Be aware that if the authenticator value changes, you might lose access to the data.
Need more Review? Encryption authenticators
For more information on authenticators SQL Server supports a number of different system functions that support encryption, decryption, digital signing and validation of digital signatures. To familiarize yourself with these functions visit https://technet.microsoft.com/enus/library/ms365192(v=sql.105).aspx.
A major disadvantage of encrypting data using a symmetric key protected by a password is that the password needs to be embedded somewhere, which represents a security risk. Consequently, using certificates is generally the preferred technique. Listing 1-2 shows an example of how column-level encryption can be implemented using a certificate. Note that the best practice
of backing up the keys and certificates has been excluded.
LISTING 1-2 Implementing column-level encryption using a certificate
Click here to view code image
USE WideWorldImporters; GO
-- Create database master key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'GoodLuckWithExam!'
-- Create certificate
CREATE CERTIFICATE Cert BAN WITH SUBJECT = 'Bank Account Number'; GO
-- Create SMK
CREATE SYMMETRIC KEY Key BAN WITH ALGORITHM = AES 256
ENCRYPTION BY CERTIFICATE Cert BAN; GO
-- Create a column to store encrypted data
ALTER TABLE Purchasing.Suppliers
ADD EncryptedBankAccountNumber varbinary(128); GO
-- Open the SMK to encrypt data
OPEN SYMMETRIC KEY Key BAN
DECRYPTION BY CERTIFICATE Cert BAN; GO
-- Encrypt Bank Account Number UPDATE Purchasing.Suppliers
SET EncryptedBankAccountNumber =
EncryptByKey(Key GUID('Key BAN'), BankAccountNumber); GO
-- Close SMK
CLOSE SYMMETRIC KEY Key BAN GO /*
Verify encryption was successful */
-- Query 1: Check encryption has worked SELECT TOP 5 SupplierID, SupplierName, BankAccountNumber, EncryptedBankAccountNumber, CONVERT(NVARCHAR(50),
DecryptByKey(EncryptedBankAccountNumber)) AS DecryptedBankAccountNumber
FROM Purchasing.Suppliers
GO
-- Query 2: Open the SMK
OPEN SYMMETRIC KEY Key BAN
DECRYPTION BY CERTIFICATE Cert BAN; GO
-- Query with decryption function
SELECT NationalIDNumber, EncryptedNationalIDNumber AS 'Encrypted ID Number', CONVERT(nvarchar, DecryptByKey(EncryptedNationalIDNumber)) AS 'Decrypted ID Number' FROM HumanResources.Employee; -- Results can be seen in Figure 1-3
GO
-- Close SMK
CLOSE SYMMETRIC KEY Key BAN; GO
Figure 1-2 shows the result set of Query 1 in Listing 1-2 where we attempted to decrypt the encrypted column without opening the symmetric key. Note how SQL Server Management Studio returns NULLs for the encrypted column.
FIGURE 1-2 Unsuccessful decryption
Figure 1-3 shows the result set of query 2 in Listing 1-2 where the symmetric key has been opened before the encrypted column has been queried. In this case you can see that the encrypted data has been successfully decrypted.