Математика

Физика

Химия

Биология

Техника и    технологии

Accelerated SQL Server 2008 - Robert Walters INDEX 751 Aprecc str2008
Accelerated SQL Server 2008 - Robert Walters INDEX 751 Aprecc str2008


Contents
About the Authors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
PART 1 Overview of SQL Server
CHAPTER 1 SQL Server 2008 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
The Vision of SQL Server 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Enterprise Data Platform. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Beyond Relational . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Dynamic Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Pervasive Insight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
SQL Server 2008 Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
A Word on Server Consolidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CHAPTER 2 SQL Server Installation and Configuration . . . . . . . . . . . . . . . . . . . . 9
SQL Server Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Upgrading to SQL Server 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Planning the Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Using Upgrade Advisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Performing the Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23



PART 2 Enterprise Data Platform
CHAPTER 3 Policy Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Needs Addressed by Policy Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Policy Management Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Managed Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Facets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Conditions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34



Sample Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Policy Management Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Policy Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
PM Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
¦CHAPTER 4 High Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
High Availability Defined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
How Database Mirroring Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Managing Database Mirroring Using T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . 54
Managing Database Mirroring Using Management Studio . . . . . . . . . . . . . 61
Full-Text Indexing and Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Service Broker and Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Client Applications and Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . 66
Monitoring Database Mirroring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Performance Considerations for Database Mirroring. . . . . . . . . . . . . . . . . . 70
Limitations of Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Database Snapshots and Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
How Database Snapshots Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Managing Snapshots Using T-SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Performance Considerations When Using Snapshots on Mirrors . . . . . . . . 74
Using and Monitoring Database Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . 74
Limitations of Database Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Windows Clustering in SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
SQL Server Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Snapshot Replication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Merge Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Transaction Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Replication and Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Reducing Planned Downtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Adding a CPU to a Running System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Adding Memory to a Running System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Performing Online Index Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Partitioning Tables and Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
¦CHAPTER 5 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Managing and Monitoring Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Data Collector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Resource Governor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Optimizing Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Backup Compression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Data Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Improving Query Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Plan Guide Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Sparse Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Column Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
¦CHAPTER 6 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Disabled Database Engine Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Remote Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Dedicated Administrator Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
.NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Database Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
SQLMail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Service Broker, HTTP Connectivity, and Database Mirroring . . . . . . . . . . . 112
Web Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
xp_cmdshell XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Ad Hoc Remote Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
OLE Automation XPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
SMO and DMO XPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Principals and Securables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Principals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Securables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Types of Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Managing Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Code Access Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Imperative and Declarative CAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Using CAS with SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Auditing in SQL Server 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Where to Write Audit Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
What to Audit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
An Auditing Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Managing Audits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

