You are previewing Programming Microsoft® SQL Server™ 2008.
O'Reilly logo
Programming Microsoft® SQL Server™ 2008

Book Description

Extend your programming skills with a comprehensive study of the key features of SQL Server 2008. Delve into the new core capabilities, get practical guidance from expert developers, and put their code samples to work. This is a must-read for Microsoft .NET and SQL Server developers who work with data access—at the database, business logic, or presentation levels.

Discover how to:

  • Query complex data with powerful Transact-SQL enhancements

  • Use new, non-relational features: hierarchical tables, native file streaming, and geospatial capabilities

  • Exploit XML inside the database to design XML-aware applications

  • Consume and deliver your data using Microsoft LINQ, Entity Framework, and data binding

  • Implement database-level encryption and server auditing

  • Build and maintain data warehouses

  • Use Microsoft Excel to build front ends for OLAP cubes, and MDX to query them

  • Integrate data mining into applications quickly and effectively.

  • Get code samples on the Web.

    Table of Contents

    1. Programming Microsoft® SQL Server™ 2008
      1. SPECIAL OFFER: Upgrade this ebook with O’Reilly
      2. Acknowledgments
      3. Introduction
        1. Who This Book Is For
        2. How This Book Is Organized
        3. Code Samples and the Book’s Companion Web Site
          1. Using the Sample Northwind Database
          2. Using the Sample AdventureWorks2008 Databases
        4. System Requirements
        5. Support for This Book
          1. Questions and Comments
      4. I. Core Fundamentals
        1. 1. Overview
          1. Just How Big Is It?
          2. A Book for Developers
          3. A Book by Developers
          4. A Book to Show You the Way
            1. Core Technologies
            2. Beyond Relational
            3. Reaching Out
            4. Business Intelligence Strategies
          5. Summary
        2. 2. T-SQL Enhancements
          1. Common Table Expressions
            1. Creating Recursive Queries with CTEs
          2. The PIVOT and UNPIVOT Operators
            1. Using UNPIVOT
            2. Dynamically Pivoting Columns
            3. The APPLY Operator
          3. TOP Enhancements
          4. Ranking Functions
            1. The ROW_NUMBER Function
              1. ORDER BY Options
              2. Grouping and Filtering with ROW_NUMBER
            2. The RANK Function
            3. The DENSE_RANK and NTILE Functions
            4. Using All the Ranking Functions Together
            5. Ranking over Groups Using PARTITION BY
          5. Exception Handling in Transactions
          6. The varchar(max) Data Type
          7. The WAITFOR Statement
          8. DDL Triggers
          9. SNAPSHOT Isolation
          10. Table-Valued Parameters
            1. More than Just Another Temporary Table Solution
            2. Working with a Multiple-Row Set
            3. Using TVPs for Bulk Inserts and Updates
            4. Working with a Single Row of Data
            5. Creating Dictionary-Style TVPs
            6. Passing TVPs Using ADO.NET
            7. TVP Limitations
          11. New Date and Time Data Types
            1. Separation of Dates and Times
            2. More Portable Dates and Times
            3. Time Zone Awareness
            4. Date and Time Accuracy, Storage, and Format
            5. New and Changed Functions
          12. The MERGE Statement
            1. Defining the Merge Source and Target
            2. The WHEN MATCHED Clause
            3. The WHEN NOT MATCHED BY TARGET Clause
            4. Using MERGE for Table Replication
            5. The WHEN NOT MATCHED BY SOURCE Clause
            6. MERGE Output
            7. Choosing a Join Method
            8. MERGE DML Behavior
            9. Doing the "Upsert"
          13. The INSERT OVER DML Syntax
            1. Extending OUTPUT...INTO
            2. Consuming CHANGES
          14. The GROUPING SETS Operator
            1. Rolling Up by Level
            2. Rolling Up All Level Combinations
            3. Returning Just the Top Level
            4. Mixing and Matching
            5. Handling NULL Values
          15. New T-SQL Shorthand Syntax
          16. Summary
        3. 3. Exploring SQL CLR
          1. Getting Started: Enabling CLR Integration
          2. Visual Studio/SQL Server Integration
            1. SQL Server Projects in Visual Studio
            2. Automated Deployment
            3. SQL CLR Code Attributes
          3. Your First SQL CLR Stored Procedure
          4. CLR Stored Procedures and Server-Side Data Access
            1. Piping Data with SqlDataRecord and SqlMetaData
          5. Deployment
            1. Deploying Your Assembly
            2. Deploying Your Stored Procedures
            3. Testing Your Stored Procedures
          6. CLR Functions
          7. CLR Triggers
          8. CLR Aggregates
          9. SQL CLR Types
          10. Security
          11. Examining and Managing SQL CLR Types in a Database
          12. Best Practices for SQL CLR Usage
          13. Summary
        4. 4. Server Management
          1. What Is SMO?
            1. What About SQL-DMO?
            2. Latest Features in SMO
          2. Working with SMO in Microsoft Visual Studio
            1. Iterating Through Available Servers
            2. Retrieving Server Settings
            3. Creating Backup-and-Restore Applications
              1. Backup
              2. Progress Meter
              3. Log Backup
              4. Verify
              5. Restore
              6. Restoring to a Different Location
            4. Performing Programmatic DBCC Functions with SMO
          3. Policy-Based Management
            1. A Simple Policy
          4. Summary
        5. 5. Security in SQL Server 2008
          1. Four Themes of the Security Framework
            1. Secure by Design
            2. Secure by Default
            3. Secure by Deployment
            4. Secure Communications
          2. SQL Server 2008 Security Overview
            1. SQL Server Logins
            2. Database Users
            3. The guest User Account
          3. Authentication and Authorization
            1. How Clients Establish a Connection
            2. Password Policies
            3. User-Schema Separation
            4. Execution Context
          4. Encryption Support in SQL Server
            1. Encrypting Data on the Move
            2. Encrypting Data at Rest
          5. Transparent Data Encryption in SQL Server 2008
            1. Creating Keys and Certificates
            2. Enabling TDE
            3. Querying TDE Views
            4. Backing Up the Certificate
            5. Restoring an Encrypted Database
          6. SQL Server Audit
            1. Creating an Audit Object
            2. Auditing Options
              1. QUEUE_DELAY
              2. ON_FAILURE
              3. AUDIT_GUID
              4. STATE
            3. Recording Audits to the File System
              1. FILEPATH
              2. MAXSIZE
              3. MAX_ROLLOVER_FILES
              4. RESERVE_DISK_SPACE
            4. Recording Audits to the Windows Event Log
            5. Auditing Server Events
            6. Auditing Database Events
            7. Viewing Audited Events
            8. Querying Audit Catalog Views
          7. How Hackers Attack SQL Server
            1. Direct Connection to the Internet
            2. Weak System Administrator Account Passwords
            3. SQL Server Browser Service
            4. SQL Injection
            5. Intelligent Observation
          8. Summary
      5. II. Beyond Relational
        1. 6. XML and the Relational Database
          1. XML in SQL Server 2000
          2. XML in SQL Server 2008—the xml Data Type
            1. Working with the xml Data Type as a Variable
            2. Working with XML in Tables
              1. Defaults and Constraints
            3. XML Schemas
              1. SQL Server Schema Collections
              2. xsd:dateTime Enhancements
              3. Lax Validation
              4. Union and List Types
            4. XML Indexes
          3. FOR XML Commands
            1. FOR XML RAW
            2. FOR XML AUTO
            3. FOR XML EXPLICIT
            4. FOR XML Enhancements
              1. The TYPE Option
              2. FOR XML PATH
              3. Specifying a ROOT Element
              4. Producing an Inline XSD Schema
              5. Producing Element-Based XML
            5. OPENXML Enhancements in SQL Server 2008
            6. XML Bulk Load
          4. Querying XML Data Using XQuery
            1. Understanding XQuery Expressions and XPath
              1. XPath Expressions
              2. FLWOR Expressions
            2. SQL Server 2008 XQuery in Action
              1. xml.exist
              2. xml.value
              3. xml.query
              4. xml.nodes
            3. SQL Server XQuery Extensions
              1. sql:column
              2. sql:variable
            4. XML DML
              1. xml.modify(insert)
              2. xml.modify(delete)
              3. xml.modify(replace)
            5. Converting a Column to XML
          5. Summary
        2. 7. Hierarchical Data and the Relational Database
          1. The hierarchyid Data Type
          2. Creating a Hierarchical Table
            1. The GetLevel Method
          3. Populating the Hierarchy
            1. The GetRoot Method
            2. The GetDescendant Method
            3. The ToString Method
            4. The GetAncestor Method
          4. Hierarchical Table Indexing Strategies
            1. Depth-First Indexing
            2. Breadth-First Indexing
          5. Querying Hierarchical Tables
            1. The IsDescendantOf Method
          6. Reordering Nodes Within the Hierarchy
            1. The GetReparentedValue Method
            2. Transplanting Subtrees
          7. More hierarchyid Methods
          8. Summary
        3. 8. Using FILESTREAM for Unstructured Data Storage
          1. BLOBs in the Database
          2. BLOBs in the File System
          3. What’s in an Attribute?
          4. Enabling FILESTREAM
            1. Enabling FILESTREAM for the Machine
            2. Enabling FILESTREAM for the Server Instance
            3. Creating a FILESTREAM-Enabled Database
            4. Creating a Table with FILESTREAM Columns
          5. The OpenSqlFilestream Native Client API
            1. File-Streaming in .NET
            2. Understanding FILESTREAM Data Access
            3. The Payoff
            4. Creating a Streaming HTTP Service
            5. Building the WPF Client
          6. Summary
        4. 9. Geospatial Data Types
          1. SQL Server 2008 Spaces Out
          2. Spatial Models
            1. Planar (Flat-Earth) Model
            2. Geodetic (Round-Earth) Model
          3. Spatial Data Types
          4. Defining Space with Well-Known Text
          5. Working with geometry
            1. The Parse Method
            2. The STIntersects Method
            3. The ToString Method
            4. The STIntersection Method
            5. The STDimension Method
          6. Working with geography
            1. On Your Mark ...
            2. The STArea and STLength Methods
            3. Spatial Reference IDs
            4. Building Out the EventLibrary Database
            5. Creating the Event Media Client Application
            6. The STDistance Method
            7. Integrating geography with Microsoft Virtual Earth
          7. Summary
      6. III. Reach Technologies
        1. 10. The Microsoft Data Access Machine
          1. ADO.NET and Typed DataSets
            1. Typed DataSet Basics
              1. Using the DataSet Designer
            2. TableAdapter Objects
            3. Connection String Management
            4. Using the TableAdapter Configuration Wizard
            5. More on Queries and Parameters
            6. DBDirect Methods and Connected Use of Typed DataSet Objects
          2. "Pure" ADO.NET: Working in Code
            1. Querying 101
              1. Coding Against an Untyped DataSet
              2. Coding Against a Typed DataSet
              3. Coding with a Connected DataReader
              4. Adding Validation Logic to a Typed DataSet
          3. LINQ: A New Syntactic Approach to Data Access
            1. LINQ to DataSet
            2. LINQ Syntax, Deconstructed
          4. LINQ to SQL and the ADO.NET Entity Framework: ORM Comes to .NET
            1. Why Not Stick with ADO.NET?
            2. Building an L2S Model
              1. Examining the Model
              2. Hooking Up to Stored Procedures
            3. The Entity Framework: Doing ORM the ADO.NET Way
              1. Examining the EF Model
              2. Property Mapping and Stored Procedure Configuration
            4. XML Behind the Scenes
            5. Querying the L2S and EF Models
            6. Adding Custom Validation Code
          5. Web Services for Data: Using ADO.NET Data Services Against EF Models
            1. Creating the Service
            2. Testing the Service
            3. Building the User Interface
          6. Data as a Hosted Service: SQL Server Data Services
          7. Summary: So Many Tools, So Little Time
        2. 11. The Many Facets of .NET Data Binding
          1. Windows Forms Data Binding: The Gold Standard
            1. Getting Ready
            2. Generating the UI
            3. Examining the Output
            4. Converting to LINQ to SQL
            5. Converting to Entity Framework
            6. Converting to ADO.NET Data Services
          2. Data Binding on the Web with ASP.NET
            1. L2S and EF Are Easy
            2. Beyond Mere Grids
            3. Data Binding Using Markup
            4. Using AJAX for Easy Data Access
              1. Using the UpdatePanel Control
              2. Adding AJAX Agility with the Control Toolkit
                1. Looking at Extenders
              3. Using the AJAX Client Library for ADO.NET Data Services
            5. ASP.NET Dynamic Data
          3. Data Binding for Windows Presentation Foundation
            1. Design Time Quandary
            2. Examining the XAML
          4. Grand Finale: Silverlight
          5. Summary
        3. 12. Transactions
          1. What Is a Transaction?
            1. Understanding the ACID Properties
          2. Local Transaction Support in SQL Server 2008
            1. Autocommit Transaction Mode
            2. Explicit Transaction Mode
              1. Nested Transactions
              2. Savepoints
            3. Implicit Transaction Mode
            4. Batch-Scoped Transaction Mode
              1. MARS and Transactions
              2. MARS and Savepoints
            5. Using Local Transactions in ADO.NET
          3. Transaction Terminology
          4. Isolation Levels
            1. Isolation Levels in SQL Server 2008
              1. Read Uncommitted Isolation Level
              2. Read Committed Isolation Level
              3. Repeatable Read Isolation Level
              4. Serializable Isolation Level
              5. Snapshot Isolation Level
              6. Read Committed Snapshot Isolation Level
            2. Isolation Levels in ADO.NET
          5. Distributed Transactions
            1. Distributed Transaction Terminology
              1. Resource Manager
              2. Transaction Manager or Transaction Coordinator
              3. Two-Phase Commit
            2. Rules and Methods of Enlistment
              1. Volatile Enlistment
              2. Durable Enlistment
              3. Promotable Single-Phase Enlistment
            3. Distributed Transactions in SQL Server 2008
            4. Distributed Transactions in the .NET Framework
            5. Writing Your Own Resource Manager
            6. Using a Resource Manager in a Successful Transaction
              1. Using the Resource Manager When the Caller Issues a Rollback
              2. Using the Resource Manager When It Issues a Rollback
              3. Using the Resource Manager with Another Resource Manager
          6. Transactions in SQL CLR (CLR Integration)
          7. Putting It All Together
          8. Summary
        4. 13. Developing Occasionally Connected Systems
          1. Comparing Sync Services with Merge Replication
          2. Components of an Occasionally Connected System
          3. Merge Replication
            1. Getting Familiar with Merge Replication
            2. Creating an Occasionally Connected Application with Merge Replication
            3. Configuring Merge Replication
              1. Configuring the Distribution
              2. Creating a Publication
              3. Web Synchronization for Merge Replication
              4. Configuring IIS for Web Synchronization
              5. Configuring the Subscription Database for Web Synchronization
              6. Verifying the Subscription Using Management Studio
            4. Creating a Mobile Application Using Microsoft Visual Studio 2008
              1. Setting Up the Data Source
              2. Binding SQL Server Compact Data to a Pocket PC Form
              3. Setting Control Properties
              4. Programmatic Synchronization
              5. Deploying the Mobile Application
          4. Sync Services for ADO.NET
            1. Sync Services Object Model
              1. SyncAgent and SyncStatistics
              2. SyncSession and Session Variables
              3. SyncAdapter
              4. Client and Server Providers
              5. ServerSyncProviderProxy
              6. SyncTable and SyncGroup
            2. Capturing Changes for Synchronization
              1. SQL Server 2008 Change Tracking
              2. Configuring the Server Database for Change Tracking
              3. Enabling Change Tracking on User Tables
              4. Managing Tracked Tables and Databases
              5. Disabling Change Tracking
              6. Change Tracking Functions
              7. Setting an Anchor Value
            3. Creating an Application Using Sync Services
              1. Initial Synchronization
              2. Uploading Changes
              3. Downloading Changes
              4. Detecting and Resolving Data Conflicts
              5. Putting It All Together
              6. Going N-Tier
              7. Enabling Service-Based Synchronization
            4. Additional Considerations
              1. Using the Designer to Create a Local Data Cache
              2. Building Commands Using SqlSyncAdapterBuilder
              3. Data Type Considerations
              4. Security Considerations
          5. Summary
      7. IV. Business Intelligence
        1. 14. Data Warehousing
          1. Data Warehousing Defined
          2. The Importance of Data Warehousing
          3. What Preceded Data Warehousing
            1. Lack of Integration Across the Enterprise
            2. Little or No Standardized Reference Data
            3. Lack of History
            4. Data Not Optimized for Analysis
            5. As a Result...
          4. Data Warehouse Design
            1. The Top-Down Approach of Inmon
            2. The Bottom-Up Approach of Kimball
              1. Terminology
              2. Context and the Star Schema
              3. Surrogate Keys
          5. What Data Warehousing Is Not
            1. OLAP
            2. Data Mining
            3. Business Intelligence
            4. Dashboards and Scorecards
              1. Dashboards
              2. Scorecards
            5. Performance Management
          6. Practical Advice About Data Warehousing
            1. Anticipating and Rewarding Operational Process Change
            2. Rewarding Giving Up Control
            3. A Prototype Might Not Work to Sell the Vision
            4. Surrogate Key Issues
            5. Currency Conversion Issues
            6. Events vs. Snapshots
          7. SQL Server 2008 and Data Warehousing
            1. T-SQL MERGE Statement
            2. Change Data Capture
            3. Partitioned Table Parallelism
              1. Thread Management
              2. Lock Escalation
            4. Star-Join Query Optimization
            5. SPARSE Columns
            6. Data Compression and Backup Compression
              1. Data Compression
              2. Backup Compression
            7. Learning More
          8. Summary
        2. 15. Basic OLAP
          1. Wherefore BI?
          2. OLAP 101
            1. OLAP Vocabulary
            2. Dimensions, Axes, Stars, and Snowflakes
          3. Building Your First Cube
            1. Preparing Star Schema Objects
            2. A Tool by Any Other Name
            3. Creating the Project
            4. Adding a Data Source View
            5. Creating a Cube with the Cube Wizard
            6. Using the Cube Designer
            7. Using the Dimension Wizard
            8. Using the Dimension Designer
            9. Working with the Properties Window and Solution Explorer
            10. Processing the Cube
          4. Running Queries
          5. Summary
        3. 16. Advanced OLAP
          1. What We’ll Cover in This Chapter
            1. MDX in Context
            2. And Now a Word from Our Sponsor...
          2. Advanced Dimensions and Measures
            1. Keys and Names
            2. Changing the All Member
            3. Adding a Named Query to a Data Source View
            4. Parent/Child Dimensions
            5. Member Grouping
            6. User Table Time Dimensions, Attribute Relationships, Best Practice Alerts, and Dimension/Attribute Typing
              1. User Table Time Dimensions
              2. Dimension/Attribute Typing
              3. Best Practice Alerts
              4. Attribute Relationships
          3. Server Time Dimensions
            1. Fact Dimensions
            2. Role-Playing Dimensions
            3. Advanced Measures
              1. Measure Formatting
              2. Special Aggregates
              3. Display Folders
          4. Calculations
            1. Calculated Members
              1. Complex Expressions
              2. Using Calculation Tools
              3. Deciphering the Code
            2. Named Sets
            3. More on Script View
              1. Debug Mode
              2. Back to the Browser
          5. Key Performance Indicators
            1. KPI Visualization: Status and Trend
            2. A Concrete KPI
            3. Testing KPIs in Browser View
              1. Interpreting Results and Modifying the Slicer
            4. KPI Queries in Management Studio
              1. Management Studio Does BI
              2. The MDX Query Window
            5. Other BI Tricks in Management Studio
              1. XMLA Scripts in Management Studio and Visual Studio Analysis Services Projects
          6. Actions
            1. Actions Simply Defined
            2. Designing Actions
            3. Testing Actions
          7. Partitions, Storage Settings, and Proactive Caching
            1. Editing and Creating Partitions
            2. Partition Storage Options
            3. Proactive Caching
            4. Additional Features and Tips
          8. Aggregations
            1. Algorithmic Aggregation Design
            2. Usage-Based Aggregation Design
            3. Manual Aggregation Design (and Modification)
            4. Aggregation Design Management
            5. Aggregation Design and Management Studio
          9. Perspectives
          10. Translations
          11. Roles
          12. Summary
        4. 17. OLAP Queries, Tools, and Application Development
          1. Using Excel
            1. Connecting to Analysis Services
            2. Building the PivotTable
            3. Exploring PivotTable Data
            4. Scorecards
            5. Creating and Configuring Charts
            6. In-Formula Querying of Cubes
              1. The Convert To Formulas Option
              2. Excel Does IntelliSense
              3. Table Formatting
              4. Filtering with Named Cells
            7. Visual Studio Tools for Office and Excel Add-Ins
            8. Excel Services
          2. Beyond Excel: Custom OLAP Development with .NET
            1. MDX and Analysis Services APIs
            2. Moving to MDX
            3. Management Studio as an MDX Client
              1. Rich MDX Support
                1. Making the Connection
                2. Building a Query
              2. Beyond Syntax
                1. Grasping the WHERE Clause
                2. The Power of Axes
                3. CROSSJOIN and DRILLDOWNMEMBER
              3. KPIs, Calculated Members, and Named Sets
            4. OLAP Development with ADO MD.NET
              1. Using Your ADO.NET Skills
              2. Executing MDX Queries
              3. Working with More Than Two Axes
              4. Cell References: Coordinate-Based vs. Ordinal
              5. Cracking the Metadata
                1. Getting Metadata from ADO MD.NET
                2. Schema DataSet Objects
                3. Executing Actions Using Schema DataSet Objects
            5. Using Analysis Management Objects
            6. XMLA at Your (Analysis) Service
              1. An API of Many Faces
              2. Using XMLA from SQL Server Management Studio
                1. Using <Discover> for Metadata and Status Information
                2. Using <Execute> for DDL Tasks
                3. Using <Execute> to Run MDX Queries
              3. Calling Execute Programmatically from .NET
              4. Manipulating XMLA Response Content from ADO MD.NET
            7. Analysis Services CLR Support: Server-Side ADO MD.NET
              1. Writing Managed Stored Procedure Code
              2. Loading the Assembly
              3. Calling Managed Code from MDX
              4. Debugging Server-Side Managed Code
              5. Void Functions
              6. Result Set–Returning Functions
                1. Mixing Client and Server to Return Flattened Cell Sets
          3. Summary
        5. 18. Expanding Your Business Intelligence with Data Mining
          1. Why Mine Your Data?
          2. SQL Server 2008 Data Mining Enhancements
          3. Getting Started
            1. Preparing Your Source Data
            2. Creating an Analysis Services Project
          4. Using the Data Mining Wizard and Data Mining Structure Designer
            1. Creating a Mining Structure
            2. Creating a Mining Model
            3. Editing and Adding Mining Models
              1. Editing a Mining Model
              2. Adding a Mining Model
              3. Adding a Model That Uses a Different Algorithm
              4. Changing Column Usage
              5. Mining Models and Data Types
              6. Filtering a Mining Model
            4. Deploying and Processing Data Mining Objects
            5. Viewing Mining Models
              1. Using the Cluster Viewer
                1. Cluster Diagram
                2. Cluster Profiles
                3. Cluster Characteristics
                4. Cluster Discrimination
              2. Using the Tree Viewer
                1. Decision Tree
                2. Dependency Network
              3. Using the Naïve Bayes Viewer
                1. Dependency Network
                2. Attribute Profiles, Attribute Characteristics, and Attribute Discrimination
            6. Validating and Comparing Mining Models
            7. Nested Tables
          5. Using Data Mining Extensions
            1. Data Mining Modeling Using DMX
            2. Data Mining Predictions Using DMX
            3. DMX Templates
          6. Data Mining Applied
            1. Data Mining and API Programming
            2. Using the Windows Forms Model Content Browser Controls
            3. Executing Prediction Queries with ADO MD.NET
            4. Model Content Queries
            5. ADO MD.NET and ASP.NET
            6. Using the Data Mining Web Controls
            7. Developing Managed Stored Procedures
            8. XMLA and Data Mining
            9. Data Mining Add-ins for Excel 2007
              1. Creating a Model Using the Table Analysis Tools
                1. Table Analysis Tools Add-in Data Source
                2. Establishing an Analysis Services Connection
                3. Forecasting Using the Table Analysis Tools Add-in
              2. Creating a Model Using the Data Mining Client
                1. Data Mining Client Add-in Data Sources
                2. Forecasting Using the Data Mining Client Add-in
              3. Browsing Mining Models
              4. Data Mining Documentation
          7. Summary
        6. 19. Reporting Services
          1. Using the Report Designer
            1. Creating a Basic Report
              1. Report Data Sets
              2. Adding a Data Region
              3. Previewing the Report
            2. Applying Report Formatting
              1. Adding a Page Header
              2. Using Built-in Fields (Globals)
              3. Writing Report Expressions
              4. Formatting the Data Region
            3. Adding a Report Group
              1. Specifying a Sort Order
            4. Working with Parameters
              1. Configuring Report Parameters
              2. Cascading Parameters
            5. Writing Custom Report Code
            6. Creating an OLAP Report
              1. Using the Graphical MDX Query Designer
              2. Writing MDX Queries in Text Mode
            7. Creating a Report with a Matrix Data Region
              1. Adding Subtotals and Totals
            8. Tablix Explained
              1. Adding Groups
                1. Parent and Child Groups
                2. Adjacent Groups
              2. Adding Fixed Columns and Rows
                1. Adding Inside a Group
                2. Adding Outside a Group
            9. Adding a Chart Data Region
            10. Making a Report Interactive
              1. Toggling Row Visibility
              2. Adding Report Actions
          2. Delivering Reports
            1. Deploying to the Report Server
              1. Deploying Reports Using Visual Studio 2008
              2. Using Report Manager
              3. Using the Command Line
            2. Accessing Reports Programmatically
              1. Using URl Access for Report Viewing
              2. Using the ReportViewer Controls
              3. Scripting Report Generation Using SQL Server Integration Services
          3. Administering Reporting Services
            1. Using Reporting Services Configuration Manager
              1. Accessing the Report Server Web Services
            2. Using Report Manager and Management Studio
              1. Creating Subscriptions
              2. Using Data-Driven Subscriptions
              3. Caching Reports
              4. Securing Reports
            3. Integrating with SharePoint
          4. Summary
      8. A. About the Authors
        1. Contributing Authors
      9. B. Additional Resources for Developers from Microsoft Press
        1. Visual Basic
        2. Visual C#
        3. Web Development
        4. Data Access
        5. SQL Server 2005
        6. Other Developer Topics
      10. C. More Great Developer Resources
        1. Developer Step by Step
        2. Developer Reference
        3. Focused Topics
      11. Index
      12. SPECIAL OFFER: Upgrade this ebook with O’Reilly