xxxv Part I Laying the Foundation Chapter 1: The World of SQL Server... Set-based queries...37 Indexing...37 Concurrency...38 Advanced scalability...38 A performance framework...39 Issue
Trang 1Contents at a Glance
Chapter 35: Asynchronous Messaging with Service Broker 807
Chapter 36: Replicating Data 813
Chapter 37: Performing ETL with Integration Services 829
Chapter 38: Access as a Front End to SQL Server 867
Part VI Enterprise Data Management Chapter 39: Configuring SQL Server 883
Chapter 40: Policy-Based Management 939
Chapter 41: Recovery Planning 953
Chapter 42: Maintaining the Database 985
Chapter 43: Automating Database Maintenance with SQL Server Agent 1011
Chapter 44: Transferring Databases 1039
Chapter 45: Database Snapshots 1059
Chapter 46: Log Shipping 1069
Chapter 47: Database Mirroring 1091
Chapter 48: Clustering 1119
Part VII Security Chapter 49: Authenticating Principals 1169
Chapter 50: Authorizing Securables 1187
Chapter 51: Data Cryptography 1197
Chapter 52: Row-Level Security 1205
Part VIII Monitoring and Auditing Chapter 53: Data Audit Triggers 1223
Chapter 54: Schema Audit Triggers 1233
Chapter 55: Performance Monitor 1237
Chapter 56: Tracing and Profiling 1243
Chapter 57: Wait States 1255
Chapter 58: Extended Events 1261
Chapter 59: Change Tracking 1267
Chapter 60: Change Data Capture 1285
Chapter 61: SQL Audit 1297
Chapter 62: Management Data Warehouse 1305
Part IX Performance Tuning and Optimization Chapter 63: Interpreting Query Execution Plans 1313
Chapter 64: Indexing Strategies 1321
Chapter 65: Query Plan Reuse 1357
Chapter 66: Managing Transactions, Locking, and Blocking 1363
Chapter 67: Data Compression 1415
Chapter 68: Partitioning 1427
Chapter 69: Resource Governor 1453
Part X Business Intelligence Chapter 70: BI Design 1461
Chapter 71: Building Multidimensional Cubes with Analysis Services 1469
Chapter 72: Programming MDX Queries 1509
Chapter 73: Authoring Reports with Reporting Services 1527
Chapter 74: Administering Reporting Services 1559
Chapter 75: Analyzing Data with Excel 1577
Chapter 76: Data Mining with Analysis Services 1593
Appendix A: SQL Server 2008 Specifications 1613
Appendix B: Using the Sample Databases 1619
Index 1625
Trang 2Foreword .xxxiii
Introduction . xxxv
Part I Laying the Foundation Chapter 1: The World of SQL Server .3
A Great Choice 4
SQL Server Database Engine 6
Database Engine 6
Transact-SQL 8
Policy-Based Management 10
.NET Common Language Runtime 10
Service Broker 11
Replication services 11
Integrated Full-Text Search 11
Server management objects 12
Filestream 12
SQL Server Services 12
SQL Server Agent 12
Database Mail 12
Distributed Transaction Coordinator (DTC) 12
Business Intelligence 14
Business Intelligence Development Studio 14
Integration Services 14
Analysis Services 15
Reporting Services 17
UI and Tools 17
SQL Server Management Studio 18
SQL Server Configuration Manager 18
SQL Profiler/Trace 19
Performance Monitor 19
Command-line utilities 19
Books Online 20
SQL Server Editions 20
Exploring the Metadata 22
System databases 22
Metadata views 22
What’s New? 23
Summary 26
Chapter 2: Data Architecture .27
Information Architecture Principle 28
Database Objectives 28
Usability 29
Extensibility 29
Data integrity 30
Performance/scalability 31
Availability 31
Security 31
Smart Database Design 33
Database system 34
Physical schema 36
Trang 3Set-based queries 37
Indexing 37
Concurrency 38
Advanced scalability 38
A performance framework 39
Issues and objections 40
Summary 40
Chapter 3: Relational Database Design . 43
Database Basics 43
Benefits of a digital database 44
Tables, rows, columns 45
Database design phases 46
Normalization 47
The three ‘‘Rules of One’’ 47
Identifying entities 48
Generalization 49
Primary keys 51
Foreign keys 52
Cardinality 52
Optionality 52
Data Design Patterns 55
One-to-many pattern 55
One-to-one pattern 56
Many-to-many pattern 56
Supertype/subtype pattern 59
Domain integrity lookup pattern 61
Recursive pattern 61
Database design layers 65
Normal Forms 65
First normal form (1NF) 66
Second normal form (2NF) 67
Third normal form (3NF) 69
The Boyce-Codd normal form (BCNF) 70
Fourth normal form (4NF) 70
Fifth normal form (5NF) 71
Summary 71
Chapter 4: Installing SQL Server 2008 .73
Selecting Server Hardware 73
CPU planning 73
Copious memory 74
Disk-drive subsystems 74
Network performance 76
Preparing the Server 78
Dedicated server 78
Operating system 79
Service accounts 79
Server instances 79
Performing the Installation 81
Attended installations 81
Unattended installations 85
Remote installations 86
Upgrading from Previous Versions 86
Upgrading from SQL Server 2005 87
Migrating to SQL Server 87
Migrating from Access 87
Migration Assistant 88
Removing SQL Server 90
Summary 91
Chapter 5: Client Connectivity . 93
Enabling Server Connectivity 93
Server Configuration Manager 94
SQL Native Client Connectivity (SNAC) 95
Trang 4SQL Server Native Client Features 96
Requirements 97
Asynchronous operations 97
Multiple Active Result Sets (MARS) 97
XML data types 98
User-defined types 98
Large value types 98
Handling expired passwords 98
Snapshot isolation 99
Summary 99
Chapter 6: Using Management Studio . 101
Organizing the Interface 104
Window placement 104
The Context Menu 106
Registered Servers 107
Managing Servers 107
Server Groups 109
Object Explorer 110
Navigating the tree 110
Filtering Object Explorer 113
Object Explorer Details 113
The Table Designer 114
Building database diagrams 115
The Query Designer 116
Object Explorer reports 118
Using the Query Editor 119
Opening a query connecting to a server 119
Opening a sql file 119
Shortcuts and bookmarks 121
Query options 122
Executing SQL batches 123
Results! 123
Viewing query execution plans 123
Using the Solution Explorer 125
Jump-Starting Code with Templates 126
Using templates 126
Managing templates 126
Summary 126
Chapter 7: Scripting with PowerShell .129
Why Use PowerShell? 130
Basic PowerShell 130
Language features 130
Creating scripts 137
Communicating with SQL Server 142
SQL Server Management Objects 142
ADO.NET 147
Scripting SQL Server Tasks 150
Administrative tasks 150
Data-based tasks 159
SQL Server PowerShell Extensions 161
SQLPS.exe 161
The SQL PSDrive — SQLSERVER: 162
SQL cmdlets 162
Summary 164
Part II Manipulating Data with Select Chapter 8: Introducing Basic Query Flow .167
Understanding Query Flow 168
Syntactical flow of the query statement 168
A graphical view of the query statement 169
Trang 5Logical flow of the query statement 170
Physical flow of the query statement 171
From Clause Data Sources 171
Possible data sources 171
Table aliases 173
[Table Name] 173
Fully qualified names 174
Where Conditions 175
Using the between search condition 176
Comparing with a list 176
Using the like search condition 179
Multiple where conditions 181
Select where 182
Columns, Stars, Aliases, and Expressions 183
The star 183
Aliases 183
Qualified columns 184
Ordering the Result Set 185
Specifying the order by using column names 185
Specifying the order by using expressions 187
Specifying the order by using column aliases 188
Using the column ordinal position 188
Order by and collation 189
Select Distinct 191
Top () 192
The with ties option 193
Selecting a random row 194
Summary 195
Chapter 9: Data Types, Expressions, and Scalar Functions .197
Building Expressions 197
Operators 198
Bitwise operators 199
Case expressions 202
Working with nulls 204
Scalar Functions 209
User information functions 210
Date and time functions 210
String Functions 214
Soundex Functions 218
Using the SOUNDEX() function 220
Using the DIFFERENCE() Soundex function 221
Data-Type Conversion Functions 222
Server Environment Information 224
Summary 225
Chapter 10: Merging Data with Joins and Unions .227
Using Joins 228
Inner Joins 230
Building inner joins with the Query Designer 231
Creating inner joins within SQL code 231
Number of rows returned 233
ANSI SQL 89 joins 234
Multiple data source joins 235
Outer Joins 236
Using the Query Designer to create outer joins 238
T-SQL code and outer joins 238
Outer joins and optional foreign keys 240
Full outer joins 241
Red thing blue thing 241
Placing the conditions within outer joins 243
Multiple outer joins 244
Self-Joins 244
Cross (Unrestricted) Joins 247
Trang 6Exotic Joins 248
Multiple-condition joins 248
(theta) joins 249
Non-key joins 249
Set Difference Queries 250
Left set difference query 251
Full set difference queries 252
Using Unions 254
Union [All] 254
Intersection union 255
Difference union/except 256
Summary 257
Chapter 11: Including Data with Subqueries and CTEs . 259
Methods and Locations 259
Simple Subqueries 262
Common table expressions 264
Using scalar subqueries 265
Using subqueries as lists 267
Using subqueries as tables 271
Row constructors 273
All, some, and any 274
Correlated Subqueries 276
Correlating in the where clause 276
Correlating a derived table using apply 280
Relational Division 281
Relational division with a remainder 282
Exact relational division 285
Composable SQL 286
Summary 288
Chapter 12: Aggregating Data .289
Simple Aggregations 289
Basic aggregations 290
Aggregates, averages, and nulls 293
Using aggregate functions within the Query Designer 293
Beginning statistics 294
Grouping within a Result Set 295
Simple groupings 296
Grouping sets 297
Filtering grouped results 298
Aggravating Queries 299
Including group by descriptions 299
Including all group by values 301
Nesting aggregations 303
Including detail descriptions 304
OLAP in the Park 306
Rollup subtotals 306
Cube queries 308
Building Crosstab Queries 309
Pivot method 309
Case expression method 311
Dynamic crosstab queries 312
Unpivot 313
Cumulative Totals (Running Sums) 314
Correlated subquery solution 315
T-SQL cursor solution 315
Multiple assignment variable solution 316
Summary 317
Chapter 13: Windowing and Ranking .319
Windowing 319
The Over() clause 320
Partitioning within the window 321
Trang 7Ranking Functions 322
Row number() function 322
Rank() and dense_rank() functions 324
Ntile() function 325
Aggregate Functions 326
Summary 327
Chapter 14: Projecting Data Through Views . 329
Why Use Views? 329
The Basic View 331
Creating views using the Query Designer 332
Creating views with DDL code 334
Executing views 334
Altering and dropping a view 336
A Broader Point of View 336
Column aliases 337
Order by and views 337
View restrictions 338
Nesting views 338
Updating through views 340
Views and performance 341
Locking Down the View 341
Unchecked data 342
Protecting the data 342
Protecting the view 343
Encrypting the view’s select statement 344
Application metadata 345
Using Synonyms 345
Summary 346
Chapter 15: Modifying Data .347
Inserting Data 348
Inserting simple rows of values 349
Inserting a result set from select 352
Inserting the result set from a stored procedure 353
Creating a default row 355
Creating a table while inserting data 355
Updating Data 358
Updating a single table 359
Performing global search and replace 360
Referencing multiple tables while updating data 360
Deleting Data 365
Referencing multiple data sources while deleting 366
Cascading deletes 367
Alternatives to physically deleting data 368
Merging Data 369
Returning Modified Data 373
Returning data from an insert 373
Returning data from an update 374
Returning data from a delete 374
Returning data from a merge 374
Returning data into a table 375
Summary 376
Chapter 16: Modification Obstacles . 377
Data Type/Length 377
Primary Key Constraint and Unique Constraint 378
Identity columns 379
Globally unique identifiers (GUIDs) 381
Deleting Duplicate Rows 383
Deleting duplicate rows using windowing 384
Deleting duplicate rows using a surrogate key 385
Deleting duplicate rows using select distant into 386
Foreign Key Constraints 387
Null and Default Constraints 389
Check Constraints 389
Trang 8Instead of Triggers 390
After Triggers 391
Non-Updateable Views 392
Views With Check Option 393
Calculated Columns 394
Security Constraints 395
Summary 396
Part III Beyond Relational Chapter 17: Traversing Hierarchies .399
Adjacency List Pattern 401
Single-level queries 404
Subtree queries 407
Is the node an ancestor? 415
Determining the node’s level 415
Reparenting the adjacency list 415
Indexing an adjacency list 416
Cyclic errors 416
Adjacency list variations 417
Adjacency list pros and cons 419
The Materialized-Path Pattern 419
Subtree queries 422
Is the node in the subtree? 424
Determining the node level 425
Single-level queries 426
Reparenting the materialized path 427
Indexing the materialized path 427
Materialized path pros and cons 427
Using the New HierarchyID 428
Selecting a single node 430
Scanning for ancestors 430
Performing a subtree search 431
Single-level searches 431
Inserting new nodes 432
Performance 432
HierarchyID pros and cons 433
Summary 433
Chapter 18: Manipulating XML Data .435
XML Processing in SQL Server 2008 436
Generating XML documents 437
Querying XML documents 437
Validating XML documents 438
Sample Tables and Data 440
XML Data Type 441
Typed and untyped XML 442
Creating and using XML columns 443
Declaring and using XML variables 444
Using XML parameters and return values 445
Loading/querying XML documents from disk files 446
Limitations of the XML data type 447
Understanding XML Data Type Methods 448
XPath 449
value() 449
nodes() 449
exist() 450
query() 451
modify() 451
Joining XML nodes with relational tables 451
Using variables and filters in XQuery expressions 452
Accessing the parent node 454
Generating XML Output Using FOR XML 455
FOR XML AUTO 455
FOR XML RAW 457
Trang 9FOR XML EXPLICIT 458
FOR XML PATH 464
TYPE directive 468
XSINIL Directive 469
Generating XML Schema information 470
Generating XML namespaces 471
Understanding XQuery and FLWOR operations 472
Simple queries 472
FLWOR operation 473
What’s new for XQuery in SQL Server 2008 475
Understanding XQuery Functions 476
String functions 476
Numeric and aggregate functions 476
Other functions 477
Performing XML Data Modification 477
Insert operation 478
Update operation 478
Delete operation 479
What’s new for XML DML operations in SQL Server 2008 479
Handling Namespaces 480
Shredding XML Using OPENXML() 481
XSD and XML Schema Collections 483
Creating an XML Schema collection 483
Creating typed XML columns and variables 484
Performing validation 484
XML DOCUMENT and CONTENT 485
Altering XML Schema collections 485
What’s in the ‘‘collection’’? 485
What’s new in SQL Server 2008 for XSD 487
Understanding XML Indexes 487
XML Best Practices 488
Summary 489
Chapter 19: Using Integrated Full-Text Search .491
Configuring Full-Text Search Catalogs 494
Creating a catalog with the wizard 494
Creating a catalog with T-SQL code 496
Pushing data to the full-text index 496
Maintaining a catalog with Management Studio 497
Maintaining a catalog in T-SQL code 498
Word Searches 498
The Contains function 498
The ContainsTable function 499
Advanced Search Options 501
Multiple-word searches 501
Searches with wildcards 502
Phrase searches 502
Word-proximity searches 502
Word-inflection searches 504
Thesaurus searches 504
Variable-word-weight searches 505
Fuzzy Searches 507
Freetext 507
FreetextTable 507
Performance 508
Summary 508
Part IV Developing with SQL Server Chapter 20: Creating the Physical Database Schema .513
Designing the Physical Database Schema 514
Logical to physical options 515
Refining the data patterns 515
Designing for performance 515
Trang 10Responsible denormalization 516
Designing for extensibility 517
Creating the Database 517
The Create DDL command 517
Database-file concepts 519
Configuring file growth 520
Using multiple files 522
Planning multiple filegroups 525
Creating Tables 526
Designing tables using Management Studio 526
Working with SQL scripts 528
Schemas 529
Column names 530
Filegroups 531
Creating Keys 532
Primary keys 532
The surrogate debate: pros and cons 532
Database design layers 534
Creating foreign keys 537
Creating User-Data Columns 542
Column data types 542
Calculated columns 546
Sparse columns 546
Column constraints and defaults 547
Creating Indexes 550
Composite indexes 552
Primary keys 552
Filegroup location 552
Index options 553
Include columns 553
Filtered indexes 553
Summary 556
Chapter 21: Programming with T-SQL .559
Transact-SQL Fundamentals 560
T-SQL batches 560
T-SQL formatting 562
Variables 563
Variable default and scope 563
Using the set and select commands 564
Incrementing variables 565
Conditional select 566
Using variables within SQL queries 566
Multiple assignment variables 567
Procedural Flow 568
If 569
While 570
Goto 571
Examining SQL Server with Code 572
Dynamic Management Views 572
sp_help 572
System functions 573
Temporary Tables and Table Variables 574
Local temporary tables 574
Global temporary tables 575
Table variables 576
Summary 577
Chapter 22: Kill the Cursor! . 579
Anatomy of a Cursor 580
The five steps to cursoring 580
Managing the cursor 581
Watching the cursor 583
Cursor options 583
Update cursor 584