- 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
In the Windows operating system, you always have the ability to see the processes that are happening on your system. All you have to do is press CTRL-ALT-DELETE or right-click in the lower task bar to see a menu where you can select the “Task Manager” for Windows. Once you’re inside, you can see the current programs that are running, the memory they are taking, the thread counts and more. You can also see a set of graphs that show you the current overall system load.
It’s important to know that this feature is in Windows, especially for the DBA. Although you’ll most often be working on a workstation, you might be able to use the Remote Desk Protocol (RDP) to get to the server to see this view. Since SQL Server runs on Windows, you should be familiar with the tools it has to see the activity on the server.
But you also have a similar tool in SQL Server itself. I’ve explained many of the system views in other tutorials that show transactions, locking and blocking information, and even information about memory. But it’s useful to be able to see all of the information on one screen, in a constantly-updated fashion. That’s where the Activity Monitor comes in.
The Activity Monitor is a tool you can use to see “immediate” or current information about your server. It does not collect historical data like the SQL Server 2008 Data Collector, but it does give you a by-the-second update on what your server is doing. Whenever I experience a performance problem in SQL Server it’s usually the second place I go — the first is the Windows Task Manager to ensure the system is not the cause of the problem.
Each of the SQL Server versions I typically cover on this site, 2000, 2005 and 2008, has this feature. And in each one it looks significantly different. I suppose the reason for that is that as time goes on, Microsoft learns more about what the audience needs to see in the current activity, and new features require a different view of the information. But in each case you’re able to get information on transactions, CPU and memory use, much (if not all) of the SQL Statements used in the query, and a lot of information on locking and blocking.
So let’s dive into each tool. I’ll show you where the Activity Monitor is (it’s moved around in the various versions), what information they show, and how to use it.
SQL Server 2000 Activity Monitor
In SQL Server 2000, you’ll find the Activity Monitor in the Enterprise Manager tool. Open, that, drill down to the name of the Instance of SQL Server you want to monitor, and then drill down into the “Management” node. You’ll see an item called “Current Activity.” Click on that and you’ll see a screen similar to this one:
In this screen I’ve selected the first of the three kinds of information this tool shows: the “Process Info.” This screen has several columns that show the transaction information from the user.
Let me interject a quick tip here — if you’re ever interested in finding out how Microsoft gets information for a screen, you can. Just open the SQL Server Profiler tool and begin a default trace before you start looking at a screen. Then open the screen you’re interested in, and jump back to the Profiler tool. Stop the trace process, and read the Transact-SQL that the screen is sending. You’ll have the entire script right there in front of you.
OK, back to the task at hand. What you’re looking at here is a set of columns that begin with a graphical column — one I wish we still had in the newer tools. The graphics show differing shades of a globe. The completely colored globe shows a process that is running or waiting on a lock. As the globe has less color, it indicates less recent activity on that SQL Process ID, or SPID.
There are lots of columns here with a lot of information about your processes. You can click the column headers once to sort the data in ascending mode, and again to sort them descending. You can also left-click each column and drag it into place to order them any way you want, and you can right-click the panel to export what you’re seeing to a text file.
I won’t cover each column and its meaning here. You can press F1 to see the column definitions, but the real reason is that most of the information isn’t interesting on its own. You need context to tell what the numbers mean, and in the tutorials on Performance and Troubleshooting on this site I’ll talk more about those meanings and contexts. For now, it’s important to understand where the information is and how you get to it more than what it means.
Let’s look at the next section of the SQL Server 2000 Activity Monitor. If you click in the “Locks / Process ID” you’ll see a screen similar to this one:
This shows the lock information by locks, based on the Process ID that has the lock. Once again, you’re shown a graphic, but this time, it shows the lock type. The two main icons are a yellow “can,” which means a database lock, and a “spreadsheet,” which indicates a table lock.
The third view, “Locks / Object,” is similar. It shows the database objects, such as tables and databases, and what locks they currently have. This is useful when you’re troubleshooting poor performance on a query.
In all of these views, you have the ability to right-click an object to get more information or perform tasks, depending on the object you’re on.
The information here is static, so if you want to refresh the screen, just click one node above and then back into the Activity Monitor view you were in.
SQL Server 2005 Activity Monitor
In SQL Server 2005, Microsoft “rolled forward” the same information you got in SQL Server 2000, but the Activity Monitor is in a different place. This time it’s in the SQL Server Management Studio (SSMS) tool. Open that tool, connect to an instance, and then drill down to the “Management” node. From there, you need to double-click the “Activity Monitor” object. That will bring up a screen similar to this one:
Once again, you have information displayed in columns, but this time they include the grid separators. You’re in an entirely new window instead of the same panel that you had in SQL Server 2000. This means that you can perform some other action in SQL Server Management Studio and watch the impact in the Activity Monitor.
You’re still able to sort, order and export the data just as before.
You’ll notice the icons are different for this view. Once again, you can press F1 for more help on what they mean. Gone are the globes, and in their place are a set of standard Windows icons.
There is one primary difference in this tool than in SQL Server 2000. In SQL Server 2000, when you’re looking at the columns the data isn’t changing with the activity on the server. That makes it less than useful to “watch” the system. In SQL Server 2005, there’s a small blue link off to the left called “View Refresh Settings” that will allow you to set a polling interval for the screen to refresh. That’s far more useful, although it does take a hit on the server when you do it. That’s why it’s best to turn this on when you need it, and off again when you’re done monitoring. You can also just click the “Refresh” button at the top if you like, which is what I do most of the time.
Another handy improvement is that you can filter the information you’re looking at. There’s a link to the side to do that, as well as a “filter” icon in the icon bar at the top of this view.
Yet another improvement is that the locking information is presented in the same panel. It’s the same kind of locking information you get in SQL Server 2000, although once again the icons have changed.
SQL Server 2008 Activity Monitor
In SQL Server 2008, the Activity Monitor went through a complete re-write. It is still accessed through SQL Server Management Studio, but it isn’t under the Management node any more. Now you activate it by clicking on the “stock chart” icon in the icon bar. You can also set an option in the “Options” area to have this view start up when you open SSMS:
At the top of the view is a set of four graphs, which show the CPU information from the server, waiting tasks that indicate query performance, I/O information and Batch Requests, which show the load on the server. By the way, if your CPU graph is not showing, it’s because you’re not an administrator on the Windows server and can’t view that information.
This time the columns of information are hidden within the bands you see here. If you click on a band, it will expand to show a lot of columns, with more targeted, useful information. If you click on the band again, the information will collapse. The interesting thing is that if the band is not expanded, the data is not being collected and taking a load on your server.
You have far more right-click options in this version of the Activity Monitor. You can not only see part of the query text of an operation, but the entire query placed in a query window. You can also start the SQL Server Profiler with an automatic filter on the SPID you’re right-clicking, and more.
We’ll come back and visit all these tools in future tutorials.
InformIT Articles and Sample Chapters
Once you find the query taking up the most time on your system, it’s time to tune it. You can find out how to do that here as well in this free chapter from Sams Teach Yourself SQL in 24 Hours by Ron Plew and Ryan Stephens.
Books and eBooks
When you’re ready to learn some in-depth performance tuning, check out SQL Performance Tuning. (Read in Safari Books Online)
Online Resources
The starting point for a full tutorial on SSMS is here.