WA3190
SQL Server 2019 for Developers Training
This course focuses on the new and upgraded features of SQL Server utilizing SQL Server 2019. Much has changed since SQL 2012. In addition to discussing the upgrade to and best practices of SQL Server 2019, we’ll also discuss key features you gain with SQL Server 2019.
Course Details
Duration
5 days
Prerequisites
Basics of SQL Server or any other DBMS system is highly recommended.
Target Audience
Database administrators, developers, and architects that need to understand the newer features introduced in SQL Server 2012 - 2019.
Skills Gained
- Learn how to implemented best practices when installing SQL Server 2019
- Understand the new performance improvements in SQL Server 2019
- Enhance performance using Intelligent Query Processing, Column indexes, and Memory Optimized Tables/Databases.
- Implement distributed data strategy using Polybase.
- Understanding Machine Learning capabilities of SQL Server 2019.
- Containerizing SQL Server using Docker containers.
- Understand the basics of CI/CD using Jenkins.
- Understand the new security features.
Course Outline
- SQL Server Planning
- SQL 2019 New Features
- Upgrade Considerations
- SQL Server 2019 Supported Upgrades
- Pre-upgrade Checklist
- Migration Tools
- Pre-migration Stages
- Discover Stage
- Assess and Convert
- A/B Testing (optional)
- Migration Overview
- Side-by-side Migration DMA
- In-place Upgrade
- Memory and Performance Consideration
- Memory Guidance
- Lock Pages in Memory (LPIM)
- Instant File Initialization
- Perform Pre-checks of I/O
- Using SQLIOSIM
- Performance Improvements
- Introduction to the Buffer Pool Extension
- Considerations for Using the Buffer Pool Extension
- Configuring the Buffer Pool Extension
- What Is Resource Governor?
- What Are Resource Pools and Workload Groups?
- Managing Resource Governor
- Assigning a Workload to a Workload Group
- Indexes in SQL Server
- The INCLUDE Clause Considerations
- What are Columnstore Indexes
- Query Plan with Columnstore Index
- Columnstore Index Scenarios
- Nonclustered Columnstore Indexes
- Clustered Columnstore Indexes
- Creating a Nonclustered Columnstore Index
- Creating a Clustered Columnstore Index
- Creating a Clustered Columnstore Table with Primary and Foreign Keys
- Managing Columnstore Indexes
- Index Fragmentation
- Columnstore Indexes and Memory Optimized Tables
- Online Index Create and Rebuild
- Online Index Caveats
- Resumable Online Index
- Working with Resumable Online Index
- Pausing and Resuming Resumable Online Index
- View Resumable Online Index Status
- Intelligent Performance with SQL Server 2019
- Intelligent Query Processing Features
- What Are Memory-Optimized Tables?
- Scenarios for Memory-Optimized Tables
- Creating a Filegroup for Memory-Optimized Data
- Creating Memory-Optimized Tables
- Indexes in Memory-Optimized Tables
- Converting Tables with Memory Optimization Advisor
- Querying Memory-Optimized Tables
- What Are Natively Compiled Stored Procedures?
- When to use Natively Compiled Stored Procedures
- Creating Natively Compiled Stored Procedures
- Execution Statistics
- Planning Memory-Optimized Tables
- Advanced Indexing for SQL Server
- Index Strategies
- Covering Indexes
- Using the INCLUDE Clause
- Heap vs. Clustered Index
- Filtered Index
- What Is Fill Factor?
- What is Pad Index
- Implementing Fill Factor and Padding
- Managing Statistics
- Using DMOs to Improve Index Usage
- Consolidating Indexes
- Using Query Hints
- What is an Execution Plan
- Actual vs. Estimated Execution Plans
- Common Execution Plan Elements
- Methods for Capturing Plans
- Execution Plan Related DMVs
- Live Query Statistics
- A Slide Header [Style: Slide Header]
- A Slide with Vertical Split
- Summary
- Temporary Data Implications
- TempDB
- tempdb Facts
- tempdb Configuration
- Memory and tempdb
- Default tempdb Configuration
- tempdb Performance Optimization
- tempdb File Placement Recommendations
- Moving the tempdb Database
- tempdb Secondary File Recommendations
- Multiple TempDB Database Files
- tempdb Restrictions
- tempdb Permissions
- Memory-optimized tempdb metadata
- Memory-optimized tempdb limitations
- Configuring and using memory-optimized tempdb metadata
- Enabling Sort In TempDB
- Delayed Durability
- Clear tempdb in SQL Server
- Configuring tempdb Storage
- Configuring tempdb Storage
- Docker Introduction
- What is Docker
- Docker Containers vs Traditional Virtualization
- Where Can I Run Docker?
- Docker Containers vs Traditional Virtualization
- Docker as Platform-as-a-Service
- Docker Integration
- Docker Services
- Docker Hub Container Registry
- Alternative Container Registries
- Competing Containerization Systems
- Docker Command-line
- Starting, Inspecting, and Stopping Docker Containers
- Building Docker Images
- Docker Images
- Containerizing an Application
- Building The Image
- Building a Docker Images using Dockerfile
- Sample Dockerfile
- Environment Variables
- Environment Variables - Example
- Arguments
- Multi-stage Builds
- Stop at a Specific Build Stage
- RUN
- EXPOSE
- EXPOSE (Continued)
- COPY
- ADD
- CMD
- ENTRYPOINT
- CMD vs. ENTRYPOINT
- VOLUME
- Build the Image
- .dockerignore
- Dockerfile – Best Practices
- Published Ports
- Docker Documentation Link
- Docker Registry
- Hosting a Local Registry
- Deploying Docker Images to a Kubernetes Cluster
- Running Commands in a Container
- Multi-Container Pod
- Azure Container Registry and Azure Container Instances
- Azure Container Registry (ACR)
- ACR Typical Workflow
- Container Registry SKUs
- Creating ACR
- Pushing Existing Docker Images into ACR
- Build Images in ACR
- Obtaining ACR Credentials
- Azure Container Instances (ACI)
- Azure Container Instance Workflow
- Working with ACI
- Deleting Container Instances and Container Registry
- Kubernetes Core Concepts
- Kubernetes Basics
- What is Kubernetes?
- Container Orchestration
- Kubernetes Architecture
- Kubernetes Concepts
- Cluster and Namespace
- Nodes
- Master
- Pod
- Using Pods to Group Containers
- Label
- Label Syntax
- Annotation
- Label Selector
- Replication Controller and Replica Set
- Service
- Storage Volume
- Secret
- Resource Quota
- Authentication and Authorization
- Routing
- Docker Registry
- Azure Kubernetes Service (AKS)
- AKS Diagram
- Deploying an AKS Cluster
- Application Deployment on AKS
- Deploying and Exposing Applications
- Configuring AKS for Deployment
- Deploying to Kubernetes
- Kubernetes Services
- Service Resources
- Service Type
- ClusterIP
- NodePort
- NodePort from Service Spec
- LoadBalancer
- LoadBalancer from Service Spec
- ExternalName
- Accessing Applications
- Service Without a Selector
- Ingress
- Ingress Resource Example
- Ingress Controller
- Service Mesh
- Kubernetes Workload
- Kubernetes Workload
- Managing Workloads
- Imperative commands
- Imperative Object Configuration
- Declarative Object Configuration
- Configuration File Schema
- Understanding API Version
- Understanding API Version
- Obtaining API Versions
- Stateless Applications
- Sample Deployment Manifest File
- Working with Deployments
- Stateful Applications
- Sample Stateful Manifest File
- Working with StatefulSet
- Jobs
- Sample Job Manifest File
- Working with Batch Job
- DaemonSets
- Sample Daemon Manifest File
- Rolling Updates
- Summary
- Chapter 11 - Using PolyBase in SQL Server
- Understanding PolyBase
- PolyBase Example
- Data Virtualization with PolyBase
- PolyBase Use-cases
- PolyBase and Massive Parallel Processing
- Supported SQL Products and Services
- PolyBase Connectors
- PolyBase vs. Linked Server
- PolyBase Limitations
- Using PolyBase in SQL Server Instance
- PolyBase Installation
- Enable PolyBase
- Create external data source to reference a SQL Server Instance
- Create external data source in SQL Server 2019 to reference Oracle
- Create external data source to access data in Azure Storage
- Create external data source to reference Hadoop
- Create an external table for SQL Server
- Create an External Table for Azure Blob Storage
- Importing Data with CTAS
- Exporting Data with CETAS
- View PolyBase Objects in SSMS
- Security Features
- Always Encrypted
- Security Features
- Always Encrypted using SSMS
- Selecting Columns to Encrypt
- Creating the Always Encrypted Master Key
- Creating the Column Encryption Key
- PowerShell Script
- Lab Exercises
- Lab 1 - SQL Server Installation and Configuration
- Lab 2 - Pre-installation Stress Testing
- Lab 3 - Configure Memory
- Lab 4 - Working with Buffer Pool Extension
- Lab 5 - Working with the Resource Governor
- Lab 6 - Using Columnstore Indexes
- Lab 7 - Working with Memory Optimization Advisor
- Lab 8 - Using In-Memory Tables
- Lab 9 - Intelligent Query Processing: Approximate Query Processing
- Lab 10 - Optimizing Indexes
- Lab 11 - Working with tempdb
- Lab 12 - Working with PolyBase
- Lab 13 - Creating a Docker Account and Obtain an Access Token
- Lab 14 - Managing Containers
- Lab 15 - Building Images
- Lab 16 - Dockerfiles
- Lab 17 - Docker Volumes
- Lab 18 - Containerizing SQL Server
- Lab 19 - Configuring Minikube/Kubernetes to Use a Custom Docker Account
- Lab 20 - Accessing Applications
- Lab 21 - Working with Machine Learning Services
- Lab 22 - Working with Dynamic Data Masking
- Lab 23 - Working with Row-level and Always Encrypted Security Features
- Lab 24 - Working with Monitoring Baselining