¦CHAPTER 7 SQL Server Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Encryption Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Service Master Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Database Master Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Asymmetric Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Symmetric Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Transparent Data Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Enabling TDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Choosing Between TDE and Column-Level Encryption . . . . . . . . . . . . . . . 158
Extensible Key Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Encryption Without Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Hashing and Signing Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Security Catalog Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Query Efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
¦CHAPTER 8 Automation and Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
SQL Server Agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Scheduling Agent Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Permissions for Executing Agent Jobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Proxy Accounts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Job Schedule Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Logging Agent Job-Step Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
WMI Events and Agent Alerts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Agent Performance Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Agent Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Maintenance Plans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Scheduling Maintenance Subplans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Managing Maintenance Plan Connections . . . . . . . . . . . . . . . . . . . . . . . . . 187
Reporting and Logging Maintenance Plans. . . . . . . . . . . . . . . . . . . . . . . . . 188
Defining Maintenance Plan Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
SQLCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Connecting to SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Passing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Using the Dedicated Administrator Connection . . . . . . . . . . . . . . . . . . . . . 194
Creating Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
PowerShell for SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Introducing PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Using SQL Server PowerShell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Database Mail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Configuring Database Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Sending Mail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
SQL Profiler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Performance Monitor Correlation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Showplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Deadlock Visualization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Extended Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Extended Events Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Extended Events Example: Detecting Deadlocks . . . . . . . . . . . . . . . . . . . . 217
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
¦CHAPTER 9 Service Broker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
What Is Service Broker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Service Broker Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Service Broker Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Creating Service Broker Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Enabling Service Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Creating Message Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Creating Contracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Creating Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Creating Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Creating Service Broker Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . 228
A Simple Service Broker Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Service Broker Routing and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Creating Distributed Service Broker Applications. . . . . . . . . . . . . . . . . . . . 236
Distributed Service Broker Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Message Priorities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Troubleshooting Service Broker Using SSBDiagnose. . . . . . . . . . . . . . . . . . . . . . 261
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
¦CHAPTER 10 Integrated Full-Text Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Creating Full-Text Catalogs and Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Using the GUI to Create a Full-Text Catalog and Index . . . . . . . . . . . . . . . 264
Using T-SQL to Create a Full-Text Catalog and Index. . . . . . . . . . . . . . . . . 272
Querying with iFTS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
FREETEXT Predicate Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
CONTAINS Predicate Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
FREETEXTTABLE and CONTAINSTABLE Function Searches. . . . . . . . . . . . 277
Managing Thesaurus Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Editing Thesaurus Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Reloading a Thesaurus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

x ¦CONTENTS

Using Stoplists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Searching Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Creating a Full-Text Index for Documents . . . . . . . . . . . . . . . . . . . . . . . . . 282
Querying Documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Managing iFTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
PART 3 ¦¦¦ Development in SQL Server
¦CHAPTER 11 New Datatypes in SQL Server 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Spatial Support in SQL Server 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
The GEOMETRY Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
The GEOGRAPHY Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
How Time Has Changed in SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
New Date and Time Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
New Date and Time System Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
A New Hierarchical Datatype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Filestream Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Enabling Filestream Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
A Filestream Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
¦CHAPTER 12 T-SQL Enhancements for Developers . . . . . . . . . . . . . . . . . . . . . . . . 315
Notable DML Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Old-Style Outer Joins Deprecated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Common Table Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
TOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Extensions to the FROM Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
OUTPUT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Ranking Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
EXCEPT and INTERSECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Synonyms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
MERGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
General Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
.WRITE Extension to the UPDATE Statement. . . . . . . . . . . . . . . . . . . . . . . . 357
EXECUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Code Security Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
.NET Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Declaring and Setting Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Passing Table-Valued Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

