Математика

Физика

Химия

Биология

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

Pro SQL Server 2005 -2006 by Thomas Rizzo str643
Pro SQL Server 2005 -2006 by Thomas Rizzo str643



2006 by Thomas Rizzo, Adam Machanic, Julian Skinner, Louis Davidson, Robin Dewson,
Jan Narkiewicz, Joseph Sack, Rob Walters


Contents
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvii
About the Technical Reviewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
¦CHAPTER 1 SQL Server Overview and Installation . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Evolution of SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
SQL Server 2005 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Minimum System Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Installation Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Server Registration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Sample Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Side-by-Side Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Upgrading from SQL Server 2000 and 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
¦CHAPTER 2 SQL Server Management Technologies . . . . . . . . . . . . . . . . . . . . . . . 25
Connecting to and Managing Your SQL Servers . . . . . . . . . . . . . . . . . . . . . . . . . 25
Context-Sensitive Menus for Each Object Type . . . . . . . . . . . . . . . . . . . . . 26
Mobile Database Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
SQL Server 2000 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
User Interface Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Asynchronous Treeview and Object Filtering . . . . . . . . . . . . . . . . . . . . . . . 29
Nonmodal and Resizable Dialog Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Script and Schedule Enhancements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Code Authoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Results Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Activity Monitor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Summary Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
vi ¦CONTENTS
Functional Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Dedicated Administrator Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Deadlock Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Performance Monitor Correlation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Server Registration Import/Export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Maintenance Plan Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
SQL Server Agent Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Database Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Catalog Views and Dynamic Management Views . . . . . . . . . . . . . . . . . . . . 41
Default Server Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Profiler Enhancements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
SQL Configuration Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Surface Area Configurator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Enhanced Help and Community Integration . . . . . . . . . . . . . . . . . . . . . . . . 47
SQLCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Server Management Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
¦CHAPTER 3 T-SQL Enhancements for Developers . . . . . . . . . . . . . . . . . . . . . . . . . 53
Enhancements Affecting DML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Old-Style Outer Joins Deprecated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Common Table Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
TOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Extensions to the FROM Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
OUTPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Ranking Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
EXCEPT and INTERSECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
General Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Error Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
.WRITE Extension to the UPDATE Statement . . . . . . . . . . . . . . . . . . . . . . . . 94
EXECUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Code Security Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
.NET Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
¦CHAPTER 4 T-SQL Enhancements for DBAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Metadata Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Compatibility Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Catalog Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Dynamic Management Views and Functions. . . . . . . . . . . . . . . . . . . . . . . 106
¦CONTENTS vii
DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Creating and Altering DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Dropping DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Enabling and Disabling DDL Triggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Enumerating DDL Triggers Using Catalog Views . . . . . . . . . . . . . . . . . . . 109
Programming DDL Triggers with the eventdata() Function . . . . . . . . . . . 110
Indexing and Performance Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Online Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Controlling Locking During Index Creation . . . . . . . . . . . . . . . . . . . . . . . . 113
Creating Indexes with Additional Columns Included. . . . . . . . . . . . . . . . . 113
Altering Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Using Statistics for Correlated DATETIME Columns . . . . . . . . . . . . . . . . . 117
Improving Performance of Ordering for Tertiary Collations . . . . . . . . . . . 118
Table and Index Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Partition Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Partition Schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Creating Partitioned Tables and Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Adding and Removing Partitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Modifying Partition Functions and Schemes . . . . . . . . . . . . . . . . . . . . . . . 123
Switching Tables into and out of Partitions . . . . . . . . . . . . . . . . . . . . . . . . 124
Managing Table and Index Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Enhancements to Tables and Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Enhancements to Indexed Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Persisted Computed Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
SNAPSHOT Isolation Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Database Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Data Integrity Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Verifying a Database’s Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Putting a Database into an Emergency State . . . . . . . . . . . . . . . . . . . . . . 132
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
¦CHAPTER 5 .NET Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Introduction to SQL Server .NET Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Why Does SQL Server 2005 Host the CLR?. . . . . . . . . . . . . . . . . . . . . . . . 136
When to Use CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
When Not to Use CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
How SQL Server Hosts .NET: An Architectural Overview . . . . . . . . . . . . . 137
SQL Server .NET Programming Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Enhancements to ADO.NET for SQL Server Hosting . . . . . . . . . . . . . . . . . 138
Overview of the New .NET Namespaces for SQL Server . . . . . . . . . . . . . 138
viii ¦CONTENTS
Programming a CLR Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Starting a Visual Studio 2005 SQL Server Project. . . . . . . . . . . . . . . . . . . 140
Anatomy of a Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Adding Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Defining the Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Using the SqlPipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Putting It All Together: Coding the Body of the Stored Procedure. . . . . . 148
Testing the Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Debugging the Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Throwing Exceptions in CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Deploying CLR Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
¦CHAPTER 6 Programming Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
CLR User-Defined Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Applications for User-Defined Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Adding a User-Defined Type to a SQL Server Project. . . . . . . . . . . . . . . . 162
Parts of a User-Defined Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
A Simple Example: The PhoneNumber Type . . . . . . . . . . . . . . . . . . . . . . . 167
Another Example: The StringArray Type . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Managing User-Defined Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
CLR User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Adding a User-Defined Function to a Visual Studio Project . . . . . . . . . . . 184
The Visual Studio 2005 User-Defined Function Template . . . . . . . . . . . . 184
The SqlFunction Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Scalar User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Table-Valued User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Managing CLR User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
CLR User-Defined Aggregates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Adding a User-Defined Aggregate to a SQL Server Project . . . . . . . . . . . 193
Parts of a User-Defined Aggregate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
CLR User-Defined Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Adding a CLR User-Defined Trigger to a SQL Server Project. . . . . . . . . . 200
Programming CLR Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Managing User-Defined Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Managing Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
A Note Regarding Visual Studio 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
¦CONTENTS ix
¦CHAPTER 7 SQL Server and XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
What Is XML? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
What Are XPath and the XMLDOM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
XPath Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
XPath Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
The XMLDOM–XML Document Object Model . . . . . . . . . . . . . . . . . . . . . . 211
The XPathDocument, XPathNavigator, and
XPathExpression Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Getting XML into the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
What Is SQLXML? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Configuring SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
OPENXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
SQLXML: XML Views Using Annotated XML Schemas . . . . . . . . . . . . . . . 220
SQLXML Updategrams. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
XML BulkLoad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Getting XML Out of the Database: FOR XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
FOR XML (Server-Side) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
FOR XML (Client-Side) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Using Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Enhancements to FOR XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Programming SQLXML from .NET and COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
SqlXmlCommand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
SqlXmlParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
SqlXmlAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
SqlXmlException. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Code Samples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
FOR XML: Server-Side and Client-Side . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Using an XMLTextReader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Using Parameters with SQLXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Executing XPath or SQL Queries with Templates . . . . . . . . . . . . . . . . . . . 244
Interoperating with the ADO.NET Dataset . . . . . . . . . . . . . . . . . . . . . . . . . 244
Programming Updategrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
¦CHAPTER 8 SQL Server 2005 XML and XQuery Support . . . . . . . . . . . . . . . . . . 247
Using the XML Datatype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Understanding How XML Is Stored by SQL Server . . . . . . . . . . . . . . . . . . 249
Creating XML Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Setting Permissions for Schema Creation . . . . . . . . . . . . . . . . . . . . . . . . . 254
Constraining XML Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Examining the XML Datatype Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 256
x ¦CONTENTS
Inserting Data into XML Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Using SSIS with XML Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Bulkloading XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Writing a Custom Query or Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Querying XML Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
XQuery 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Basic XML Query Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Cross-Domain Queries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Modifying XML Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Limitations of XML Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Indexing XML for Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Understanding How XML Indexing Works . . . . . . . . . . . . . . . . . . . . . . . . . 271
Examining Secondary XML Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Full-Text Search and the XML Datatype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Dynamic Management Views and XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Applications and XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
XML Web Services Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Creating an Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Using Advanced Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Monitoring Performance of XML Web Services. . . . . . . . . . . . . . . . . . . . . 285
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
¦CHAPTER 9 SQL Server 2005 Reporting Services . . . . . . . . . . . . . . . . . . . . . . . . . 287
Reporting Services Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Report Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Metadata Catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Report Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Report Manager Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Reporting Services Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Building a Basic Report with SSRS 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Launching the Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Working with Data Sources and Datasets . . . . . . . . . . . . . . . . . . . . . . . . . 293
Laying Out and Previewing the Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Working with Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Deploying Your Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Upgrading from SQL Server 2000 Reporting Services . . . . . . . . . . . . . . . . . . . 295
Licensing Changes for Reporting Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
SQL Server Management Studio Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Walkthrough: Management Studio and Reporting Services. . . . . . . . . . . 298
Management Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
WMI Provider. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Management and Execution Web Services . . . . . . . . . . . . . . . . . . . . . . . . 307
Reporting Services Configuration Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
¦CONTENTS xi
Report Design and Execution Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Expression Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Multivalued Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
DatePicker for Date Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Interactive Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Analysis Services Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Walkthrough: Building a Report in BIDS. . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Floating Headers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Data Source Changes: Expressions, XML/Web Services,
SSIS, and SAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Custom Report Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Visual Studio Integration and ReportViewer Controls . . . . . . . . . . . . . . . . . . . . 329
Using WinForm Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Working with the ReportViewer Controls Programmatically . . . . . . . . . . 332
LocalReport and ServerReport Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
SharePoint Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
End-User Ad Hoc Query and Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
The Report Builder Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
The Semantic Model Definition Language . . . . . . . . . . . . . . . . . . . . . . . . . 338
Walkthrough: Report Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
¦CHAPTER 10 Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
SSAS 2005 Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Performance, Scalability, Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Usability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
What Is Analysis? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
OLAP, OLTP, and Data Warehouses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
OLAP Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Cubes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Measures and Fact Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Dimensions and Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Analysis Services Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Defining Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Designers vs. Wizards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Defining Data Source Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Defining Cubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Deploying Projects and Configuring Projects for Deployment . . . . . . . . . 367
Cube Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
xii ¦CONTENTS
Browsing Cubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Browsing Cubes with Hierarchies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Managing Displayed Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Calculations and MDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Key Performance Indicators (KPIs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Analysis Services Scripting Language (ASSL) . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Example ASSL Object: A Data Source View with a Named Query. . . . . . 382
ASSL Drilldown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
¦CHAPTER 11 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
A Word about sa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Surface Area Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Remote Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Dedicated Administrator Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
.NET Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Database Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
SQLMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Service Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
HTTP Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Database Mirroring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Web Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
xp_cmdshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Ad Hoc Remote Queries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
OLE Automation XPs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
SMO and DMO XPs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Principals and Securables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Principals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Securables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Types of Permission. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Managing Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Code Access Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Imperative and Declarative CAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Using CAS with SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
The SQL Server 2005 Encryption Hierarchy . . . . . . . . . . . . . . . . . . . . . . . 411
Encryption with a User-supplied Password . . . . . . . . . . . . . . . . . . . . . . . . 411
Encryption with a Symmetric Key. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Asymmetric Key Encryption. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Encryption with a Certificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Certificates and Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
¦CONTENTS xiii
¦CHAPTER 12 Service Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
What Is Service Broker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Service Broker Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Service Broker Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Creating Service Broker Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Enabling Service Broker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Creating Message Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Creating Contracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Creating Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Creating Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Creating Service Broker Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . 425
A Simple Service Broker Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Service Broker Routing and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Creating Distributed Service Broker Applications . . . . . . . . . . . . . . . . . . . 434
Distributed Service Broker Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
¦CHAPTER 13 Automation and Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
SQL Server Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Step 1: Connect to SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Step 2: Create the Agent Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Security Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Agent Subsytems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Sharing Job Schedules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Logging to the sysjobstepslogs Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
WMI Events and Agent Alerts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Agent Performance Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Agent Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Maintenance Plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Creating a Maintenance Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Maintenance Plan Designer Document Window . . . . . . . . . . . . . . . . . . . . 483
SQLCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Connecting to SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Passing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Using the Dedicated Admin Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Creating Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Database Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Configuring Database Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Sending Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
xiv ¦CONTENTS
SQL Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Performance Monitor Correlation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
ShowPlan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Deadlock Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
¦CHAPTER 14 Integration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
What’s New in SSIS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
SSIS’s New IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Connecting to SSIS in Management Studio . . . . . . . . . . . . . . . . . . . . . . . . 509
Creating a New SSIS Project in BIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
SSIS Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Control Flow Design Surface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Data Flow Design Surface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Event Handlers Design Surface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Package Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
Connection Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Solution Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Properties Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Control Flow Toolbox Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Analysis Services Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Data Flow Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Execute Package Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Bulk Insert Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Execute SQL Task. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Execute Process Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
File System Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
File Transfer Protocol Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Maintenance Plan Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Message Queue Task. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Send Mail Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Scripting Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Web Service Task. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
WMI Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
XML Task. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Data Flow Designer Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Source Adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Destination Adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
¦CONTENTS xv
Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Using the Package Configuration Organizer . . . . . . . . . . . . . . . . . . . . . . . 554
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Precedence Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Checkpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Control Flow Visual Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Data Flow Visual Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Data Viewers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Breakpoints Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Other Debug Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
The SSIS Package Deployment Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Migrating SQL Server 2000 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Scheduling an SSIS Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
¦CHAPTER 15 Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
High Availability Defined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Database Mirroring Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Database Mirroring in Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Setting Up Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Prerequisites, Connectivity, and Security . . . . . . . . . . . . . . . . . . . . . . . . . 573
Back Up and Restore the Principal Database . . . . . . . . . . . . . . . . . . . . . . 576
Establish the Principal/Mirror Partnership . . . . . . . . . . . . . . . . . . . . . . . . . 577
Changing Transaction Safety Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Database Mirroring States, Heartbeats, and Quorums . . . . . . . . . . . . . . 578
Initiating a Failover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Suspending and Resuming Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Terminating Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Full-Text Indexing and Mirroring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Service Broker and Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Setting Up Mirroring Using Management Studio. . . . . . . . . . . . . . . . . . . . 581
Client Applications and Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Monitoring Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Catalog Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Performance Monitor Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Windows Event Log and SQL Server Error Log . . . . . . . . . . . . . . . . . . . . . 593
Performance Considerations for Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Limitations of Database Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Sample Application Walk-Through . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
xvi ¦CONTENTS
Database Snapshots and Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Database Snapshots Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Working with Snapshots in T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Performance Considerations When Using Snapshots on Mirrors . . . . . . 604
Using, Monitoring, and Managing Database Snapshots. . . . . . . . . . . . . . 604
Programming Database Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Limitations of Database Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Windows Clustering in SQL Server 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Replication in SQL Server 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
¦CHAPTER 16 Notification Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Notification Services Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Subscribers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Subscriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Building a Notification Services Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Defining an NS Instance: The Instance Configuration File . . . . . . . . . . . . 613
Defining the NS Application: The Application Definition File . . . . . . . . . . 617
Compiling and Running Your NS Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
Monitoring and Troubleshooting Your NS Application . . . . . . . . . . . . . . . . . . . . 636
Programmatically Working with NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Programming NS from Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Managing NS Programmatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643

Цена: 200руб.

Назад

Заказ

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