- SQL Server Reference Guide
- Introduction
- SQL Server Reference Guide Overview
- Table of Contents
- Microsoft SQL Server Defined
- SQL Server Editions
- SQL Server Access
- Informit Articles and Sample Chapters
- Online Resources
- Microsoft SQL Server Features
- SQL Server Books Online
- Clustering Services
- Data Transformation Services (DTS) Overview
- Replication Services
- Database Mirroring
- Natural Language Processing (NLP)
- Analysis Services
- Microsot SQL Server Reporting Services
- XML Overview
- Notification Services for the DBA
- Full-Text Search
- SQL Server 2005 - Service Broker
- Using SQL Server as a Web Service
- SQL Server Encryption Options Overview
- SQL Server 2008 Overview
- SQL Server 2008 R2 Overview
- SQL Azure
- The Utility Control Point and Data Application Component, Part 1
- The Utility Control Point and Data Application Component, Part 2
- Microsoft SQL Server Administration
- The DBA Survival Guide: The 10 Minute SQL Server Overview
- Preparing (or Tuning) a Windows System for SQL Server, Part 1
- Preparing (or Tuning) a Windows System for SQL Server, Part 2
- Installing SQL Server
- Upgrading SQL Server
- SQL Server 2000 Management Tools
- SQL Server 2005 Management Tools
- SQL Server 2008 Management Tools
- SQL Azure Tools
- Automating Tasks with SQL Server Agent
- Run Operating System Commands in SQL Agent using PowerShell
- Automating Tasks Without SQL Server Agent
- Storage – SQL Server I/O
- Service Packs, Hotfixes and Cumulative Upgrades
- Tracking SQL Server Information with Error and Event Logs
- Change Management
- SQL Server Metadata, Part One
- SQL Server Meta-Data, Part Two
- Monitoring - SQL Server 2005 Dynamic Views and Functions
- Monitoring - Performance Monitor
- Unattended Performance Monitoring for SQL Server
- Monitoring - User-Defined Performance Counters
- Monitoring: SQL Server Activity Monitor
- SQL Server Instances
- DBCC Commands
- SQL Server and Mail
- Database Maintenance Checklist
- The Maintenance Wizard: SQL Server 2000 and Earlier
- The Maintenance Wizard: SQL Server 2005 (SP2) and Later
- The Web Assistant Wizard
- Creating Web Pages from SQL Server
- SQL Server Security
- Securing the SQL Server Platform, Part 1
- Securing the SQL Server Platform, Part 2
- SQL Server Security: Users and other Principals
- SQL Server Security – Roles
- SQL Server Security: Objects (Securables)
- Security: Using the Command Line
- SQL Server Security - Encrypting Connections
- SQL Server Security: Encrypting Data
- SQL Server Security Audit
- High Availability - SQL Server Clustering
- SQL Server Configuration, Part 1
- SQL Server Configuration, Part 2
- Database Configuration Options
- 32- vs 64-bit Computing for SQL Server
- SQL Server and Memory
- Performance Tuning: Introduction to Indexes
- Statistical Indexes
- Backup and Recovery
- Backup and Recovery Examples, Part One
- Backup and Recovery Examples, Part Two: Transferring Databases to Another System (Even Without Backups)
- SQL Profiler - Reverse Engineering An Application
- SQL Trace
- SQL Server Alerts
- Files and Filegroups
- Partitioning
- Full-Text Indexes
- Read-Only Data
- SQL Server Locks
- Monitoring Locking and Deadlocking
- Controlling Locks in SQL Server
- SQL Server Policy-Based Management, Part One
- SQL Server Policy-Based Management, Part Two
- SQL Server Policy-Based Management, Part Three
- Microsoft SQL Server Programming
- An Outline for Development
- Database
- Database Services
- Database Objects: Databases
- Database Objects: Tables
- Database Objects: Table Relationships
- Database Objects: Keys
- Database Objects: Constraints
- Database Objects: Data Types
- Database Objects: Views
- Database Objects: Stored Procedures
- Database Objects: Indexes
- Database Objects: User Defined Functions
- Database Objects: Triggers
- Database Design: Requirements, Entities, and Attributes
- Business Process Model Notation (BPMN) and the Data Professional
- Business Questions for Database Design, Part One
- Business Questions for Database Design, Part Two
- Database Design: Finalizing Requirements and Defining Relationships
- Database Design: Creating an Entity Relationship Diagram
- Database Design: The Logical ERD
- Database Design: Adjusting The Model
- Database Design: Normalizing the Model
- Creating The Physical Model
- Database Design: Changing Attributes to Columns
- Database Design: Creating The Physical Database
- Database Design Example: Curriculum Vitae
- NULLs
- The SQL Server Sample Databases
- The SQL Server Sample Databases: pubs
- The SQL Server Sample Databases: NorthWind
- The SQL Server Sample Databases: AdventureWorks
- The SQL Server Sample Databases: Adventureworks Derivatives
- UniversalDB: The Demo and Testing Database, Part 1
- UniversalDB: The Demo and Testing Database, Part 2
- UniversalDB: The Demo and Testing Database, Part 3
- UniversalDB: The Demo and Testing Database, Part 4
- Getting Started with Transact-SQL
- Transact-SQL: Data Definition Language (DDL) Basics
- Transact-SQL: Limiting Results
- Transact-SQL: More Operators
- Transact-SQL: Ordering and Aggregating Data
- Transact-SQL: Subqueries
- Transact-SQL: Joins
- Transact-SQL: Complex Joins - Building a View with Multiple JOINs
- Transact-SQL: Inserts, Updates, and Deletes
- An Introduction to the CLR in SQL Server 2005
- Design Elements Part 1: Programming Flow Overview, Code Format and Commenting your Code
- Design Elements Part 2: Controlling SQL's Scope
- Design Elements Part 3: Error Handling
- Design Elements Part 4: Variables
- Design Elements Part 5: Where Does The Code Live?
- Design Elements Part 6: Math Operators and Functions
- Design Elements Part 7: Statistical Functions
- Design Elements Part 8: Summarization Statistical Algorithms
- Design Elements Part 9:Representing Data with Statistical Algorithms
- Design Elements Part 10: Interpreting the Data—Regression
- Design Elements Part 11: String Manipulation
- Design Elements Part 12: Loops
- Design Elements Part 13: Recursion
- Design Elements Part 14: Arrays
- Design Elements Part 15: Event-Driven Programming Vs. Scheduled Processes
- Design Elements Part 16: Event-Driven Programming
- Design Elements Part 17: Program Flow
- Forming Queries Part 1: Design
- Forming Queries Part 2: Query Basics
- Forming Queries Part 3: Query Optimization
- Forming Queries Part 4: SET Options
- Forming Queries Part 5: Table Optimization Hints
- Using SQL Server Templates
- Transact-SQL Unit Testing
- Index Tuning Wizard
- Unicode and SQL Server
- SQL Server Development Tools
- The SQL Server Transact-SQL Debugger
- The Transact-SQL Debugger, Part 2
- Basic Troubleshooting for Transact-SQL Code
- An Introduction to Spatial Data in SQL Server 2008
- Performance Tuning
- Performance Tuning SQL Server: Tools and Processes
- Performance Tuning SQL Server: Tools Overview
- Creating a Performance Tuning Audit - Defining Components
- Creating a Performance Tuning Audit - Evaluation Part One
- Creating a Performance Tuning Audit - Evaluation Part Two
- Creating a Performance Tuning Audit - Interpretation
- Creating a Performance Tuning Audit - Developing an Action Plan
- Understanding SQL Server Query Plans
- Performance Tuning: Implementing Indexes
- Performance Monitoring Tools: Windows 2008 (and Higher) Server Utilities, Part 1
- Performance Monitoring Tools: Windows 2008 (and Higher) Server Utilities, Part 2
- Performance Monitoring Tools: Windows System Monitor
- Performance Monitoring Tools: Logging with System Monitor
- Performance Monitoring Tools: User Defined Counters
- General Transact-SQL (T-SQL) Performance Tuning, Part 1
- General Transact-SQL (T-SQL) Performance Tuning, Part 2
- General Transact-SQL (T-SQL) Performance Tuning, Part 3
- Performance Monitoring Tools: An Introduction to SQL Profiler
- Performance Tuning: Introduction to Indexes
- Performance Monitoring Tools: SQL Server 2000 Index Tuning Wizard
- Performance Monitoring Tools: SQL Server 2005 Database Tuning Advisor
- Performance Monitoring Tools: SQL Server Management Studio Reports
- Performance Monitoring Tools: SQL Server 2008 Activity Monitor
- The SQL Server 2008 Management Data Warehouse and Data Collector
- Performance Monitoring Tools: Evaluating Wait States with PowerShell and Excel
- Practical Applications
- Choosing the Back End
- The DBA's Toolbox, Part 1
- The DBA's Toolbox, Part 2
- Scripting Solutions for SQL Server
- Building a SQL Server Lab
- Using Graphics Files with SQL Server
- Enterprise Resource Planning
- Customer Relationship Management (CRM)
- Building a Reporting Data Server
- Building a Database Documenter, Part 1
- Building a Database Documenter, Part 2
- Data Management Objects
- Data Management Objects: The Server Object
- Data Management Objects: Server Object Methods
- Data Management Objects: Collections and the Database Object
- Data Management Objects: Database Information
- Data Management Objects: Database Control
- Data Management Objects: Database Maintenance
- Data Management Objects: Logging the Process
- Data Management Objects: Running SQL Statements
- Data Management Objects: Multiple Row Returns
- Data Management Objects: Other Database Objects
- Data Management Objects: Security
- Data Management Objects: Scripting
- Powershell and SQL Server - Overview
- PowerShell and SQL Server - Objects and Providers
- Powershell and SQL Server - A Script Framework
- Powershell and SQL Server - Logging the Process
- Powershell and SQL Server - Reading a Control File
- Powershell and SQL Server - SQL Server Access
- Powershell and SQL Server - Web Pages from a SQL Query
- Powershell and SQL Server - Scrubbing the Event Logs
- SQL Server 2008 PowerShell Provider
- SQL Server I/O: Importing and Exporting Data
- SQL Server I/O: XML in Database Terms
- SQL Server I/O: Creating XML Output
- SQL Server I/O: Reading XML Documents
- SQL Server I/O: Using XML Control Mechanisms
- SQL Server I/O: Creating Hierarchies
- SQL Server I/O: Using HTTP with SQL Server XML
- SQL Server I/O: Using HTTP with SQL Server XML Templates
- SQL Server I/O: Remote Queries
- SQL Server I/O: Working with Text Files
- Using Microsoft SQL Server on Handheld Devices
- Front-Ends 101: Microsoft Access
- Comparing Two SQL Server Databases
- English Query - Part 1
- English Query - Part 2
- English Query - Part 3
- English Query - Part 4
- English Query - Part 5
- RSS Feeds from SQL Server
- Using SQL Server Agent to Monitor Backups
- Reporting Services - Creating a Maintenance Report
- SQL Server Chargeback Strategies, Part 1
- SQL Server Chargeback Strategies, Part 2
- SQL Server Replication Example
- Creating a Master Agent and Alert Server
- The SQL Server Central Management System: Definition
- The SQL Server Central Management System: Base Tables
- The SQL Server Central Management System: Execution of Server Information (Part 1)
- The SQL Server Central Management System: Execution of Server Information (Part 2)
- The SQL Server Central Management System: Collecting Performance Metrics
- The SQL Server Central Management System: Centralizing Agent Jobs, Events and Scripts
- The SQL Server Central Management System: Reporting the Data and Project Summary
- Time Tracking for SQL Server Operations
- Migrating Departmental Data Stores to SQL Server
- Migrating Departmental Data Stores to SQL Server: Model the System
- Migrating Departmental Data Stores to SQL Server: Model the System, Continued
- Migrating Departmental Data Stores to SQL Server: Decide on the Destination
- Migrating Departmental Data Stores to SQL Server: Design the ETL
- Migrating Departmental Data Stores to SQL Server: Design the ETL, Continued
- Migrating Departmental Data Stores to SQL Server: Attach the Front End, Test, and Monitor
- Tracking SQL Server Timed Events, Part 1
- Tracking SQL Server Timed Events, Part 2
- Patterns and Practices for the Data Professional
- Managing Vendor Databases
- Consolidation Options
- Connecting to a SQL Azure Database from Microsoft Access
- SharePoint 2007 and SQL Server, Part One
- SharePoint 2007 and SQL Server, Part Two
- SharePoint 2007 and SQL Server, Part Three
- Querying Multiple Data Sources from a Single Location (Distributed Queries)
- Importing and Exporting Data for SQL Azure
- Working on Distributed Teams
- Professional Development
- Becoming a DBA
- Certification
- DBA Levels
- Becoming a Data Professional
- SQL Server Professional Development Plan, Part 1
- SQL Server Professional Development Plan, Part 2
- SQL Server Professional Development Plan, Part 3
- Evaluating Technical Options
- System Sizing
- Creating a Disaster Recovery Plan
- Anatomy of a Disaster (Response Plan)
- Database Troubleshooting
- Conducting an Effective Code Review
- Developing an Exit Strategy
- Data Retention Strategy
- Keeping Your DBA/Developer Job in Troubled Times
- The SQL Server Runbook
- Creating and Maintaining a SQL Server Configuration History, Part 1
- Creating and Maintaining a SQL Server Configuration History, Part 2
- Creating an Application Profile, Part 1
- Creating an Application Profile, Part 2
- How to Attend a Technical Conference
- Tips for Maximizing Your IT Budget This Year
- The Importance of Blue-Sky Planning
- Application Architecture Assessments
- Transact-SQL Code Reviews, Part One
- Transact-SQL Code Reviews, Part Two
- Cloud Computing (Distributed Computing) Paradigms
- NoSQL for the SQL Server Professional, Part One
- NoSQL for the SQL Server Professional, Part Two
- Object-Role Modeling (ORM) for the Database Professional
- Business Intelligence
- BI Explained
- Developing a Data Dictionary
- BI Security
- Gathering BI Requirements
- Source System Extracts and Transforms
- ETL Mechanisms
- Business Intelligence Landscapes
- Business Intelligence Layouts and the Build or Buy Decision
- A Single Version of the Truth
- The Operational Data Store (ODS)
- Data Marts – Combining and Transforming Data
- Designing Data Elements
- The Enterprise Data Warehouse — Aggregations and the Star Schema
- On-Line Analytical Processing (OLAP)
- Data Mining
- Key Performance Indicators
- BI Presentation - Client Tools
- BI Presentation - Portals
- Implementing ETL - Introduction to SQL Server 2005 Integration Services
- Building a Business Intelligence Solution, Part 1
- Building a Business Intelligence Solution, Part 2
- Building a Business Intelligence Solution, Part 3
- Tips and Troubleshooting
- SQL Server and Microsoft Excel Integration
- Tips for the SQL Server Tools: SQL Server 2000
- Tips for the SQL Server Tools – SQL Server 2005
- Transaction Log Troubles
- SQL Server Connection Problems
- Orphaned Database Users
- Additional Resources
- Tools and Downloads
- Utilities (Free)
- Tool Review (Free): DBDesignerFork
- Aqua Data Studio
- Microsoft SQL Server Best Practices Analyzer
- Utilities (Cost)
- Quest Software's TOAD for SQL Server
- Quest Software's Spotlight on SQL Server
- SQL Server on Microsoft's Virtual PC
- Red Gate SQL Bundle
- Microsoft's Visio for Database Folks
- Quest Capacity Manager
- SQL Server Help
- Visual Studio Team Edition for Database Professionals
- Microsoft Assessment and Planning Solution Accelerator
- Aggregating Server Data from the MAPS Tool
I normally wait until a product is already shipping to write about it here on InformIT. I’m a strong proponent of downloading the beta and Customer Technical Preview (CTP) versions of the product, including (and especially) Books Online, so that you can find out what is in a new release and how it can help you solve problems. But I don’t write about them until they are “live” because this site is intended to be a practical, real-world reflection of your shop, and what you can use for production systems.
It seems SQL Server 2008 just came out but it was actually more than a couple of years ago (as of this writing). Microsoft has announced that they plan for a roughly three-year cycle of releases, so this one is a bit “out of phase," if you will. Not only that, it’s not named “SQL Server 2010," the date it was released. Consider also that this is an “R2” release something that Microsoft has never done with SQL Server and this adds up to an interesting release choice altogether. What precipitated this release, and does it change enough to warrant an upgrade? In this overview I’ll explain the new features and you can decide what works for you.
Background on the Release
You might think that with the name “R2” that this release is sort of a big Service Pack or feature add-on, but that’s incorrect. While fixes from SQL Server 2008 that you’ll find in a subsequent Service Pack for SQL Server 2008 are most likely in SQL Server 2008 R2, it’s not meant as a “fix” for things in SQL Server 2008. And it also isn’t a release that has things that just didn’t make it under the scheduling wire in SQL Server 2008.
No, the truth is a bit less sinister than that. SQL Server 2008 R2 represents a huge feature change and feature addition set based on the new Business Intelligence features in Microsoft Office 2010, and the release of SharePoint that came out at the same time. SQL Server 2008 R2 contains enhanced BI features, as well as other new features, that integrate into those products. But it isn’t a complete re-write of the database engine or other features, so that’s why it was a) released in 2010 and b) has an “R2” after the name.
While the BI features in SQL Server 2008 R2 are the primary reason for its release, there are other features in the product that warrant a look even if BI isn’t on your radar. I’ll cover a few of those below.
One thing that is important to note is that there is a new database “SKU” or Edition – it’s called “Datacenter”. This is the highest-level of database server that Microsoft offers, and it contains features (such as unlimited Virtual Machine licenses) that were previously offered in the Enterprise Edition of earlier versions. I don’t cover licensing on this site, but it probably makes sense to take a look at the matrix of features and licensing at the end of this article to make sure you understand what restrictions and benefits each Edition offers, so that you can make the right choice for your organization.
On the subject of Editions, SQL Server 2008 R2 Express has an increased database size, from 10GB to 50GB, reflecting today’s larger data sizes.
Changed Features in SQL Server 2008 R2
I’ll start by separating out features that are introduced in the new version rom the changes to the existing features and functionalities already in the product. In SQL Server 2008 R2 there are no major changes to the features found in SQL Server 2008. There is a slight difference in the locking mechanism for the database engine, but there are no new hints, settings or switches to take advantage of it for most things, they just run with the enhancements. I’ll mention some of these “under the covers” changes throughout this article.
What has changed from the previous release is the way that SQL Server is licensed, which of course means how you pay for it. Licensing is never an easy discussion, since the answers always come back to “it depends," but one of the major changes that you’ll see is that the Enterprise Edition is no longer the “highest” end edition. The Datacenter edition I mentioned a moment ago has unlimited amounts of memory, CPU and other specifications, and it is also licensed by processor. Without going into too much detail of the licensing world, it’s important for the data professional to know that there are two basic models for licensing SQL Server (as of this writing): Server/CAL, and Processor.
In Server/CAL, you pay for a copy of SQL Server to run on your server. At that point, no one is legally able to log in. Then you purchase a “Client Access License” or CAL, for each “seat” or user you want to log in. This is useful in the case where you have a single user that will hit multiple SQL Server systems. You can just license the servers, and then give a CAL to the user, and that same user can hit both servers. That can work out to a relatively inexpensive way to buy the product.
In “Per Processor” licensing, you buy a license for each processor you want to use on a server for SQL Server. It’s way more expensive, but gets cheaper when you have lots of users hitting that one server. You don’t have to license those users at all; since essentially the server is licensed.
So the licensing kind of boils down to this: multiple servers, one user needs access to them all: start with Server/CAL. One server, lots of users, start with Per-Processor. That’s just a rule of thumb it’s always best to get your local Microsoft team to help you sort all that out. The point here is that starting with SQL Server 2008 R2, the highest version isn’t available in Server/CAL.
New Features in SQL Server 2008 R2
With this version you get several new features, most of them aimed as I mentioned at Business Intelligence but not all. I’ll start with the ones that aren’t BI-related, and then save the BI stuff for the end.
DAC and UCP
There are two new features in SQL Server 2008 R2 that are put into place for the Database Administrator. The first is the Utility Control Point, or UCP. This is a feature that leverages the Management Data Warehouse that was put into place in SQL Server 2008. It tracks the usage, over time, of the systems you monitor with it, and will help show you where servers are “balanced” in their use of the CPU and I/O on the system. This is very helpful for Virtualized Machine (VM) technologies, where it can be difficult to track that sort of information.
The Data Application Component (DAC) complements the UCP, and is a way of “packaging up” an application (at least the database part) and ships it to another server. Once that’s done, you can track and migrate the changes from the source system to the target server. You can then track the use of the resources for the database part of the application. There are some caveats to both of these features, so I’ve detailed these features in this series of articles.
Master Data Services
The Master Data Services (or MDS) introduced in SQL Server 2008 R2 is a feature that allows you to do three things:
- Set up a database that tracks where “authoritative” data is
- Set up a web application that lets business users define what “authoritative” means
- Set up a web service for the developers to write code against that will find the “authoritative” data
This allows everyone to do the job they are good at, takes the data professional away from defining and locating business data, and makes sure that the programs the developers write are hitting the single version of the truth that everyone wants.
You can find out more about this feature here.
StreamInsight
StreamInsight is Microsoft’s entry into Complex Event Processing (CEP) technologies. They aren’t the first or the biggest in this are by far. You can read more about CEP at the end of this article, but the short answer is that it involves Events that occur at data sources like devices and sensors, web sites and even other databases (like a stock ticker) which are routed through SQL Server and then processed to do some work, and potentially on to other targets such as devices and sensors, other databases and so on.
It’s important to note that not only is StreamInsight not available for all editions, it’s fastest in the Datacenter edition. That can have a fairly big impact on how you plan to roll it out.
You can read more about StreamInsight here.
PowerPivot and the Parallel Data Warehouse
And now the BI parts. While this is the biggest part of the release, I won’t devote a ton of space to it in this overview, simply because it is really that big.
The business world loves Excel. They just do. Most BI clients are a separate program, and require the data professionals to write reports, queries and so on to satisfy the analytics that the business wants. So Microsoft decided to combine the two – basically, PowerPivot is an add-in to Microsoft Excel 2010 (not the earlier versions) that has built-in slice-and-dice operations, and formula-like queries for BI data. It also changes the memory model to handle millions of rows that’s right, millions in Excel.
This tool can hit almost any data source. But for SQL Server it’s well suited to Analysis Services. Because data is getting larger, Microsoft has released the Parallel Data Warehouse, or PDW. This is really a huge new SKU for SQL Server, with its own hardware and an entire world around it.
Add to all this that both PowerPivot and SQL Server 2008 R2 have been tooled to work with the release of SharePoint 2010. This means that a “power user” could install Excel 2010 with PowerPivot, create BI applications that hit SQL Server 2008 R2, and then “deploy” that spreadsheet to SharePoint 2010. Then users who don’t have Excel 2010 can work with those BI spreadsheets.
To really understand the new BI features, you have to see them. There are tons of demos, whitepapers, videos and more here.
Should You Upgrade to this Release?
Based on what you’ve learned here, you may decide that SQL Server 2008 R2 warrants a further look. If you’re in an earlier release, such as SQL Server 2005 or SQL Server 2000, and you’re looking to upgrade, there’s almost no reason not to upgrade to SQL Server 2008 R2, if the application that uses the database is tested to run against it. Odds are, if the application works against SQL Server 2008 then it will run just fine against R2 but the only working application (in my book) is one that is tested.
If you’re on SQL Server 2008 already, then you’ll need to evaluate whether the features and benefits you find in R2 are worth the cost and effort for the upgrade. In some cases they are, and in others they are not. It’s important to make sure that you evaluate each case carefully, and develop a plan for the upgrade, whether you plan to do a complete in-place upgrade or a staggered migration. I normally do the latter, replacing any plan for a new application with the latest version, or to add functionality such as Master Data Services or StreamInsight for a particular use-case.
InformIT Articles and Sample Chapters
I have a section on Business Intelligence and SQL Server that you can read in this SQL Server Reference Guide.
Books and eBooks
Complex Event Processing is, well, complex. There’s a good book by David Luckham that explains this area thoroughly, Power of Events, The: An Introduction to Complex Event Processing in Distributed Enterprise Systems.
Online Resources
The entire feature set launch point to understand more about SQL Server 2008 R2 is located here as are some labs and other resources you can use to learn more.