¦CHAPTER 13 T-SQL Enhancements for DBAs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Locking Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Metadata Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Compatibility Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Catalog Views. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Dynamic Management Views and Functions . . . . . . . . . . . . . . . . . . . . . . . 371
Notable SQL Server Performance Monitor Counters . . . . . . . . . . . . . . . . . . . . . . 374
DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Creating and Altering DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Dropping DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Enabling and Disabling DDL Triggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Enumerating DDL Triggers Using Catalog Views . . . . . . . . . . . . . . . . . . . . 376
Programming DDL Triggers with the eventdata() Function . . . . . . . . . . . . 377
Indexing and Performance Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Online Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Controlling Locking During Index Creation . . . . . . . . . . . . . . . . . . . . . . . . . 379
Creating Indexes with Additional Columns Included . . . . . . . . . . . . . . . . . 380
Altering Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Using Filtered Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Using Filtered Statistics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Using Statistics for Correlated Datetime Columns . . . . . . . . . . . . . . . . . . . 385
Improving Performance of Ordering for Tertiary Collations . . . . . . . . . . . . 386
Table and Index Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Using Indexed Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Using Partition-Aligned Indexed Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Persisting Computed Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
SNAPSHOT Isolation Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Database Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Data-Integrity Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Verifying a Database’s Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Putting a Database into an Emergency State . . . . . . . . . . . . . . . . . . . . . . . 400
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
¦CHAPTER 14 .NET Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Introduction to SQL Server .NET Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Why Does SQL Server Host the CLR? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
When to Use CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
When Not to Use CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
How SQL Server Hosts .NET: An Architectural Overview . . . . . . . . . . . . . . 405
SQL Server .NET Programming Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Enhancements to ADO.NET for SQL Server Hosting. . . . . . . . . . . . . . . . . . 406
Overview of the .NET Namespaces for SQL Server . . . . . . . . . . . . . . . . . . 406
Programming a CLR Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Starting a Visual Studio 2008 SQL Server Project . . . . . . . . . . . . . . . . . . . 408
Anatomy of a Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Adding Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Defining the Problem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Using the SqlPipe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Putting It All Together: Coding the Body of the Stored Procedure . . . . . . . 416
Testing the Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Debugging the Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Throwing Exceptions in CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Deploying CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
¦CHAPTER 15 Programming Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
CLR User-Defined Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Applications for User-Defined Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Adding a User-Defined Type to a SQL Server Project. . . . . . . . . . . . . . . . . 428
Parts of a User-Defined Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
A Simple Example: The PhoneNumber Type . . . . . . . . . . . . . . . . . . . . . . . . 433
Another Example: The StringArray Type . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Managing User-Defined Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
CLR User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Adding a User-Defined Function to a Visual Studio Project . . . . . . . . . . . . 449
The Visual Studio 2008 User-Defined Function Template . . . . . . . . . . . . . 449
The SqlFunction Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Scalar User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Table-Valued User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Managing CLR User-Defined Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
CLR User-Defined Aggregates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Adding a User-Defined Aggregate to a SQL Server Project . . . . . . . . . . . . 458
Parts of a User-Defined Aggregate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
CLR User-Defined Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Adding a CLR User-Defined Trigger to a SQL Server Project. . . . . . . . . . . 466
Programming CLR Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Managing User-Defined Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Managing Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

