- 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
Before I describe the experience I've had with the Visual Studio Team Edition (VSTE) for Database Professionals from Microsoft, I'll spend a moment on some background. That will set the stage for my evaluation of the product.
Background
I've written extensively on InformIT about my thoughts for the programming process. Although my tutorials hold true for all development efforts, there are two caveats: they reflect the biases and knowledge level I have for the discipline, and they contain more information for database programming than say, game programming.
Of course, I'm not the only person who has a vision for software development. There are dozens of methods of arranging programming projects from the Agile to ICONIX. All of them have strengths and weaknesses. One of the best software development methods I've seen is from Microsoft. It's the best because it is used and proven by one of the largest, if not the largest, software development firms in the world, and because when you're working with SQL Server, you're working with a Microsoft program. It follows that the programming methodology they used to create the product works well with the product itself.
This method of programming Microsoft implements and recommends is called the Microsoft Solutions Framework. I won't reproduce the entirety of the methodology here, but it is important to understand it to take full advantage of VSTE for Database Professionals. I have a link at the bottom of this section for the Microsoft Solutions Framework, and I highly recommend you take a moment and read the information it points to. Microsoft is quite successful at selling software, and you can do worse than emulating how they create their products.
With that background, let's take a look at what VSTE for Database Professionals can do for you.
Purpose
Visual Studio Team Edition for Database Professionals is a project modeling tool, and optionally version control system for the database part of the development process. That process is based around the "database development lifecycle," which is a continuation of the Microsoft Solutions Framework.
You can use VSTE for Database Professionals to create, compare, edit and baseline your database schema within a development project. You can optionally put this information under source control, so that you can track changes to your database, its objects and its code just like the other code in a project. This is something that has been sorely lacking in the Microsoft development area. In the past the DBA or database developer created a database and either scripted it out or created a backup. This information was sometimes stored in the same source control as the main software project that used it or it was placed in another source control system designed for all databases. Having this separation is dangerous at best, and can be devastating at its worst.
Once your database is created, you can perform "Schema Refactoring." This has to do with changing an object's name throughout the database consistently and safely. For instance, suppose you create a database schema and embed the version or name of your product within the tables, rules or stored procedures. During the development process (or even after the code is released) you may need to change the way you've named all of your tables. This is difficult because changing them might break stored procedures that reference a table or perhaps violate a foreign key. VSTE for Database Professionals handles all the relationship complexities, and safely renames all of your objects. Not only that, it records those changes for journaling or legal requirements.
Another area that is difficult to perform is database unit testing. VSTE for Database Professionals fits seamlessly into the testing harnesses created in other Visual Studio projects and it can create very extensive unit tests for the database alone. The tests I tried were similar in complexity to other advanced testing tools I've used in the past such as Mercury LoadRunner.
VSTE for Database Professionals also has a Data Generator for unit testing. It can create an amazing array of data sets and has complex rules around what you can have inserted. In my testing I had two tables, one referencing another in a foreign-Key relationship. I had the generator create three Foreign Key entries for every Primary Key entry in the other table, since this mimics what I see on the job. This section had the knobs and switches that I played with the most.
VSTE for Database Professionals also has a Transact-SQL (T-SQL) editor, but I'm so familiar with SQL Server Management Studio I found that it wasn't quite as robust. My suspicion is that developers will feel the same way and just use the object browser in Visual Studio.
Requirements
You'll need a "normal" development system, which I define as one with around 1GB of RAM and a few hundred megabytes of drive space. Even before you load VSTE for Database Developers, you'll need to get and install a full copy of Visual Studio Team Edition or Visual Studio Professional to work, since it uses that shell to live in. That might be the biggest barrier to adoption that Microsoft will encounter in pushing this product to database professionals. If they use other languages, they likely won't have an issue with this, but if they develop using only T-SQL, they might not be willing to install one of those larger projects to use this one.
VSTE for Database Professionals, like all Visual Studio Team Editions, works with Team Foundation Server. This is where the real power for the product comes into play. By arming the database developers with the same tool as the rest of the development team, the entire project is managed using a single application. Team Foundation Server also works with Microsoft Project, so if your organization uses that make sure you surface that information to them.
VSTE for Database Professionals works with SQL Server 2000 or SQL Server 2005.
Evaluation Process
I downloaded and installed "CTP 5" which is Microsoft-speak for Customer Technical Preview, release 5. I like this new paradigm, where it isn't just a few beta-testers that will get to see and comment on the program. I noticed during the installation that the product automatically sends feedback to Microsoft. I have no problem with that, since I normally turn that option on anyway, and if it's a true "CTP," I think they have a right to the information. If you're nervous about that, use a test system to try it out on your own. The installation was a simple "Next, Next, Finish." I chose all options and took all the defaults.
I have the full-blown enterprise edition of Visual Studio on my development system, so I'm not sure if any of the features I used don't exist using one of the "lower versions" of Visual Studio.
In my first test I created a simple project where I reverse-engineered a database, made one change and saved that change to "production" (really another database on the system). I felt this would be the primary entrance to the product that most developers will have.
To start the process I opened a new project, and found a new stub in the Visual Studio environment called Database Projects. You can see that in this screenshot:
I chose the Wizard approach to get up and running quickly, and asked the Wizard to import the schema from a database. This is where I ran into the first glitch. When I created a new connection, it wouldn't populate the server names, even though the test system has the Developer Edition of SQL Server 2005 installed with all protocols enabled and the SQL Browser Service running. I had the same trouble with the database name, even after I typed in the server name manually. Once I did, the Wizard continued, but I had to take on faith that my connection was valid. Hey, it's a CTP, so some bugs are going to be there.
Once I made all my choices in the Wizard, the process ran very smoothly. It took about 8 minutes to bring in the entire Adventureworks database on my system, which has 1GB of RAM and a 60GB drive. The system created an entire copy of the Adventureworks database on my system, where I named it "Evaluation." This is the database I worked with for the rest of the process. That kind of process is common in large development shops, where each developer gets a copy of the project and "folds" his or her changes into the production database.
With that change made, I created a table in the database. Interestingly, the system displayed not the graphical representation of the table but its text. I like this because it removes an ambiguity of what is happening.
I also added a task to the project as you can see in this screenshot:
Once I completed the changes I performed a "Build and Deploy" of the changes from the Evaluation database to the Adventureworks database on my test system.
I also ran a series of data-generation tests against a simple unit test. This was the most exciting part of the process, and I didn't take screen shots because I jumped from section to section. On the Visual Studio links I have at the bottom of this review, Microsoft has a series of demonstration videos that run through the entire process. I highly recommend you download and review those.
Recommendations
VSTE for Database Professionals definitely works for Developer-DBAs in large development environments, especially if that environment is a Microsoft-centric shop with Foundation Server in place. Large environments have a necessity for this type of tool, because making changes always risks the integrity of the code. VSTE for Database Professionals helps control and track that change.
Is this tool useful for the single developer in less complex environments? It certainly won't hurt to learn and understand how this product fits into the development lifecycle, but without the collaboration benefits it isn't as useful as it could be. And if you're in a mixed environment with Open-Source tools already in place, I recommend a manual process for code tracking and changes. It just seems a bit too difficult to fit with the Eclipse framework or other OS tools to make it worth the effort.
I don't know what the pricing will be for this tool, since Microsoft hasn't released that yet. It should be in-line with other Visual Studio Team Editions, somewhere less than a thousand dollars US to purchase outright. Of course upgrades and your current licensing status with Microsoft makes a big difference.
InformIT Articles and Sample Chapters
I've put my ideas about development in this section of the Guide.
Online Resources
You can download the CTP, read the documentation and watch demonstration videos here.
The Microsoft Solutions Framework is described here.