Математика | ||||
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руб. |
||||