About the Author |
|
xv | |
About the Technical Reviewer |
|
xvii | |
Acknowledgments |
|
xix | |
Foreword |
|
xxi | |
Introduction |
|
xxv | |
Chapter 1 Why SQL Server on Linux? |
|
1 | (22) |
|
|
2 | (1) |
|
|
3 | (11) |
|
|
4 | (2) |
|
SOLOS, SQLPAL, and Helsinki |
|
|
6 | (2) |
|
The SQL Server on Linux Architecture |
|
|
8 | (6) |
|
SQL Server on Windows vs. Linux. Is it the Same? |
|
|
14 | (5) |
|
SQL Server on Linux Capabilities |
|
|
14 | (3) |
|
What Features Are Not Available |
|
|
17 | (1) |
|
Should I Use Windows or Linux? |
|
|
18 | (1) |
|
Containers Are the New Virtual Machine |
|
|
19 | (3) |
|
|
20 | (1) |
|
Platform Independence, Portability, and Consistency |
|
|
20 | (1) |
|
Continuous Integration/Continuous Deployment |
|
|
21 | (1) |
|
|
21 | (1) |
|
|
22 | (1) |
Chapter 2 Install and Configuration |
|
23 | (54) |
|
|
23 | (11) |
|
|
24 | (2) |
|
|
26 | (1) |
|
|
27 | (1) |
|
|
28 | (6) |
|
|
34 | (8) |
|
|
35 | (1) |
|
Download a Repository Config File |
|
|
36 | (1) |
|
Do the Install of the SQL Server Engine |
|
|
37 | (2) |
|
Complete the Setup of SQL Server |
|
|
39 | (3) |
|
The Complete Installation Experience |
|
|
42 | (19) |
|
Installing Other Versions |
|
|
42 | (2) |
|
|
44 | (8) |
|
|
52 | (1) |
|
|
53 | (2) |
|
Installing Other Packages |
|
|
55 | (1) |
|
|
56 | (2) |
|
|
58 | (3) |
|
Exploring SQL Server on Linux |
|
|
61 | (3) |
|
|
61 | (2) |
|
|
63 | (1) |
|
Post-Install Configuration |
|
|
64 | (7) |
|
|
64 | (5) |
|
SQL Server Instance Configuration |
|
|
69 | (1) |
|
Windows Configuration Options on Linux |
|
|
70 | (1) |
|
|
71 | (4) |
|
|
71 | (2) |
|
Rolling Back to a Previous Update |
|
|
73 | (1) |
|
|
74 | (1) |
|
|
75 | (2) |
Chapter 3 Building a Database and T-SQL Fundamentals |
|
77 | (34) |
|
Setting Up Your Environment |
|
|
77 | (2) |
|
|
79 | (10) |
|
|
80 | (2) |
|
Creating a Login and User |
|
|
82 | (2) |
|
|
84 | (5) |
|
|
89 | (11) |
|
|
90 | (1) |
|
|
91 | (1) |
|
Finally Creating the Tables |
|
|
92 | (8) |
|
Creating the Complete Database |
|
|
100 | (2) |
|
Building and Running Queries |
|
|
102 | (7) |
|
Inserting and Reading Data |
|
|
102 | (3) |
|
Updating and Deleting data |
|
|
105 | (1) |
|
Building Views and Stored Procedures |
|
|
106 | (3) |
|
|
109 | (2) |
Chapter 4 Building an Application and Advanced T-SQL |
|
111 | (34) |
|
Setting Up Your Environment |
|
|
112 | (1) |
|
Building and Running a Data Application for SQL Server |
|
|
113 | (13) |
|
Using node.js with SQL Server |
|
|
114 | (1) |
|
Connecting to SQL Server with node.js |
|
|
115 | (3) |
|
Inserting and Reading Data |
|
|
118 | (5) |
|
Executing Stored Procedures |
|
|
123 | (2) |
|
Enhancing Your Application |
|
|
125 | (1) |
|
|
126 | (9) |
|
Creating and Using Temporary Objects |
|
|
126 | (6) |
|
|
132 | (1) |
|
|
132 | (1) |
|
|
133 | (2) |
|
|
135 | (1) |
|
|
135 | (1) |
|
Exploring New SQL Server Capabilities |
|
|
135 | (9) |
|
|
136 | (1) |
|
|
136 | (3) |
|
|
139 | (3) |
|
|
142 | (2) |
|
|
144 | (1) |
Chapter 5 SQL Server Tools |
|
145 | (84) |
|
|
146 | (13) |
|
|
147 | (4) |
|
|
151 | (2) |
|
|
153 | (3) |
|
|
156 | (2) |
|
sqlservr Command Line Options |
|
|
158 | (1) |
|
|
159 | (16) |
|
|
160 | (3) |
|
|
163 | (4) |
|
|
167 | (2) |
|
Dashboards, Insights, and Extensions |
|
|
169 | (4) |
|
|
173 | (1) |
|
|
174 | (1) |
|
SQL Server Management Studio |
|
|
175 | (6) |
|
|
176 | (3) |
|
|
179 | (1) |
|
|
180 | (1) |
|
Tools Built into the Engine |
|
|
181 | (37) |
|
System Tables and Catalog Views |
|
|
182 | (2) |
|
|
184 | (1) |
|
|
184 | (12) |
|
|
196 | (8) |
|
T-SQL Performance Features |
|
|
204 | (7) |
|
|
211 | (3) |
|
|
214 | (2) |
|
|
216 | (2) |
|
|
218 | (10) |
|
|
219 | (7) |
|
|
226 | (1) |
|
|
227 | (1) |
|
|
228 | (1) |
Chapter 6 Performance Capabilities |
|
229 | (88) |
|
|
230 | (19) |
|
SQL Server Built-in Scalability |
|
|
231 | (4) |
|
Dynamic Memory and Cache Management |
|
|
235 | (5) |
|
|
240 | (7) |
|
|
247 | (2) |
|
Configuration for Maximum Performance |
|
|
249 | (10) |
|
SQL Server Instance Configuration |
|
|
250 | (5) |
|
|
255 | (3) |
|
Linux Kernel Configuration |
|
|
258 | (1) |
|
|
259 | (29) |
|
|
260 | (10) |
|
|
270 | (10) |
|
|
280 | (4) |
|
|
284 | (4) |
|
|
288 | (23) |
|
Partitioned Tables and Indexes |
|
|
288 | (6) |
|
|
294 | (8) |
|
|
302 | (9) |
|
The Intelligent SQL Server Engine |
|
|
311 | (5) |
|
Adaptive Query Processing |
|
|
311 | (2) |
|
|
313 | (3) |
|
|
316 | (1) |
Chapter 7 Security in SQL Server |
|
317 | (52) |
|
|
318 | (5) |
|
Active Directory Authentication |
|
|
323 | (5) |
|
|
324 | (2) |
|
|
326 | (2) |
|
|
328 | (1) |
|
|
328 | (17) |
|
Grant and Revoking Access |
|
|
328 | (1) |
|
|
329 | (7) |
|
|
336 | (4) |
|
|
340 | (5) |
|
SQL Server and Encryption |
|
|
345 | (10) |
|
SQL Server Keys and Certificates |
|
|
346 | (1) |
|
Transparent Data Encryption |
|
|
347 | (1) |
|
Encrypting Database Backups |
|
|
348 | (1) |
|
|
349 | (3) |
|
|
352 | (3) |
|
|
355 | (1) |
|
Data Classification and Auditing |
|
|
355 | (12) |
|
|
356 | (4) |
|
|
360 | (2) |
|
|
362 | (5) |
|
|
367 | (2) |
Chapter 8 High Availability and Disaster Recovery for SQL Server |
|
369 | (68) |
|
|
370 | (27) |
|
|
370 | (11) |
|
Database Restore and Recovery |
|
|
381 | (16) |
|
Always On Failover Cluster Instance |
|
|
397 | (8) |
|
|
398 | (3) |
|
|
401 | (2) |
|
sp_server_diagnostics and failover |
|
|
403 | (2) |
|
Always On Availability Groups |
|
|
405 | (31) |
|
|
406 | (5) |
|
|
411 | (16) |
|
|
427 | (4) |
|
Database Health Detection |
|
|
431 | (1) |
|
Performance Considerations |
|
|
431 | (2) |
|
|
433 | (1) |
|
|
434 | (1) |
|
Clusterless Availability Groups |
|
|
434 | (2) |
|
|
436 | (1) |
Chapter 9 Managing and Monitoring SQL Server |
|
437 | (58) |
|
Managing the SQL Server Instance |
|
|
438 | (14) |
|
Changing Server Configuration Options |
|
|
439 | (1) |
|
Creating an SQL Server Agent Job |
|
|
440 | (2) |
|
|
442 | (3) |
|
Using the Dedicated Admin Connection |
|
|
445 | (4) |
|
sqlservr Command Line Options |
|
|
449 | (3) |
|
|
452 | (15) |
|
|
452 | (1) |
|
|
453 | (2) |
|
Detaching and Attaching Databases |
|
|
455 | (2) |
|
Alter Database Usage Scenarios |
|
|
457 | (1) |
|
|
458 | (9) |
|
|
467 | (8) |
|
|
467 | (2) |
|
|
469 | (6) |
|
Managing Server-Side Code |
|
|
475 | (1) |
|
|
475 | (14) |
|
Monitoring SQL Server Performance |
|
|
476 | (7) |
|
Using the System Health Session |
|
|
483 | (2) |
|
|
485 | (1) |
|
Linux Tools for Monitoring |
|
|
485 | (4) |
|
SQL Server Troubleshooting |
|
|
489 | (4) |
|
|
489 | (2) |
|
|
491 | (1) |
|
|
492 | (1) |
|
|
493 | (2) |
Chapter 10 Migrating to SQL Server on Linux |
|
495 | (50) |
|
Migrating from SQL Server |
|
|
496 | (13) |
|
Preparing for the Migration |
|
|
497 | (7) |
|
|
504 | (5) |
|
|
509 | (5) |
|
Preparing for the Migration |
|
|
510 | (1) |
|
|
511 | (3) |
|
Migrating from PostgreSQL |
|
|
514 | (20) |
|
How Does PostgreSQL Compare with SQL Server? |
|
|
515 | (17) |
|
|
532 | (2) |
|
Post Migration Considerations |
|
|
534 | (9) |
|
Optimizing Performance Post Migration |
|
|
534 | (3) |
|
Design Your Security and HADR Strategy |
|
|
537 | (1) |
|
Using Database Compatibility |
|
|
537 | (4) |
|
Migrate SQL Server Instance Objects |
|
|
541 | (1) |
|
|
541 | (1) |
|
Using an Existing Application Against SQL Server on Linux |
|
|
542 | (1) |
|
|
543 | (2) |
Chapter 11 SQL Server and Containers |
|
545 | (42) |
|
Introduction to Containers |
|
|
545 | (3) |
|
How to use SQL Server with Containers |
|
|
548 | (23) |
|
Deploy and Run the SQL Server Image |
|
|
549 | (10) |
|
Build Your Own Container with a Dockerfile |
|
|
559 | (4) |
|
Compose a Multicontainer Application |
|
|
563 | (8) |
|
|
571 | (6) |
|
SQL Server and Kubernetes |
|
|
577 | (8) |
|
|
578 | (2) |
|
SQL Server HADR and Kubernetes |
|
|
580 | (5) |
|
|
585 | (2) |
Chapter 12 Epilogue |
|
587 | (2) |
Index |
|
589 | |