- 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
SQL Server has a long history, starting out in the days when the engine was licensed from Sybase. As time went by, everything was slowly re-written to the product it is today. You might be reading this article just as SQL Server is released, or by the time you read it SQL Server 2008 might have been out for years.
This “history lesson” on SQL Server is important. It’s important to watch the product grow, because the features are added (and those that are removed) show you the general direction of the product. As you decide on the technologies that fit your organization best, you need to know about where they eventually lead. This is especially important in the case of a database system, since it’s the slowest software to change in your technology inventory. The data you store is pretty much forever — if you record a sale that happened last Wednesday, that record will probably always be the same forever. The database system that stores that data serves lots of people and possibly several applications, so changing that software is difficult without affecting multiple applications and people. For those reasons, people change out their database systems very rarely. So it’s important to know at the start which features the vendor seems to be adding and subtracting from the product, since that will show you if it matches what you are going to need in the future.
For instance — SQL Server was introduced primarily to run on one server, serving multiple databases. As time went by, people began to use the “multiple instances” capabilities, server clustering was added, and then other services that use the database such as Analysis Services and Reporting Services were also put into place. All the while the features were enhanced to support more memory, higher chip architectures, and larger storage options. Clearly, Microsoft desires SQL Server to be used in larger and larger shops, all the way through enterprise installations. So if you’re looking for a small, single user database system that runs on personal computers, perhaps you should investigate using the Express or Compact editions. On the other hand, if your organization is growing, SQL Server Standard or Enterprise is probably a great choice, since it is growing in capabilities as well.
The other reason that history is important is because you might want to know how often the vendor plans to upgrade the software. Microsoft didn’t have a regular schedule for SQL Server until this version. Previously, they developed the software to include a new set of features, and when that was complete, it was sent out to a Beta and then finally released. In the case of SQL Server 2005, this took five years. Since Microsoft is a commercial enterprise with public shares, the shareholders weren’t able to figure out when SQL Server would contribute in a big way to the company’s revenues. So Microsoft has come up with a new way of guaranteeing a predictable release cycle, one they’ve standardized as every three years. What happens is that a set of features is proposed for the release, just like before. But instead of developing all of them at once, they are stacked such that the ones that can be done together as a package are started, and when those are complete they add the documentation, the installer, the testing and so on as if it were to be released that day. This is called a “Community Technical Preview” or CTP, and if perhaps ten features were ready in three years, that would be the new product. If all of the features planned made it in within three years, then that would be the release. It’s a way of satisfying both the software engineering requirements and the market demands.
Before we go on, you should know that the Reference Guide sections here at InformIT that do not have a version in the title are kept up to date for all the versions of SQL Server. If there is something specific to a version, we’ll call that out in the title. So that means you can navigate the site with confidence that even though we have articles all the way back to version 7, you have the information you need through the latest version.
Setting up SQL Server 2008
OK — what does all this company and marketing information mean to you? Well, it means that you should plan your upgrades for every three years, or perhaps to “leapfrog” one release to upgrade every six years. There are good reasons for both strategies, but the point is you should know about this interval. It will help you and your organization.
As the versions change, another thing to be aware of is how previous features and releases are handled. As a rule, SQL Server can usually restore a backup taken on the last version in the new version. In fact, you can usually do this for two revisions back, but that isn’t guaranteed. You can also “attach” and even import the last version or a database to SQL Server. This is true for SQL Server 2008. In fact, since Microsoft is aware that many of its customers are still on SQL Server 2000, you can do all that from SQL Server 2000 to 2008.
There are three ways you can get the newer version of SQL Server on your system. The first is to upgrade either SQL Server 2000 or 2005 to 2008. It will transfer all of the data, keep your settings, security, database encryption and so on to the higher version, replacing all of the files along the way. The other method is to install SQL Server on the same system as the earlier version. It will leave the old system intact, replacing only those common files that are needed by the new version. This is called a “side-by-side” installation. Finally, you can install SQL Server 2008 on a system that doesn’t have any previous versions at all. In this case, if you have any older data you can restore, attach or transfer it to the new version.
The installer in SQL Server 2008 has changed to have some “under the covers” enhancements that won’t mean anything to you directly, but it allows Microsoft to create that release cycle I explained a moment ago. But it also has a couple of other interesting features.
Now when you install, you download one set of media. The evaluation editions (which let you use them for free for a limited period of time), the Developer Edition (I explain more about the editions of SQL Server in this overview) and all of the other editions are on a single DVD, and when you enter your license code it will install the proper bits.
One difference here is SQL Server Express — that is the small, free edition from Microsoft. That one has its own download and media.
The other primary difference during the installation is the removal of the examples. They are no longer included on the media. You now get all of the examples from a site Microsoft runs called “Codeplex”. You can find that here.
For the rest of the upgrade and installation instructions, check out the links at the bottom of this article.
There are things that a developer cares more about, and things a DBA cares more about. Of course, most developers do some maintenance tasks, and most DBAs do some development tasks, so make sure you read about each no matter which camp you fall into.
Features for the Database Developer
Let’s start with the additions and enhancements SQL Server includes for the developer. I’ll do this in a chart format so that you’ll have an overview, and then in future articles and tutorials I’ll cover them in depth. I won’t cover every new feature here, but I will cover the ones I think will make the biggest difference in your programming.
What the feature affects |
Description |
Storing Data |
There are a few new types of data you can store in SQL Server, and some changes to the current ones. A new spatial data type allows you to store geographical information and retrieve it from SQL Server. You can now store dates as a date, or a time. A new “hierarchy” data type lets you store lists ordered in a hierarchy like a table of contents. A new Table data type lets you work with sets of data in one cell — sort of a “table within a table”. You can now compress tables and indexes for better storage. A new FILESTREAM feature lets you store binary data out of the database, but still controlled by the database – even the backups capture this “out of database” data. New sparse data storage makes storing ragged data more efficient. |
Programming Languages |
Transact-SQL now allows you to set a variable in the same line you DECLARE it in. w00t! There’s a new “MERGE” statement that performs statements on a table based on a join. There’s a new way to query data from SQL Server, called LINQ, although this isn’t technically a SQL Server 2008 feature, but a Visual Studio feature. New query and table hints allow more control over the plan guide for a query. You can disable lock escalation on a query. Transparent Data Encryption is a new feature that allows you to apply encryption to an entire database without changing the application. |
Change tracking |
Two new features, Change Data Capture and Change Tracking, allow you to track and migrate changes in data and structure from one system to another. A new view, sys.dm_db_persisted_sku_features, shows you which features are still available in the database in case you’re creating new functionality that you need to track in your applications. |
Service Broker |
Although Notification Services is now gone, the Service Broker steps up with new tutorials and a simplified interface for designing new SB applications. |
The Development Environment |
SQL Server Management Studio (SSMS) now includes “Intellisense” for Transact-SQL (T-SQL), which means it fills code out for you as you type. SSMS includes a T-SQL “Debugger”, which lets you walk through your code, adding breakpoints, watching variables change as the code runs, and getting the messages the code creates. |
Analysis Services |
There is a new designer for aggregations, cubes, relationships and more. The Business Information Development System (BIDS) is now based on Visual Studio 2008. Many new enhancements are in Data Mining, including changes to the time algorithms. There’s more integration with Microsoft Office for BI. |
Reporting Services |
New Report Design features include new objects such as Tablix, Chart, and Gauge data regions. |
Of course there’s more, but these are the ones that caught my eye. Let’s take a look at the improvements for managing the system.
Features for the DBA
In this release, Microsoft put a lot of time in improving the way you can manage the system. Once again, I’ll include a chart here and then we’ll dive in later.
What the feature affects |
Description |
Management |
Policy Based Management is a way to enforce a desired state on a server. In fact, this feature in part replaces the Surface Area Configuration (SAC) tool found in SQL Server 2005. |
Interfaces |
SQL Server Management Studio (SSMS) now has configurable columns in the Object Explorer Details view. SSMS includes a new “Object Search” feature that allows you to find and act on objects such as tables, views and stored procedures in one or more databases. PowerShell is a scripting environment I’ve written about quite a bit here on InformIT. SQL Server 2008 includes a new provider for PowerShell so that you can navigate and work with SQL Server as easily as with the operating system. |
Performance Tuning |
The Data Collector is an engine that can automatically collect system counters to show your server’s activity. The Management Data Warehouse is a database that can store data from one or more Data Collectors. Performance Reports are new active reports in SSMS that work over the Management Data Warehouse to find and fix performance issues quickly. The “Resource Governor” allows you to assign users a certain percentage of memory and CPU usage automatically. There are lots of new PerfMon counters for everything from Database Mirroring to replication. |
Backup and Recovery |
Backups can now be compressed on the fly. |
And, like the programming side, there’s a lot more. I’ll cover those in other tutorials.
InformIT Articles and Sample Chapters
To learn more about SQL Server in general, make sure you bookmark this page.
Books and eBooks
For even more information on SQL Server 2008, check out the Developer's Guide to Data Modeling for SQL Server, A: Covering SQL Server 2005 and 2008.
Online Resources
Before you start any installation or upgrade to SQL Server 2008, make sure you check out the official documentation for that. You’ll be glad you took the time.