¦CHAPTER 16 SQL Server and XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
What Is XML? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
What Are XPath and the XMLDOM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
XPath Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
XPath Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
The XMLDOM: XML Document Object Model . . . . . . . . . . . . . . . . . . . . . . . 477
The XPathDocument, XPathNavigator, and XPathExpression Classes . . . 478
Getting XML into the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
SQL Server Configuration for SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
OPENXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
XML Views Using Annotated XML Schemas . . . . . . . . . . . . . . . . . . . . . . . . 486
SQLXML Updategrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
XML Bulk-Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Getting XML Out of the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
FOR XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Templates to Improve Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Working with XML Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Validation for “Any” Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Date and Time Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Union and List Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Programming SQLXML from .NET and COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
SQLXML Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
SQLXML Coding Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
¦CHAPTER 17 SQL Server XML and XQuery Support. . . . . . . . . . . . . . . . . . . . . . . . 515
Using the XML Datatype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Understanding How XML Is Stored by SQL Server . . . . . . . . . . . . . . . . . . . 517
Creating XML Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Setting Permissions for Schema Creation. . . . . . . . . . . . . . . . . . . . . . . . . . 522
Constraining XML Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Examining the XML Datatype Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Inserting Data into XML Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Using SSIS with XML Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Bulk-Loading XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Writing a Custom Query or Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Querying XML Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
XQuery 101. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Basic XML Query Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Cross-Domain Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Summary . . . . . . .
Modifying XML Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Inserting an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Deleting an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Changing a Node Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Limitations of XML Modification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Indexing XML for Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Understanding How XML Indexing Works . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Examining Secondary XML Indexes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Full-Text Search and the XML Datatype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Catalog Views and XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
Applications and XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
XML Web Services Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Creating an Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Using Advanced Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Monitoring Performance of XML Web Services. . . . . . . . . . . . . . . . . . . . . . 551
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
¦CHAPTER 18 LINQ to SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Object/Relational Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Entity-Generation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Using SQLMetal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Using the Visual Studio LINQ to SQL Classes Designer . . . . . . . . . . . . . . . 557
Analyzing the Generated Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Running LINQ Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
The Select Operator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
The Where Operator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
The Join Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
The OrderBy Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
The DataContext Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Inserting, Updating, and Deleting Records . . . . . . . . . . . . . . . . . . . . . . . . . 570
Concurrency Conflict Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Deferred Query Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Deferred Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Executing Stored Procedures and User-Defined Functions . . . . . . . . . . . . 580
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
PART 4 ¦¦¦ Business Intelligence in SQL Server
¦CHAPTER 19 Reporting Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Reporting Services Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Report Server Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Metadata Catalog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Report Designer in BIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Report Designer Preview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
SQL Server Management Studio Integration. . . . . . . . . . . . . . . . . . . . . . . . 596
Reporting Services Configuration Manager . . . . . . . . . . . . . . . . . . . . . . . . 596
Reporting Services Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
Building a Basic Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Launching the Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Working with Data Sources and Datasets. . . . . . . . . . . . . . . . . . . . . . . . . . 600
Laying Out and Previewing the Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Working with Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Deploying Your Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Report Design Advanced Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Multivalued Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
DatePicker for Date Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Interactive Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Analysis Services Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
Reporting Services Data Sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Custom Report Items. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
Visual Studio Integration and ReportViewer Controls . . . . . . . . . . . . . . . . . . . . . . 614
Using WinForm Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
Working with the ReportViewer Control Programmatically . . . . . . . . . . . . 617
LocalReport and ServerReport Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
SharePoint Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
End-User Ad Hoc Query and Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
The Report Builder Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
The Report Model and Semantic Model Definition Language . . . . . . . . . . 622
Report Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Exporting Reports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Rendering Large Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Data Regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Tablix Data Region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Gauge Data Region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Updated Chart Data Region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
New Analysis Service Features in SQL Server 2008 . . . . . . . . . . . . . . . . . . . . . . 642
Improvements in Design Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Improvements in Monitoring Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Runtime Improvements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Analysis Service Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Analysis Services Objects and Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . 645
OLAP, OLTP, and Data Warehouses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
OLAP and OLTP Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
OLAP Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Analysis Services Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
Starting a New Analysis Services Project . . . . . . . . . . . . . . . . . . . . . . . . . . 650
Defining Data Sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
Editing a Data Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Defining Data Source Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Defining Cubes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Configuring Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Deploying Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Working with Cubes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
Viewing Cube Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
Browsing Cubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Managing Displayed Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Performing Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
Working with Key Performance Indicators . . . . . . . . . . . . . . . . . . . . . . . . . 679
Using Analysis Services Scripting Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Creating a DSV with a Named Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Viewing the ASSL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
¦CHAPTER 21 Integration Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
An Overview of SSIS Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
When Can You Use SSIS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
What’s New in SSIS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
The SSIS Integrated Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Connecting to SSIS in Management Studio . . . . . . . . . . . . . . . . . . . . . . . . 690
Creating a New SSIS Project in BIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
SSIS Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
An Overview of the SSIS Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
A Data Flow Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
Event Handlers Design Surface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708

Control Flow and Data Flow Designer Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
Control Flow Containers and Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Data Flow Designer Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Change Data Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Enabling Change Data Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
Extracting Change Data with SSIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Dynamic Package Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
Configuring Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Creating Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Precedence Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Checkpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Control Flow and Data Flow Visual Debugging . . . . . . . . . . . . . . . . . . . . . . 744
Data Viewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Other Debug Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
SSIS Package Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
The SSIS Package Deployment Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
Migrating SQL Server 2000 DTS Packages. . . . . . . . . . . . . . . . . . . . . . . . . 748
Scheduling an SSIS Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
¦INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751

Цена: 200руб.

Назад

Заказ

На главную страницу