SQL Server 2012 Upgrade Technical Reference Guide White Paper
SQL Server 2012 Upgrade Technical Reference Guide White Paper
Technical Reviewer: Erick Ellis, Sarah McDevitt, Michael Rys, Mahadevan Venkatraman,
Chaitanya Medikonduri, Robert Hutchison, Ed Katibah, Milan Stojic, RobAnn Mateja, Umachandar
Jayachandran, Jan Engelsberg, Miles Trochesset, Tobias Ternstrom, Wee Hyong Tok, Nathaniel
Scharer, Krzysztof Kozielczyk, Edward Melomed, Heidi Steen, Jack Richins, Gregory Leake, T.K.
Anand, Sanjay Nagamangalam, Daryush Laqab, Syam Kumar Nair, Joe Yong, Darmadi Komo
Summary: This technical guide takes you through the essentials for upgrading SQL
Server 2005, SQL Server 2008, and SQL Server 2008 R2 instances to SQL Server 2012.
Copyright
This document does not provide you with any legal rights to any intellectual
property in any Microsoft product. You may copy and use this document for your
internal, reference purposes.
Prepare Servers and Instances for SQL Server 2012 ....................................................................... 138
Correct Linked Server Definitions That Use SQLCMD Variables ................................................ 255
Upgrading from SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2 280
In-Place Upgrade.......................................................................................................................................... 280
Side-by-Side Upgrade ................................................................................................................................ 281
Upgrading from SSAS 2005, SSAS 2008, or SSAS 2008 R2 .................................... 339
Side-By-Side Upgrade ................................................................................................................................ 340
In-Place Upgrade.......................................................................................................................................... 340
This document takes you through the essential technical details for planning and
testing an upgrade of existing SQL Server 2005, 2008, and 2008 R2 instances to SQL
Server 2012. You will be presented with best practices for preparation, planning, pre-
upgrade tasks, and post-upgrade tasks. All the SQL Server components are covered,
each in its own chapter.
This document is a supplement to SQL Server 2012 Books Online. It is not intended to
supersede any information in SQL Server Books Online or in the Microsoft Knowledge
Base articles. The reader will notice many links to SQL Server Books Online topics and
Knowledge Base articles. In all such cases, the information in this document is included
to provide the context you need to decide whether to spend the time to read the
linked article. If there are any discrepancies between this document and a linked article,
the linked article is assumed to be more accurate.
Note: The primary focus of this document is on upgrading only to SQL Server 2012.
See the “Preparing to Upgrade” section in this chapter for information about how to
upgrade from SQL Server 2008 to SQL Server 2008 R2.
The remaining chapters in this guide provide technical detail about how to upgrade
specific SQL Server components and scenarios.
SQL Server 2012 new features and improvements fall into three categories:
Cloud on Your Terms: Enables you to create and scale business solutions fact.
To better understand the SQL Server 2012 features that make upgrading helpful, see
the SQL Server 2012 Home page
(http://www.microsoft.com/sqlserver/en/us/default.aspx).
SQL Server 2008 failover clustering has some important considerations because
Windows Server 2008 R2 was released after SQL Server 2008, and SQL Server
2008 R2 takes advantage of new Windows Server 2008 R2 failover clustering
features. For information about these new features, see the failover clustering
sections of Chapter 4, “High Availability.”
Because SQL Server 2008 and SQL Server 2008 R2 instances share many of the
same components, running them together on the same server over a long
period of time has a number of implications:
o You must update both the SQL Server 2008 and SQL Server 2008 R2
instances separately with service packs and cumulative updates.
o Installing SQL Server 2008 R2 on the same server as SQL Server 2008 will
automatically upgrade the Management Tools to the SQL Server 2008 R2
version, amounting to an automatic in-place upgrade of the Management
Tools.
o Uninstalling the SQL Server 2008 R2 instance will prompt you about
removing shared components. If you remove shared components
required by the SQL Server 2008 instance, you will be warned that doing
so may make the SQL Server 2008 instance unusable.
Preparing to Upgrade
To prepare for an upgrade, begin by collecting information about the effect of the
upgrade and the risks it might involve. When you identify the risks up front, you can
determine how to lessen and manage them throughout the upgrade process.
Upgrade Strategies
An upgrade is any kind of transition from SQL Server 2005, 2008, or 2008 R2 to SQL
Server 2012. There are two fundamental strategies for upgrading, with two main
variations in the second strategy:
In-place upgrade: Using the SQL Server 2012 Setup program to directly
upgrade an instance of SQL Server 2005, 2008, or 2008 R2. The older instance of
SQL Server is replaced.
Side-by-side upgrade: Using steps to move all or some data from an instance
of SQL Server 2005, 2008, or 2008 R2 to a separate instance of SQL Server 2012.
There are two main variations of the side-by-side upgrade strategy:
One server: The new instance exists on the same server as the target instance.
Two servers: The new instance exists on a different server than the target
instance.
In-Place Upgrade
By using an in-place upgrade strategy, the SQL Server 2012 Setup program directly
replaces an instance of SQL Server 2005, 2008, or 2008 R2 with a new instance of SQL
Note: If you want to upgrade just one database from a legacy instance of SQL
Server and not upgrade the other databases on the server, use the side-by-side
upgrade method instead of the in-place method.
Figure 1: In an in-place upgrade, SQL Server 2012 Setup replaces a legacy instance of
SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2
SQL Server 2012 Setup requires that all SQL Server components be upgraded
together. Setup will detect all the components of the instance to be upgraded
and will require that they all be upgraded immediately. In other words, you
cannot upgrade only an instance of the SQL Server 2008 R2 Database Engine
without also upgrading the Analysis Services component.
Here are the major steps that the SQL Server 2012 Setup program takes when you
perform an in-place upgrade:
1. The SQL Server 2012 Setup prerequisites—Microsoft .NET Framework 3.5 Service
Pack 1 (SP1) or a later version, SQL Server Native Client, and so on—are
installed. The legacy instance databases continue to be available.
2. Setup checks for upgrade blocking issues, a small set of issues that will
completely block an upgrade. If it finds any, Setup will list them. You must fix
them and restart the upgrade process.
4. Setup installs the required SQL Server 2012 executables and support files.
5. Setup stops the legacy SQL Server service. At this point, the legacy instance is no
longer available.
6. SQL Server 2012 updates the selected component data and objects.
7. Setup removes the legacy executables and support files in addition to the legacy
SQL Server 2000 R2 tools. Legacy SQL Server 2005/2008/2008 R2 tools are not
removed. (See Chapter 2, "Management and Development Tools," for more
information).
The new instance of SQL Server 2012 is now fully available. The legacy instance of SQL
Server has been replaced and must be reinstalled from a backup if the need arises.
Side-by-Side Upgrade
In a side-by-side upgrade, instead of directly replacing the older instance of SQL Server,
required database and component data is transferred from a legacy instance of SQL
Server 2005/2008/2008 R2 to a separate instance of SQL Server 2012. It is called a
"side-by-side" method because the new instance of SQL Server 2012 runs alongside the
legacy instance of SQL Server, either on the same server or on a different server.
There are two important options when you use the side-by-side upgrade method:
You can transfer data and components to an instance of SQL Server 2012 on the
same physical server.
Both options let you run the new instance of SQL Server 2008 R2 alongside the legacy
instance of SQL Server 2005/2008/2008 R2. Typically, after the upgraded instance is
accepted and moved into production, you can remove the older instance.
Figure 2 shows the before and after states of a side-by-side upgrade on two servers.
You can also use the side-by-side method to upgrade to SQL Server 2012 on the same
server as the legacy instance of SQL Server 2005, SQL Server 2008, or SQL Server 2008
R2. Figure 3 shows a side-by-side upgrade on the same server.
As just noted, the key point in a side-by-side upgrade is that you must manually
transfer data files and other supporting objects from the older instance of SQL Server
to the instance of SQL Server 2012. The SQL Server 2012 Setup program will not
perform this task. The objects that you must transfer include the following:
Data files
Database objects
SQL Server Analysis Services (SSAS) cubes
Configuration settings
Security settings
SQL Server Agent jobs
SQL Server Integration Services (SSIS) packages
Here are the main steps that you must perform when doing a side-by-side upgrade of
SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2 to SQL Server 2012:
A side-by-side upgrade to a new server offers the best of both worlds: You can take
advantage of a new and potentially more powerful server and platform, but the legacy
server remains as a fallback if you encounter a problem. This method could also
potentially reduce upgrade downtime by letting you have the new server and instances
tested, up, and running without affecting a current server and its workloads. You can
test and address hardware or software problems encountered in bringing the new
server online without any downtime of the legacy system. Although you would have to
find a way to export data out of the new system to go back to the old system, rolling
back to the legacy system would still be less time-consuming than a full SQL Server
reinstall and restoring the databases, which a failed in-place upgrade would require.
You cannot upgrade a SQL Server 2000 instance or database to SQL Server 2012.
For an in-place upgrade, upgrade the SQL Server 2000 instance to SQL Server
2005, SQL Server 2008, or SQL Server 2008 R2. Then apply SQL Server 2012
Setup.
Table 1 summarizes the difference between the two upgrade strategies. Be aware that
the main difference between an in-place upgrade and a side-by-side upgrade depends
on the resulting instances. An in-place upgrade replaces the old instance so that only
one instance remains.
Another way to view the differences between an in-place upgrade and a side-by-side
upgrade is to focus on how much of the legacy instance you want to upgrade. Table 2
shows how you can use the component level of the upgrade, combined with the
resulting number of instances, to determine what upgrade strategies are available for
your needs.
An in-place upgrade can be easier and faster, especially for small systems,
because data and configuration options do not have to be manually transferred
to a new server.
You must upgrade the whole instance or a major SQL Server component. For
example, you cannot directly upgrade a single database.
You must inspect the whole instance for backward-compatibility issues and
address any blocking issues before SQL Server 2012 Setup can continue.
Upgrading in place is not recommended for all SQL Server components, such as
some DTS packages. See Chapter 17, "Integration Services," for more
information about how to upgrade DTS packages.
Because the new instance of SQL Server 2012 replaces the legacy instance, you
cannot run the two instances side by side to compare them. Instead, you should
use a test environment for comparisons.
It gives more granular control over which database objects are upgraded.
The legacy database server can run alongside the new server. You can perform
test upgrades and research and resolve compatibility issues without disturbing
the production system.
The legacy database server remains available during the upgrade, although it
cannot be updated for at least the time that is required to transfer data.
Users can be moved from the legacy system in a staged manner instead of all at
the same time. Even though your system might have passed all validation and
acceptance tests, a problem could still occur. But if a problem does occur, you
will be able to roll back to the legacy system.
You must manually transfer data—as well as security, configuration settings, and
other supporting objects—to the new instance.
Synchronization of data from the legacy server to a new server will be required
to capture data modifications that occurred to the legacy system while setting
up the new system and its original copy of the data.
In-Place Upgrade
Consideration Advantages Side-by-Side Upgrade Advantages
Require the fewest Setup automatically upgrades It gives more granular control over which
hours for the upgrade data and settings in place, database objects are migrated.
deployment team to without the need for a manual
transfer of data or settings. The legacy database server can run
plan and prepare the
alongside the new server. You can perform
upgrade effort The resulting upgraded test migrations and research and resolve
instance has the same name as compatibility issues without disturbing the
the original. production system.
Require minimal DBA A junior DBA, system engineer, System recovery: If a junior DBA or anybody
skill set expertise (or no or person with similar basic who is not familiar with the upgrade process
DBA available to knowledge and adherence to has any problems, the production
implement the good IT practices can environment remains untouched. Only when
upgrade) complete upgrades without the new system is approved by Test/QA will
special scripts or manual the users be migrated to the new server.
interventions. Setup
automates the upgrade
process.
Require minimal user For small data sets, the total By controlling the steps directly, you can do
downtime end-to-end time might be much of the preparation including much of
smaller because this is the the data transfer without user downtime;
most automated upgrade some user downtime is still required to
strategy. update the instance version.
Require fastest possible The legacy instance of SQL Server is still
revert/rollback in case present at the end of the upgrade and may
issue encountered be used as a rollback option.
When you evaluate which upgrade strategy to use, consider the risk that an in-place
upgrade or side-by-side upgrade might have to be rolled back. The complexity and
effort required to roll back is an important factor in selecting which method to use.
Rolling back an in-place upgrade can be complex and time-consuming. The new data
file structures for SQL Server 2012 are incompatible with legacy instances of SQL Server
2005/2008/2008 R2. Because the new instance of SQL Server 2012 replaces the legacy
instance of SQL Server in an in-place upgrade, to roll back an upgraded instance, you
must uninstall the instance of SQL Server 2012, remove the data files and other
components, reinstall the legacy instance of SQL Server 2005/2008/2008 R2, and
restore the original data. Having a backup or image of the initial system might enable
you to shorten the time that is required to restore the original system on the server.
One option is copying the legacy data files from a backup location to the appropriate
disk volume, applying the ghost image to retrieve executables, and then applying any
scripts or components to complete the rebuild of the original system.
In a side-by-side upgrade, the new instance of SQL Server 2012 resides alongside the
legacy instance of SQL Server, either on the same server or on a different server.
Therefore, the legacy instance continues to be available for a rollback scenario.
However, after the upgraded instance of SQL Server 2012 goes into production and
starts capturing new data, there will come a point in time when enough new data has
been captured that a rollback is no longer realistic. For an in-place upgrade, if you
encounter problems after the system is in production, making adjustments or updates
to the new application would be a better option than trying a rollback. For a side-by-
side upgrade, you could use SSIS to transfer new data from the instance of SQL Server
2012 to the legacy instance of SQL Server 2005/2008/2008 R2 to bring it up-to-date.
However, this might be a difficult process, depending on the complexity of the data.
The upgrade method that is available for your specific needs depends on many factors,
including the components that you want to upgrade and the editions you want to use.
Editions. The in-place upgrade strategy does not support all paths between
editions. For example, to upgrade a SQL Server 2005 Enterprise instance to SQL
Server 2012 Standard Edition, you must perform a side-by-side upgrade because
Setup does not support an in-place upgrade path. See "Allowable Upgrade
Paths" later in this chapter for more information.
Backward Compatibility
When planning for an upgrade to SQL Server 2012, you have to understand what
features are deprecated, discontinued, or changed in the new version. Being aware of
these changes beforehand can help you prevent both performance problems and
issues related to making the application available.
Generally, SQL Server 2012 is backward compatible with SQL Server 2005/2008/20008
R2. However, you should examine some feature changes during the planning process.
The most serious backward-compatibility issues that will affect planning are those that
will block an in-place upgrade and prevent an installation of SQL Server 2012. If the
SQL Server 2012 Setup program detects these issues during an in-place upgrade, it will
exit the installation, leaving the legacy instance unchanged. The SQL Server 2012
Upgrade Advisor is the best tool for finding these kinds of blocking issues beforehand.
Chances are good that you will encounter only a few issues, if any.
In the component- and feature-specific chapters in this document, you can review the
relevant details for each of these categories. For more information, see SQL Server
Backward Compatibility (http://technet.microsoft.com/en-
us/library/cc707787(SQL.110).aspx ) in SQL Server 2012 Books Online.
Note: The most serious backward-compatibility issues that will affect your planning
are those that will block an in-place upgrade and prevent the installation of SQL
Server 2012. If the SQL Server 2012 Setup program detects these issues during an
in-place upgrade, it will exit the installation, leaving the legacy instance unchanged.
You must resolve the blocking issues to continue.
Deprecated Features
Features that are deprecated in SQL Server 2012 still operate the same as in the legacy
versions. However, they will be removed in the next version of SQL Server. Access to
these features does not necessarily have to be removed to complete an upgrade.
However, you should eventually address them because they could cause problems with
upgrades after SQL Server 2012. For more information, see Deprecated SQL Server
Features in SQL Server 2012 (http://msdn.microsoft.com/en-
SQL Server 2012 Upgrade Technical Guide 34
us/library/cc707789(v=sql.110).aspx) in SQL Server 2012 Books Online. Also see
"System Monitor—SQL Server: Deprecated Features Object" in the “Upgrade Tools”
section later in this chapter.
Note: An upgrade will not be blocked if you use deprecated features. However, it is
advised that you decide how or when you want to deal with any of these to give
yourself sufficient time to resolve the issues before they are discontinued in some
future SQL Server release.
Discontinued Features
In any component of SQL Server 2012, some features of earlier SQL Server versions
may have been discontinued. These features functioned in earlier versions of SQL
Server but were removed from SQL Server 2012. Although some references to these
features might not block an in-place upgrade, you should remove those references
anyway. If the reference is not removed, the application might not behave correctly.
Use Upgrade Advisor to detect whether your application is using discontinued features.
For more information about such features, see Discontinued SQL Server Features in
SQL Server 2012 (http://msdn.microsoft.com/en-us/library/cc707782(v=sql.110).aspx) in
SQL Server 2012 Books Online.
Breaking Changes
Breaking changes to SQL Server 2012 are those that might require changes to the
applications because the features in question now have a different behavior. If you do
not use the feature, there is no effect on you. However, if you do use the feature, your
application might be affected. The best tool for discovering this kind of issue is
Upgrade Advisor, which analyzes a legacy system and reports on all potential breaking
changes and how to address them. For more information about this kind of change, see
Breaking Changes to SQL Server Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/cc707784(v=sql.110).aspx) in SQL Server 2012
Books Online.
Behavior Changes
Behavior changes might not visibly affect your database code or applications. However,
you have to be aware of them because the interpretation might be different. For
example, the behavior of the SQL Server Native Client changes from SQL Server 2005 to
SQL Server 2012. For more information, see Behavior Changes to SQL Server Features
in SQL Server 2012 (http://msdn.microsoft.com/en-us/library/cc707785(v=sql.110).aspx)
in SQL Server 2012 Books Online.
In addition to analyzing data and database objects, Upgrade Advisor can analyze
Transact-SQL (T-SQL) scripts and SQL Server Profiler/SQL Trace traces. Upgrade Advisor
examines SQL code for syntax that is no longer valid in SQL Server 2012. It generates a
report listing the code in question, together with links to where you can find more
information to help resolve the questionable code. For information about how to
upgrade T-SQL queries, stored procedures, scripts, and application code, see Chapter
10, "Transact-SQL Queries."
The Microsoft .NET Framework 4 (the same version of the .NET Framework
included with SQL Server 2012 and Visual Studio 2010)
Note: You can run the SQL Server 2012 Upgrade Advisor only against instances of
SQL Server 2005, SQL Server 2008, and SQL Server 2008 R2. You cannot run it
against instances of SQL Server 2000 or SQL Server 7.0.
Best Practices Analyzer for SQL Server 2005, SQL Server 2008, and SQL Server
2008 R2
Before you install SQL Server 2012, you should also run the SQL Server Best Practices
Analyzer (BPA) against your current legacy instances of SQL Server. If bad or
questionable practices exist, you could address them before the upgrade, moving the
fixes through test and into production. Using best practices on the legacy SQL Server
systems first will help ensure a smoother upgrade, but that is not always possible. You
might have to change some practices during the upgrade process instead.
You can download the SQL Server 2005 version of BPA at the SQL Server 2005 Best
Practices Analyzer (August 2008) (http://www.microsoft.com/en-
us/download/details.aspx?displaylang=en&id=23864) download page.
You can download the SQL Server 2008 R2 BPA at the SQL Server 2008 R2 Best
Practices Analyzer (http://www.microsoft.com/en-us/download/details.aspx?id=15289)
download page. Use this for both SQL Server 2008 and SQL Server 2008 R2.
After you have upgraded, be sure to run the SQL Server 2012 Best Practices Analyzer
(http://www.microsoft.com/en-us/download/details.aspx?id=29302). See also "Post-
Upgrade Tasks" in this chapter.
An in-place upgrade uses SQL Server 2012 Setup to directly upgrade SQL Server
2005/2008/2008 R2. The SQL Server 2012 Setup program installs prerequisites such as
the .NET Framework and PowerShell 2.0. It also scans the destination computer for
minimum hardware and software requirements, in addition to a compatible SQL Server
The Setup SCC looks for conditions that will prevent a successful SQL Server installation
or upgrade. These checks occur before Setup starts the SQL Server 2012 Installation
Wizard and report any issues that would block an installation along with advice about
how to address the blocking issues. The Setup SCC uses rules from the following
categories; for more information about any of these categories, see the related link
from SQL Server 2012 Books Online:
Installation Rules
(http://technet.microsoft.com/en-us/library/cc646015(SQL.110).aspx)
Uninstallation Rules
(http://technet.microsoft.com/en-us/library/cc645979(SQL.110).aspx)
The common, relevant rules—across all four categories—for an in-place upgrade and a
side-by-side upgrade, are as follows; failing any of these rules will result in a blocking
issue that could prevent an in-place upgrade:
The destination computer must be connected to the Internet while the .NET
Framework security check validates a certificate.
The CPU architecture of the installation program must match the CPU
architecture of features intended for upgrading.
SCC checks that neither SQL Server 7.0 nor SQL Server 7.0 OLAP Services is
installed on the server. SQL Server 2012 is not supported on the same server
with SQL Server 7.0.
Here are some additional checks that SCC performs to determine whether the SQL
Server editions in an in-place upgrade path are valid:
Checks the system databases for features that are not supported in the SQL
Server edition to which you are upgrading.
Checks all user databases for features that are not supported by the SQL Server
edition.
Checks whether the selected instance of SQL Server meets the upgrade matrix
requirements (see "Allowable Upgrade Paths" in this section).
Checks whether the edition of the selected instance of SQL Server is supported
in this scenario (see "Allowable Upgrade Paths" in this section as well as Chapter
4, "High Availability," later in this guide).
For more information about SQL Server 2012 Setup, see "SQL Server 2012 Setup" later
in this chapter.
The Upgrade Assistant for SQL Server 2012 (UAFS) is an external tool that lets you
determine in a test environment how an application currently running on SQL Server
2005, 2008, or 2008 R2 will run on SQL Server 2012. This tool uses the SQL Server 2012
Management Tools Distributed Replay (DReplay) utility, together with baseline and
trace replays in a test environment, to help identify compatibility issues.
Baseline Server: Has the same version of SQL Server as the Production Server
with the databases to be migrated on it. It is isolated in order to retrieve baseline
information without the effect of other applications or server activity. The
Upgrade Assistant for SQL Server 2012 will run its replay against this server,
resulting in the baseline trace file.
Test Server: This server has the new SQL Server 2012 instance.
If testing an in-place upgrade, this will be the baseline server after the SQL
Server 2012 upgrade has been applied.
Report Server: This server with SQL Server 2012 Distribute Replay is used to save
trace file comparison results.
The Upgrade Assistant for SQL Server 2012 contains step-by-step instructions on
how to configure the Distributed Replay utility.
Windows Server 2003 R2, Windows Vista, or Windows XP SP2 or later versions
SQL Server 2000 SP4 or later versions or SQL Server 2005 SP2 or later versions
Using the reports on the Report Server, compare the results of the baseline test
workload on SQL Server 2012 against the original baseline. If there are any material
differences between the two results, work to resolve them in advance of the production
upgrade.
For more information and download instructions, see Upgrade Assistant for SQL Server
2012 (UAFS) (http://www.scalabilityexperts.com/tools/downloads.html) on the
Scalability Experts Tools Downloads page.
Note: When using Profiler make sure that the trace file contains a truly
representative load against the server, one that contains the full range of all queries
that the application will submit to the database. With a full range of queries and
sufficient load, testing can add confidence to the upgrade plan.
For more information about how to use Profiler for replay, see Replaying Traces
(http://technet.microsoft.com/en-us/library/ms190995(SQL.110).aspx) in SQL Server
2012 Books Online.
You can use the SQL Server 2012 System Monitor (Perfmon) counter called
SQLServer:Deprecated Features to monitor whether your application is submitting
commands to the SQL Server 2012 Database Engine that are scheduled for removal
from SQL Server in future releases. You should remove such deprecated commands
from SQL Server 2012 applications after they are detected. You can use this counter to
help plan modifications to your application code so that when you upgrade to the next
version of SQL Server after SQL Server 2012, the upgrade process will go more
smoothly. Select which kind of feature to monitor by using the Instance selection box
for the counter. System Monitor records the total number of times the deprecated
feature was encountered since SQL Server 2012 was last started. For more information
about how to use this tool, see SQL Server, Deprecated Features Object
(http://msdn.microsoft.com/en-us/library/bb510662(v=sql.110).aspx) in SQL Server
2012 Books Online.
Notification Services
You cannot perform an in-place upgrade of SQL Server Notification Services because it
is not installed by SQL Server 2012. You must use the SQL Server 2008 R2 Notification
Services backward compatibility add-in; see Chapter 9 in SQL Server 2008 R2 Upgrade
SQL Server 2012 Setup has important version-level requirements for upgrading
instances of SQL Server 2005, 2008, and 2008 R2 in-place. The basic requirements are
as follows:
For an in-place upgrade, the target SQL Server 2012 server and the legacy instance of
SQL Server 2005/2008/2008 R2 must satisfy some additional requirements for SQL
Server 2008 R2:
Cross-version instances of SQL Server 2012 are not supported. Version numbers
of the Database Engine, Analysis Services, and Reporting Services components
must be the same throughout an instance of SQL Server 2012. Therefore, you
must upgrade all these components together during an in-place upgrade.
Make sure that sufficient disk space is available for SQL Server 2012 Setup. Disk
space requirements vary based on the components selected to upgrade. For disk
space amounts, see the "Hard Disk Space Requirements (32-Bit and 64-Bit)"
section in the Hardware and Software Requirements for Installing SQL Server
2012 topic (http://msdn.microsoft.com/en-us/library/ms143506(v=sql.110).aspx)
in SQL Server 2012 Books Online.
Before upgrading from one edition of SQL Server 2012 to another, verify that the
functionality currently being used is supported in the edition to which you are
upgrading. For more information, see the section for specific components in
Planning a SQL Server Installation (http://msdn.microsoft.com/en-
us/library/bb500442(v=sql.110).aspx) in SQL Server 2012 Books Online.
Cross-platform in-place upgrades from 32-bit to 64-bit (x86 to x64) versions and
vice versa are not supported.
Make sure that you are running a supported version of the Windows operating
system.
Note: When the in-place upgrade process is running, avoid making any changes
to the legacy SQL Server 2005/2008/2008 R2 system.
For more information, see the "Unsupported Scenarios" section in the Supported
Version and Edition Upgrades topic (http://msdn.microsoft.com/en-
us/library/ms143393(v=sql.110).aspx) in SQL Server 2012 Books Online.
To reduce the time that is required for the upgrade process, install the .NET Framework
3.5 SP1 components (you must have SP1 or a later version) and SQL Server 2012 Native
Client beforehand on the server that will be upgraded. Then, include the same
components on the baseline image of the test server. If the production system cannot
be disturbed in any way before the scheduled downtime for the upgrade process, the
SQL Server 2012 Setup program will automatically install the prerequisites as part of
the upgrade process. However, this increases the time that is required for the upgrade.
PowerShell 2.0 is required by SQL Server 2012. If the target SQL Server is running
Windows Server 2008 SP2, install and enable PowerShell 2.0. If it is running Windows
Server 2008 R2 SP1, enable PowerShell 2.0. SQL Server 2012 Setup also installs the SQL
Server PowerShell snap-ins.
Note: The sqlps.exe command prompt utility for running SQL Server 2008 R2
PowerShell snap-ins has been deprecated.
For a named instance, choose an Instance ID that makes sense; do not necessarily
accept default values. This is especially true for failover clustering implementations,
where instances are not "local" and will have a presence on each node. (For more
information about clustering, see Chapter 4, "High Availability.")
The following minimum hardware and software requirements apply to all SQL Server
2012 editions:
SQL Server 2012 Setup will install .NET 4.0, the SQL Server Native Client, and the
required SQL Server 2012 Setup support files.
.NET requirements:
o If you are installing SQL Server 2012 on a Windows Vista SP2 or Windows
Server 2008 SP2 server, you must download and install .NET Framework
3.5.
o On Windows 7 and Windows Server 2008 R2 SP1, you must enable .NET
Framework 3.5.
o The .NET 4.0 is a requirement of SQL Server 2012, and SQL Server 2012
Setup will install it during the feature installation step.
o If you are installing SQL Server 2012 Express on Windows 2008 R1 SP1
Core, you must first install .NET 4.0.
Windows PowerShell 2.0 is not installed by SQL Server 2012 but it is required.
You can download and install Windows PowerShell 2.0 from the Windows
Management Framework site (http://support.microsoft.com/kb/968929).
The operating system minimum requirements vary based on the SQL Server 2012 edition you
select. The following links will take you to the appropriate sections for the server-based
editions of SQL Server 2012:
SQL Server 2012 is supported on Windows Server 2008 R2 SP1 and later Server
Core installations.
The Setup SCC will block Setup if the requirements for processor type and
minimum operating system, in addition to other conditions, are not met. For
more information, see Check Parameters for the System Configuration Checker
(http://msdn.microsoft.com/en-us/library/ms143753(v=sql.110).aspx) in SQL
Server 2012 Books Online.
Additionally, there are disk space needs for the SQL Server system files and objects that
must be considered in your calculations. Installing SQL Server 2012 requires that the
SQL Server 2012 on Windows x64 can use extended systems, also known as Windows
on Windows 64 (WOW64). WOW64 is a 64-bit Windows edition feature that enables
32-bit applications such as SQL Server 2012 Management Tools to execute natively in
32-bit mode. Such applications function in 32-bit mode even though the underlying
operating system is running on the 64-bit operating system. As a result, you can
upgrade to a 32-bit SQL Server 2012 edition on Windows x86, a 64-bit SQL Server 2012
edition on Windows x64, or a 32-bit SQL Server 2012 edition on Windows x64 using
WOW64. For more information, see the "Extended System Support" section in
Hardware and Software Requirements for Installing SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143506(v=sql.110).aspx).
After SQL Server 2012 is installed on a domain member server, the server's
network role cannot be changed from a domain member to a domain controller.
SQL Server must be uninstalled before the host computer is changed to a
domain controller.
SQL Server 2012 AlwaysOn failover cluster instances are not supported where
the cluster nodes are domain controllers.
SQL Server 2012 Setup cannot create security groups or provision services
accounts on a read-only domain controller; Setup will fail.
For more information, see the “Installing SQL Server on a Domain Controller” section in
Hardware and Software Requirements for Installing SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143506(v=sql.110).aspx).
SQL Server 2012 enhances the slipstreaming capability of SQL Server 2008 through a
new feature called Product Updates. Product Updates allows you to include the latest
product updates with the main product installation. For example, you can combine the
latest SQL Server 2012 Service Pack (SP) or Cumulative Update (CU) in the same file as
the RTM binaries. This can save you a lot of time and steps. Instead of having to install
(or upgrade) to SQL Server 2012 and install patches post-installation, these steps can
be combined into one. SQL Server does not ship slipstreamed, but you can create the
updated installation media on your own. For instructions on using Product Updates,
see Product Updates in SQL Server 2012 Installation (http://msdn.microsoft.com/en-
us/library/hh231670(v=SQL.110).aspx). For SQL Server 2012 restrictions on SQL Server
2008-style slipstreaming, see "Slipstream Functionality" in Deprecated SQL Server
Features in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/cc707789(v=sql.110).aspx).
For an in-place upgrade, SQL Server 2012's Setup program requires you to have certain
versions of the legacy SQL Server instance. (For more information, see "SQL Server 2012
Setup: System Configuration Checker" earlier in this chapter.) Specifically, the in-place
method that is provided by SQL Server 2012 Setup can be used to perform an upgrade
for the following versions:
If you have to upgrade earlier versions of SQL Server 2005/2008/2008 R2 and cannot
apply the necessary patches, use the side-by-side method.
SQL Server 2012 cannot directly upgrade a SQL Server 7.0 instance in-place. The
available options for upgrading from SQL Server 7.0 to SQL Server 2012 include the
following:
Upgrade the instance of SQL Server 7.0 in-place to SQL Server 2005 SP4, and
then upgrade the resulting instance in-place to SQL Server 2012. As you can see,
this in-place upgrade path requires two steps.
Upgrade the instance of SQL Server 7.0 to a new instance of SQL Server 2012 by
using a side-by-side upgrade method.
Whether you use a two-step in-place upgrade or a side-by-side upgrade, you should
use the SQL Server 2005 Upgrade Advisor to inspect the instance of SQL Server 7.0. If
any blocking issues (discontinued features or breaking changes) are found, you should
remove them. For more information, see the SQL Server 2005 Upgrade Technical
Reference Guide (http://www.microsoft.com/en-
us/download/details.aspx?DisplayLang=en&id=19471).
SQL Server is a complex product, featuring many components that are fairly
independent. Table 5 shows the SQL Server 2005 components that you can upgrade
and what paths are available. Table 6 and Table 7 show the same information for SQL
Server 2008 and SQL Server 2008 R2, respectively.
Table 6: Components and Upgrade Strategies: SQL Server 2008 SP2 to SQL Server 2012
However, there are restrictions on the upgrade path when you upgrade directly. When
you use SQL Server 2012's Setup program for an in-place upgrade, the program will
verify that the upgrade path for SQL Server editions is enabled. For more information,
see Edition Upgrade Rules (http://technet.microsoft.com/en-
us/library/cc645998(SQL.110).aspx) in SQL Server 2012 Books Online.
Note: The different components of SQL Server 2012 must be kept at the same
edition level when they are on the same instance. For example, if you are running
the SQL Server 2012 Enterprise Database Engine on a particular instance, you must
also install the Enterprise edition of Analysis Services as part of that instance.
As databases continue to expand and support a growing global market, users must be
able to work with character data in meaningful ways. Collations are a powerful way for
users to sort and compare strings according to their own cultural conventions.
Therefore, collations are an important factor when you create a database and operate
on the data. In addition, when you use the character data types such as char and
varchar, the collation dictates the code page and therefore determines which characters
can be represented for that data type.
SQL Server 2008 R2 introduced, and SQL Server 2012 continues with, collations that are
in full alignment with the collations provided by Windows Server 2008 R2. These new
collations are denoted by *_100 version and give users the most up-to-date and
linguistically accurate cultural sorting conventions.
The new collations include support for new East Asian government standards that are
linguistically correct for surrogates, support for Chinese minority scripts, the Unicode
5.0 case table, and weights to previously non-weighted characters that would have
compared equal.
Database collation upgrade considerations. Here are some considerations that might
affect an upgrade of a database collation:
o Computed columns.
o CHECK constraints.
Changing the database collation does not alter the collations in pre-existing
tables. New tables that are created after you change to the new collation will use
the new collation.
o Store only data that belongs to the code page for the character column.
The English version of SQL Server is supported on all localized versions of supported
operating systems. In addition, localized versions of SQL Server are supported on
localized operating systems that are the same language as the localized SQL Server
version.
However, there are some important in-place upgrade restrictions when you change
from one language to another:
You cannot upgrade non-English localized versions of SQL Server to the English-
language version of SQL Server 2012.
You cannot upgrade the English version of SQL Server to any non-English-
language localized version of SQL Server 2012. Note: This is a change from SQL
Server 2005.
You cannot upgrade localized versions of legacy SQL Servers to a localized SQL
Server 2012 version if the upgrade is to a different localized language. The in-
place upgrade must be to the same localized language.
If these operating system settings do not match the language of the localized SQL
Note: If you have a packaged application, before even planning an upgrade, check
with the software vendor to make sure that the software version that you are using
is certified to work with SQL Server 2012 and supported on that platform. It is a
good idea that you not upgrade until you receive assurance of continued vendor
support for the SQL Server 2012 version.
SQL Server 2012 is closely coordinated with the .NET Framework. To take full advantage
of many new features in SQL Server 2012, both the updated SQL Server Native Client
(Version 11.0) and .NET Framework 3.5 SP1 on the server, as well as .NET 4.02 on the
client, are required. SQL Server 2012 will automatically install the SQL Server Native
Client 11.0 on all SQL Server 2012 servers, but software developers must upgrade their
applications to use .NET Framework 3.5 and 4.0 to take full advantage of the new driver
and many of SQL Server 2012’s new features. However, it is not required that all
applications use .NET Framework 3.5 or 4.0.
Applications developed by using OLE DB or ODBC will still work when they connect to
SQL Server 2012. Although the overall recommended method for connecting to SQL
Server 2012 for non-.NET Framework applications is through the new SQL Server Native
Client, you can use the current OLE DB and ODBC drivers until you upgrade the clients.
However, new features in SQL Server 2005/2008/2008 R2 and SQL Server 2012, such as
the new spatial and XML data types, are not fully supported in the OLE DB or ODBC
drivers. For more information, see When to Use Native Client
SQL Server 2012 Upgrade Technical Guide 55
(http://msdn.microsoft.com/en-us/library/ms130828(v=sql.110).aspx) in SQL Server
2012 Books Online.
Although DB-Library client tools (such as isql.exe) are no longer supported in SQL
Server 2012, you can still make connections to SQL Server 2008 R2 by using the DB-
Library API. However, this feature is deprecated and will be removed in a future version
of SQL Server. You should not develop any new application using DB-Library, and you
should remove any dependencies on DB-Library from your current applications. For
more information, see the note about DB-Library in Deprecated Database Engine
Features in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143729(v=sql.110).aspx) in SQL Server 2012 Books Online.
There might also be issues related to upgrading client applications. If client applications
have to take full advantage of SQL Server 2008 R2 data types or features such as the
XML data type, the client applications must be upgraded to .NET Framework 3.5 SP1 or
a later version.
There are very few issues when you move .NET 1.1 applications from SQL Server
2005/2008/2008 R2 to SQL Server 2012. However, the clients cannot take full
advantage of the new SQL Server 2012 features. Some features such as snapshot
isolation are available only through T-SQL commands. Also, SQL Server 2005
Notification Services is not available for .NET 1.1 clients and has been removed from
SQL Server starting with SQL Server 2008 R2.
If you upgrade clients from .NET 1.1, 2.0, or 3.0 applications to .NET 3.5 SP1 and .NET
4.0 or later versions, the client applications will be able to take full advantage of new
SQL Server 2012 capabilities.
For information about SQL Server 2012 Native Client, see the following links in SQL
Server 2012 Books Online:
For developer information about SQL Server 2012 data access, see the Microsoft Data
Developer Center (http://msdn.microsoft.com/en-us/data), which is the primary data
access site for Microsoft developer technologies.
If you are not comfortable using a command prompt or PowerShell, you can use Server
Manager to configure .NET 3.51.
1. From the Start menu, select Administrative Tools and then Server Manager.
2. Select Features.
Make a backup of the user databases and data after all users are out of the
system and before the upgrade process has begun. Do nothing until this is
completed. Back up all system databases at this point. These backups form the
databases of record, marking the final versions of your old environment. If you
can, copy these backups to a different server and make sure that they can be
easily accessed even in a complete server-down situation. Make sure that the
media is intact so that you can restore the backups if necessary.
After you make any changes to the SQL Server 2012 databases and
configuration, but before allowing acceptance testing on the new SQL Server
2012 instance, take full database backups again. If the testers consider the
upgrade a success, these backups will be the initial backups for your new
environment. If testing finds errors but they are not serious enough to cause a
rollback, you can restore from these initial backups to revert the database to its
original state, ready for a second round of acceptance testing. Then apply
required changes and repeat the backup process. When testing is complete, still
back up all databases before rolling out to production. These backups then
capture the final state of the database before they are put into production.
Important: Make sure that either the Windows Server installation media with
the appropriate keys or good backups of the Windows Server installation image
are available for a potential reinstall. You can rebuild SQL Server only if Windows
is stable and in a state to have applications installed on it.
It might seem that these backups are too many and will consume lots of disk space, but
you can delete most of them after the upgrade to SQL Server 2012 is completed. It is a
good practice to perform all of them, just in case an unexpected issue requires a
restore at any point in time.
Note: If you decide to change the operating system at the same time as the SQL
Server upgrade, we recommend that you design and execute a test of the upgrade
and operating system changes in a test or staging environment before you try it in
production.
Some considerations when you upgrade both Windows and SQL Server:
If you are upgrading to Windows Server 2008 R2 SP1 and the server is currently
running SQL Server 2005, make sure that you apply SQL Server 2005 SP4 or later
If you will reuse the existing server and upgrade Windows Server, depending on
which version of Windows that you start with and which is the final destination,
you could perform an in-place upgrade. This approach might also require
installing a fresh version of Windows Server. If you perform a fresh install of
Windows Server, make sure that all SQL Server databases are backed up, that all
settings are known, and that all users are scripted out.
Windows Server 2008 and 2008 R2 both have an installation option called Core.
Core is basically a locked-down, minimal version of Windows Server that does
not have an interface other than a command line. SQL Server 2012 supports only
Windows Server 2008 R2 Core.
o The articles Hyper-V Update for Windows Server 2008 x64 Edition
(KB950050) (http://www.microsoft.com/en-
us/download/details.aspx?displaylang=en&id=18567) or Hyper-V Update
for Windows Server 2008 (KB950050) (http://www.microsoft.com/en-
us/download/details.aspx?DisplayLang=en&id=3273) in the Microsoft
Knowledge Base.
You cannot use an old Windows NT-style domain for a Windows Server 2008 or
later server. You must be using Active Directory. If your organization is using
older-style domains, you cannot deploy Windows Server 2008/2008 R2 until
your Active Directory infrastructure is upgraded.
By default, Windows Server 2008 and 2008 R2 are more secure than Windows
Server 2000 and Windows Server 2003. Many of its features are not configured,
so there will be additional work involved in the upgrade.
Windows Server 2008 and 2008 R2 support only SAS, fiber channel, and iSCSI. If
you are using older parallel SCSI, you have to upgrade your disk solutions to
support Windows Server 2008.
For more Windows-specific information about how to deploy and upgrade to Windows
Server 2008 and 2008 R2, see Upgrading to Windows Server 2008
(http://technet.microsoft.com/en-us/library/cc754728(WS.10).aspx) and Windows
Server 2008 R2 Upgrade Paths (http://technet.microsoft.com/en-
us/library/dd979563(WS.10).aspx). For information about how to upgrade to Windows
Server 2008 or 2008 R2 failover clustering with SQL Server 2008 R2, see the "Upgrading
Failover Clusters" section in Chapter 4, "High Availability."
Upgrading them all at the same time will minimize overall deployment resources
because you have to schedule only a single outage. But that also means that if anything
goes wrong for any reason, you might have more to fix and deal with, which could
increase downtime. It is a risk versus reward decision.
When you work with VLDBs, more than any other scenario except perhaps high
availability, careful planning is required to ensure a successful upgrade experience. The
cost of a failure if there is an unexpected issue is much larger because of the time
involved to resolve the issue. For example, if a copy of a database backup file stops half
way through, or if a stored procedure uses discontinued T-SQL syntax, you will lose
time. With an in-place upgrade, you gain more time because you do not have to
physically move the database. However, this upgrade method makes a restore costlier
if there is a serious failure causing you to roll back to the original database. Advance
testing in a full-size test or staging environment is very important in these cases.
For more information about VLDB upgrades involving failover clustering or database
mirroring, see Chapter 4, "High Availability."
The following steps can help minimize the downtime involved in an in-place upgrade
or side-by-side upgrade:
Check the legacy SQL Server versions. Make sure that the legacy instances of
SQL Server 2005/2008/2008 R2 are at the correct service-pack level for an in-
place upgrade. If they are not at the correct level, plan to update them before an
in-place upgrade (see "Setup Requirements for an In-Place Upgrade" earlier in
this chapter).
Make sure that installation requirements are met. SQL Server 2012 Setup
also has Windows and other component requirements (see "Setup Requirements
for an In-Place Upgrade" earlier in this chapter).
Preinstall .NET and Windows components. If you can, install .NET Framework
3.5 SP1 or a later version and Windows Installer (MSI) 4.5 beforehand on the
target server. Both require a restart. For an in-place upgrade, if a restart in
production cannot be enabled except for the upgrade, install them during the
upgrade and not earlier. For a side-by-side upgrade to a separate server,
installing these components before the upgrade will help reduce downtime.
When you run the SQL Server 2012 Upgrade Advisor on a legacy server, a restart
will be required if MSI 4.5 must be installed.
Preinstall Visual Studio 2008 SP1 or a later version. If Visual Studio 2008 is
installed on the server, make sure that it is at the SP1 level (see "SQL Server
Prerequisites Installed by Setup" earlier in this chapter).
Preinstall SQL Server 2012 common components. Install the SQL Server 2012
common components (such as the SQL Server 2012 SQL Native Client) before
the upgrade. Also consider pre-installing the Management Tools if SQL Server
2012 Management Studio (SSMS) is not required to manage SQL Server 2000
instances. (For more information, see Chapter 2, "Management and
Development Tools.")
Use new service accounts. Create and use new service accounts and groups, if
it is necessary, with your SQL Server 2012 implementations. This guarantees
account separation from the legacy instances of SQL Server 2005/2008/2008 R2.
An in-place upgrade will not automatically change the legacy instance’s service
accounts. Create new domain-based service accounts that have the correct user
rights on each server, and after the upgrade, use SQL Server Configuration
Manager to update the SQL Server 2012 services to use these new accounts.
Check data consistency. When you upgrade relational databases, run a Full
DBCC CHECKDB on databases before upgrading while the database is online so
that you do not affect downtime. (See Chapter 3, "Relational Databases," for
more information.)
Back up data before and after the upgrade. Check that your backup media
has no errors and is available for restores if necessary (see "Plan for Backups"
earlier in this chapter).
Schedule a longer maintenance downtime window than you think you must
have. If everything finishes without issue, you will be able to bring users back
online faster than they expected. But if unexpected issues arise, you will have
more time to deal with them without inconveniencing users.
Do a complete backup of all the files and installed software on the server in case
you have to restore the server to its previous state. Confirm that your backup
media is complete and available.
After the upgrade, check before you leave to make sure that everything looks to be
working. Make sure that applications return to running correctly and that transaction
workloads are processed correctly.
Scripting and automating the deployment process and tests as much as you can
The actual steps that you use should comply with the rules and procedures already
existing in your organization, but most likely, they will include all the above. The
important point is that an upgrade to SQL Server 2012 is not a minor change to your
production database system; instead, it should fit into existing procedures for major
database changes.
Updating Skills
Before you try to upgrade to SQL Server 2012, make sure that those administering or
deploying SQL Server 2012 are ready. Just as you would with any other application,
never assume that your staff can deploy and then manage the upgraded system
without being correctly prepared.
Before deployment, set up a SQL Server 2012 environment so that everyone who has to
update his or her skill set can become familiar with the new version. If the DBAs are
comfortable with SQL Server 2012 by the time of production deployment, the transition
from SQL Server 2005/2008/2008 R2 will go much more smoothly.
There are many resources that are available to update skills. To start, see the SQL Server
2012 Learning Center (http://msdn.microsoft.com/en-us/sqlserver/ff898410). Also you
can get initial experience with SQL Server 2012 using the training material on the SQL
Work as part of a team, document the planning process, and communicate the
upgrade effectively. Team members and stakeholders usually include not only DBA
staff, but Operations staff, QA staff, the Security officer, and application/business
owners. Explicitly document requirements and establish agreement from relevant
stakeholders, just as for any major database server change. Use the documentation as a
basis to execute the upgrade during the deployment phase. The plan should be as
detailed as possible, and you should store the resulting document or documents by
using some form of change control such as a source control system. In the rest of this
section, we will detail these steps.
When documenting the plan, include the upgrade requirements in addition to the
rationale for choosing an upgrade strategy for each instance or class of instances. Use
the rest of the plan to detail remaining issues. For example, the plan might include the
following steps:
Design final acceptance criteria. The upgrade might succeed at the instance of
SQL Server 2012 level, but some other unaccounted-for variable in the server
infrastructure might still prevent applications from running correctly. Whatever
the case, determine how the organization will accept the upgrade and how it will
make the "go/no-go" decision. This goes beyond validating the upgrade result:
It focuses on whether the applications that use the targeted database servers
run as expected and required. It might be appropriate to enlist the support of
the QA team to develop appropriate acceptance tests.
Here are some key variables to consciously decide to add to an upgrade process and
the new system. Some changes might occur at the SQL Server-instance level:
Change of version. First, you must deal with the consequences of changing SQL
Server versions. Upgrade Advisor details these issues and is the best source for
this kind of information. These changes cannot be avoided. For more
information, see the previous coverage of Upgrade Advisor and backward-
compatibility issues.
Change of edition. You have to consider the effects of upgrading and at the
same time changing the SQL Server edition you are running. This combination of
changes can have significant consequences. If you are using an in-place
upgrade, the result will be at the same edition level or higher. Even this might
present issues. For example, if you are upgrading from SQL Server 2000 MSDE to
SQL Server 2012 Express, you can no longer rely on SQL Server Agent jobs. In
this case, you might be better served by upgrading to SQL Server Standard
instead of SQL Server Express. If you choose a side-by-side upgrade, you can
change edition level in any direction. Generally, reduce the number of changes
to the system by staying at the same edition level unless your organization
needs a different edition’s features.
In a complex upgrade scenario, you can reduce the risk of problems by keeping all
server-level configurations the same between instances and avoiding new introductions
to the system until after the upgrade is considered successful.
At the database level, possible changes during a direct in-place upgrade or side-by-
side upgrade include the following:
Change of database compatibility level. Keep the new databases at the same
compatibility level, and move them to the new compatibility level after you have
validated the upgrade’s success.
If you decide to make these kinds of changes at the database level, we recommend
that you design and execute a test of the upgrade and database changes in a test or
You might also be tempted to change the database server infrastructure while you are
upgrading. These changes might include the following:
Change of physical server. For an in-place upgrade, you must use the same
server. However, in a side-by-side upgrade, you can put the new instance on the
same server or a different server. If on a different server, such a change implies a
change of IP address and server name in the network, unless you perform a
rename and readdress of the servers in some manner. Users and applications
must now adapt to the new server name and IP address, which might be a
complexity that you cannot avoid.
Swapping servers. For a side-by-side upgrade, you might decide to keep the
same server and instance name by pulling the legacy server out of the domain,
adding in the new server, giving it the same IP address as the legacy server, and
renaming the new server to the legacy server name. However, with an in-place
upgrade, in which the new instance of SQL Server 2012 becomes a named
instance, be aware that you cannot rename an instance name or change a
named instance to a default instance.
Change of CPU type: 32-bit to 64-bit. You might also view a side-by-side
upgrade as an opportunity to put the new instance on a 64-bit server instead of
your current 32-bit server. In this case, be prepared to install the correct editions
and be aware of any restrictions, as described earlier in this chapter.
Just remember that the fewer changes introduced to the infrastructure during the
upgrade process, the less complex an upgrade will be. The more changes that you
introduce concurrently, the more testing you will want to do in your test or staging
environment. If you absolutely must combine multiple changes within the upgrade
process, plan for additional testing in your test or staging environment to reduce the
risk of encountering unexpected issues during the production upgrade.
Classify instances of SQL Server into classes, based on how important the data is.
Consider a possible scenario in which a given SQL Server instance could be
classified into one of three levels. Perhaps only the top-level systems use high
availability technologies, the mid-level systems might use log shipping for
creating warm standby servers, and the lowest-level databases might require
only nightly backups. In this scenario, the checklist for upgrading the top-level
instances of SQL Server would be much more extensive and require full testing
and a complex rollback plan. In contrast, the checklist for upgrading the lowest-
level instances of SQL Server would be much simpler.
The other chapters in this guide and SQL Server 2012 Books Online contain many
topics that contain valuable information that can help in developing upgrade checklists:
Integration Services and DTS: See Chapter 17, "Integration Services." For
instructions on upgrading DTS to SQL Server 2008 Integration Services, see
Considerations for Upgrading Data Transformation Services
(http://msdn.microsoft.com/en-us/library/ms143716.aspx).
Make sure that you test the plan with the people who will actually perform it. Testers
should be familiar with the upgrade plan. Trying to troubleshoot mistakes because of
unfamiliarity during the deployment process is stressful and costly.
Work with your QA team to make sure that the testing occurs. QA departments
Here are some general considerations for testing either an in-place upgrade or side-by-
side upgrade:
Begin by building a test or staging environment. Consider putting the test server
or servers in a test environment that has its own domain so that you can use the
same server and SQL Server instance names. Make sure that the test servers
match production in disk volume assignments and free disk space. This is
especially important in an in-place upgrade or a side-by-side upgrade on the
same server. In a side-by-side upgrade to a different server, you might use the
additional server for testing as well.
Test the upgrade multiple times. To make repeated testing easier, you could
reset the test environment back to its original state quickly. Make a disk image
of the database server, in addition to copies of all data files. Then, restore the
ghost image and data file copies to the original servers. Or, you could use a
Virtual PC (VPC) image or images to build the test environment if the VPC image
really can support all the components and behavior of the production server.
Reverting the VPC image to its original state when closing it down makes a
second test run much easier.
Install the .NET Framework 3.5 SP1 and SQL Server 2012 drivers on the
production server by using SQL Server 2012 Setup before the upgrade process,
if that is possible and matches the upgrade plan for production. This saves time
during the actual upgrade.
Execute Upgrade Advisor remotely against the test server that runs the legacy
instance of SQL Server 2005/2008/2008 R2 and validate that its output matches
what is received when it is executed against the production system. Then, apply
scripts to fix blocking issues that Upgrade Advisor reveals. In some cases, fixing
blocking issues might break the legacy application. If that is the case, apply
additional scripts or code as workarounds to update the database code or the
application so that it continues to operate. Again, it is important to verify that
the application operates correctly. For more information, see "SQL Server 2012
Upgrade Advisor" earlier in this chapter.
When the upgrade is complete, apply any later scripts that might be required to
resolve post-upgrade issues uncovered by Upgrade Advisor.
Some additional considerations for testing an in-place upgrade include the following:
To test an in-place upgrade, put a copy of the production instance of SQL Server
2005/2008/2008 R2 on a test server so that your test includes "real" data and
objects. To the best of your ability, make the initial state of the test server
duplicate all necessary components of the production server.
After the test environment is built, verify that it behaves correctly with the same,
or copies of, application components that connect to the production system.
Whether you perform a side-by-side upgrade on the same server or separate servers,
consider the following points:
You could run the legacy SQL Server instance in parallel with the new instance of
SQL Server 2012. If that is part of the upgrade plan, make sure in the test
environment that running in parallel will not require too much of the server's
resources.
When the cutover to the new instance of SQL Server 2012 occurs and the
instance is verified as ready for production, stop the legacy instance of SQL
Server, leaving it dormant for a while as a potential rollback instance.
After the upgrade has passed acceptance tests, uninstall the legacy instance
without disturbing the new production instance.
Decide whether the production system will be online during the installation of
SQL Server 2012. If this is the case, test the effect that SQL Server 2012 R2 Setup
has on application performance.
If the upgrade plan includes removing the old server from the domain and
renaming the new server with the legacy name and legacy IP address, test this
step as well.
Now, perform final tests on the new SQL Server 2012 server. To rerun the tests and gain
confidence in the plan and deployment, repeat the process by restoring the baseline
target server.
Back up production data. In the upgrade checklist, include steps for backing up
all the databases and other data that would be required to rebuild the system.
Develop acceptance criteria and a go/no-go decision point. As part of the
upgrade checklist, at some point decide whether the upgrade is successful and
the system can be put back into production. The final go/no-go decision might
SQL Server 2012 Upgrade Technical Guide 75
involve a team of people, including the testers who determine whether the
application operates as expected.
Have a rollback plan in place. Specify in sufficient detail how to restore the
system if it is necessary. The more detailed the plan, the better, because
rollbacks usually occur in high-stress situations. Clearly defined steps are easier
to follow in those contexts.
Test the rollback. Test the rollback plan to make sure that it will actually work.
The degree of testing might be a function of how important the data is and how
time-critical a rollback would be. There can be no confidence in an untested
rollback plan.
Post-Upgrade Tasks
As soon as you have completed the upgrade tasks, two more steps are required:
Integrate the new SQL Server instance into the application and database server
environment.
These two steps are not necessarily sequential. For example, you might apply some
acceptance criteria immediately to obtain a go/no-go decision. This could then be
followed by integrating the new instance and applying the remaining set of acceptance
tests.
There might be additional requirements affecting the upgrade that depend on the
environment of the resulting instance of SQL Server 2012. Some examples include the
following:
Linked servers. The current system might depend on linked server relationships
and definitions that must be applied for an upgrade. Failures in the application
might result if those linked servers are not defined and tested correctly.
Imports and exports. The legacy database system might receive data imports
and be the source of data exports. These imports and exports might use DTS, be
SQL Server 2012 Upgrade Technical Guide 76
converted to SSIS, or use other tools. You have to isolate these requirements
and make sure of the resulting upgraded instance’s correct participation.
Patches, hotfixes, and cumulative updates. After you upgrade to SQL Server
2012 from another edition of SQL Server, you must reapply any hotfix or service
pack updates to the upgraded SQL Server instance.
Troubleshooting an Upgrade
The best time to discover problems with an upgrade is when validating the upgrade
plan in a test environment. Most upgrade issues related to the static code and objects
in the instance, as well as the techniques recommended to resolve them, are fully
documented in Upgrade Advisor. Dynamic code requires a workload to verify and
troubleshoot.
Detailed log files are located in the Files folder under the path just mentioned,
providing one file for each component and for many subcomponents. For
information about interpreting the log files, see How to: Read a SQL Server
Setup Log File (http://msdn.microsoft.com/en-us/library/ms144287.aspx).
You use the same log files for troubleshooting a side-by-side upgrade as an in-
place upgrade, except that the actual data transfer will not be logged because it
is a manual process that is not under the control of SQL Server 2012 Setup.
The steps for troubleshooting a side-by-side upgrade are basically based on the
technique that you use for transferring data. If you use the backup/restore or
detach/attach side-by-side upgrade method, capturing the output of those
processes to text files is possible as long as you use the SQLCMD command-line
tool and redirect the output to a file. If you use the Copy Database Wizard to
transfer data, the process is interactive, and you have to watch it live for
potential errors.
Warning: If you are not upgrading all databases or components from an instance at
the same time, do not disable and shut down any SQL Server instance still running
active databases for other applications.
After your new instance has passed acceptance tests and the newly upgraded server is
successfully in production, schedule a time to either uninstall the instance or fully
decommission the server. If you are uninstalling in a side-by-side upgrade on one
server, a restart might be required to fully remove the legacy instance of SQL Server
2005, SQL Server 2008, or SQL Server 2008 R2, and that outage must be scheduled.
The key issue is the nature and value of the data that is stored in your current SQL
Server instance. If the data is business critical or irreplaceable, address how to back it
up before an upgrade and restore it if a rollback is needed in the upgrade process for
any reason. As soon as either of these steps is unclear or uncertain, seek the help of a
professional DBA with SQL Server 2012 skills.
Assuming that your organization can handle a rollback, the following issues must be
dealt with related to testing and acceptance:
Do you have a clear sense of what criteria would qualify the upgrade as
successful?
Do you have a tester or team of testers who can verify that the applications that
depend on SQL Server work correctly after the upgrade?
Can you test the upgrade in a test environment first so that you can be
confident that the upgrade will succeed?
Above all, have you run Upgrade Advisor and detected and resolved any
blocking issues it found?
If you are confident that your organization can back up and restore data, successfully
test the results, and rebuild the SQL Server database if it is necessary, next consider
what upgrade strategy would best meet your needs.
By far the easiest upgrade strategy without a DBA available is the in-place upgrade, in
which the new instance of SQL Server 2012 replaces your legacy SQL Server instance.
With this strategy, SQL Server automatically transfers your data from the old to the new
instance. In most cases, upgrading an instance without a DBA is best performed by
using in-place upgrade. However, you will want to consider all the relevant factors
before you make a final decision.
As with any significant database application upgrade, an upgrade to SQL Server 2012
will benefit from limiting the number of variables during the upgrade process and
applying standard IT production release procedures to the upgrade process.
Additional References
For an up-to-date collection of additional SQL Server 2012 upgrade planning and
deployment references, see the following links:
For more information about how to upgrade each SQL Server component (e.g., Analysis
Services and Integration Services—see the remaining chapters in this document.
When upgrading from SQL Server 2005/2008/2008 R2 to SQL Server 2012, the impact
of the upgrade on these management and development tools will be minimal. Note
that there are many other tools in SQL Server 2012, but describing them here in detail
is beyond the scope of this chapter:
For information about changes in the business intelligence tools, see Chapter 15,
“Business Intelligence Tools,” in this Guide.
For information about the changes in the Reporting Services tools, see Chapter
18, “Reporting Services,” in this guide and Upgrade and Migrate Reporting
Services (http://msdn.microsoft.com/en-us/library/ms143747(v=sql.110).aspx) in
SQL Server 2012 Books Online.
Changes in SSMS
SSMS is an integrated environment for managing all SQL Server components, including
the SQL Server Database Engine, SQL Server Analysis Services, SQL Server Integration
Services, SQL Server Reporting Services, as well as Transact-SQL (T-SQL) database
queries and components. SSMS uses the Visual Studio IDE to give administrators a
single, easy-to-use graphical tool for managing the most sophisticated systems and to
Object Explorer
There are no changes in SSMS’s Object Explorer if you are upgrading from SQL Server
2008/2008 R2. If you are upgrading from SQL Server 2005, you will find the following
enhancements in Object Explorer:
Customizable columns. In the browser, you can display the information that is
relevant to your needs rather than having to accept what is provided by default.
Object sorting. By simply clicking an object column heading, you can sort
objects into the desired order based on the context of the click.
o Synchronize the object selected in the detail window with the objects in
the object window
o Select the scope of an object group based on the level of object selected
in Object Explorer
For more information about Object Explorer enhancements if you are upgrading from
SQL Server 2005, see Manageability Enhancements (Database Engine)
(http://msdn.microsoft.com/en-us/library/cc645579(v=sql.100).aspx) in SQL Server 2008
Books Online.
Query Editor
Breakpoint validation. Validation ensures the user does not set a breakpoint in
an invalid location.
Page Restore dialog box. This dialog box allows the user to check database
pages for corruption and restore one or more damaged pages from a database
backup and subsequent log backups without restoring the whole database.
For details about these Query Editor enhancements, see Manageability Enhancements
(Database Engine) (http://msdn.microsoft.com/en-us/library/cc645579(v=sql.110).aspx)
in SQL Server 2012 Books Online.
Keyboard Shortcuts
DBAs managing SQL Server environments often use keyboard shortcuts to increase
their productivity. The default scheme is the SQL Server 2012 scheme, with keyboard
shortcuts based on Visual Studio 2010.
3. Change the keyboard scheme by using the Keyboard Scheme drop-down box.
If you change the keyboard scheme in SSMS, the Log Viewer keyboard shortcuts in SQL
Server 2008 R2 are not available in SQL Server 2012. The following Help and SQL Server
Books Online keyboard shortcuts are also not available:
For a list of keyboard shortcut changes, see SQL Server Management Studio Keyboard
Shortcuts (http://msdn.microsoft.com/en-us/library/ms174205(v=sql.110).aspx) in SQL
Server 2012 Books Online.
The following enhancements were made in SSMS 2012 as a result of customer requests:
For the latest information about SSMS features that you will find after an upgrade, see
Manageability Enhancements (Database Engine) (http://msdn.microsoft.com/en-
us/library/cc645579(v=sql.110).aspx) in SQL Server 2012 Books Online.
For details about the Database Engine Tuning Advisor enhancements, see the
Manageability Enhancements (Database Engine) (http://msdn.microsoft.com/en-
us/library/cc645579(v=sql.110).aspx) in SQL Server 2012 Books Online.
For information about the latest Configuration Manager features, see SQL Server
Configuration Manager (http://technet.microsoft.com/en-
us/library/ms174212(v=sql.110).aspx) in SQL Server 2012 Books Online.
Preparing to Upgrade
To make sure your upgrade process goes smoothly, consider the following changes in
the way certain management tools work in SQL Server 2012 so that you can make
appropriate modifications after your upgrade and maintain effective administration of
your SQL Server environment.
Deprecated Features
Some management tools’ features and some SQL Server features are deprecated in
SQL Server 2012, which means that they are supported for backward compatibility only
and will be removed from a future release of SQL Server.
The Trace Capture and Trace Replay features for Database Engine workloads are being
depreciated in SQL Server 2012. The Extended Events graphical user interface in SSMS
is recommended as a replacement for Trace Capture. Distributed Replay is the
recommended replacement for Trace Replay. These features are not being depreciated
for Analysis Services workloads.
For a complete discussion of deprecated features, see the following topics in SQL
Server 2012 Books Online:
Discontinued Functionality
Some management tools’ features have been discontinued in SQL Server 2012. The
following highlights some of the discontinued features. For a complete list, see
Discontinued Management Tools Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/cc879339(v=sql.110).aspx) in SQL Server 2012
Books Online.
The Active Directory Helper Service and its relevant components have been removed.
For more information, see Discontinued SQL Server Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/cc707782(v=sql.110).aspx) in SQL Server 2012
Books Online.
The system stored procedures sp_addtask, sp_deletetask, and sp_updatetask have been
removed.
ActiveX Subsystem
The ActiveX subsystem for SQL Server Agent has been removed.
Breaking Changes
Breaking changes are those that might block an upgrade. The SQL Server 2012
Upgrade Advisor, which will be discussed in the “Upgrade Tools” section, helps detect
major breaking changes by looking through the environment to be upgraded and
checking to make sure that the relevant elements are present. For information about
these types of changes, see Breaking Changes to SQL Server Features in SQL Server
2012 (http://msdn.microsoft.com/en-us/library/cc707784(v=sql.110).aspx) in SQL Server
2012 Books Online.
Behavior Changes
Behavior changes are non-breaking changes that might not cause your upgrade to fail
but might affect your applications after the upgrade. Two behavior changes have been
found for SQL Server 2012:
1. The failure detection process in SQL Server failover clusters no longer uses the
"SELECT @@SERVERNAME" query. The failure detection process does, however,
improve logging, monitor major SQL Server components, and provide
capabilities to set conditions for SQL Server failover or restart.
For full details regarding upgrading SQL Server 2005/2008/2008 R2 clustered instances
to SQL Server 2012, see Chapter 4, "High Availability," in this guide. For more
information about behavior changes, see Behavior Changes to SQL Server Features in
SQL Server 2012 (http://msdn.microsoft.com/en-us/library/cc707785(v=sql.110).aspx) in
SQL Server 2012 Books Online.
Upgrade Tools
Microsoft has released a Feature Pack for SQL Server 2012 that includes, among other
useful extras, SQL Server 2012 Upgrade Advisor. You can either download the Microsoft
SQL Server 2012 Feature Pack
(http://www.microsoft.com/download/en/details.aspx?id=29065) or install it from the
SQL Server 2012 installation DVD.
Upgrade Advisor checks more than 100 rules for possible upgrade issues, separated
into the following categories:
SQL Server
Analysis Services
Reporting Services
Integration Services
After the checks are completed, a reporting interface lists the issues found and advises
you on how to resolve them. For more information about Upgrade Advisor, see Chapter
1, "Upgrade Planning and Deployment," in this guide and Use Upgrade Advisor to
Prepare for Upgrades (http://msdn.microsoft.com/en-
us/library/ms144256(v=sql.110).aspx) in SQL Server 2012 Books Online.
64-Bit Considerations
The client tools are developed for the 32-bit machine environment. When running on a
64-bit machine, the software functions within Windows On Windows 64 (WOW64), an
emulation environment that hosts 32-bit software within the 64-bit machine. Therefore,
there should be no tool issues regarding upgrading to the 64-bit environment. For
Proxy Accounts
Job steps in non-T-SQL jobs owned by sysadmin execute under the context of the SQL
Server Agent service account. Job steps in non-T-SQL jobs owned by a non-sysadmin
run under the context of a proxy account if it is enabled.
A proxy account defines the security context for a job step and gives SQL Server Agent
access to security credentials for a Windows user. SQL Server Agent impersonates the
credentials defined in the proxy account before it executes a job step. This lets SQL
Server Agent execute the job step by using the security context of the proxy account.
You can use SSMS to modify the proxy account by following these steps:
1. In Object Explorer, expand a server, expand SQL Server Agent, and then expand
Proxies.
2. Expand the subsystem node for the proxy, right-click the proxy you want to
modify, and click Properties.
EXEC dbo.sp_grant_proxy_to_subsystem
@proxy_name = 'UpgradedProxyAccount',
@subsystem_name = N'SSIS'
GO
For more information about the SQL Server Agent proxy account, see How to: Create a
Proxy (SQL Server Management Studio) (http://msdn.microsoft.com/en-
us/library/ms190698(v=sql.105).aspx)
DBAs upgrading multi-server environments need to upgrade all target servers (TSX)
before upgrading master servers (MSX). You can use SSMS to re-enlist target servers by
following these steps:
2. Right-click SQL Server Agent, point to Multi Server Administration, and then click
Make this a Target. The Target Server Wizard guides you through the process of
making a target server.
Keep in mind that two features introduced in SQL Server 2008 R2 make working in a
distributed environment more cost-effective than using master and target servers.
Those features are:
For information about these features, see the following SQL Server 2012 Books Online
topics:
Tools Replacement
SQL Server 2012 Setup will not replace the SQL Server 2005 tools with SQL Server 2012
tools:
The SQL Server 2005 tools on the upgraded instance must be removed
separately by using Add/Remove Programs. This applies whether there are one
or many instances of SQL Server 2005 on the server.
SQL Server 2012 Setup will detect the registered servers and other settings of
the SQL Server 2005 tools and attempt to preserve them when upgrading to
SQL Server 2012.
Exporting and importing SSMS registered servers between SQL Server 2005 and
SQL Server 2012 is not supported because the underlying .regsrvr files do not
have the same structure.
Tools Connectivity
SQL Server 2005 tools cannot be used to manage SQL Server 2012 instances. After an
in-place upgrade, you can use only SQL Server 2012 tools and utilities to manage SQL
Server 2012 instances. However, the SQL Server 2012 tools can manage SQL Server
2005 instances. To manage SQL Server remotely, install the SQL Server 2012 tools on a
workstation to ensure that you can manage SQL Server 2012 after it is installed.
SQL Server 2005 Profiler allows you to run a trace on the SQL Server 2012 instance.
However, when running a new trace, there is no template so you have to manually
select your events before running the trace. SQL Server 2012 Profiler can also be used
to open SQL Server 2005 trace files.
Tools Replacement
SQL Server 2012 Setup will not replace the SQL Server 2008/2008 R2 tools with SQL
Server 2012 tools:
The SQL Server 2008/2008 R2 tools on the upgraded instance must be removed
separately by using Add/Remove Programs. This applies whether there are one
or many instances of SQL Server 2008/2008 R2 on the server.
SQL Server 2012 Setup will detect the registered servers and other settings of
the SQL Server 2008/2008 R2 tools and attempt to preserve them when
upgrading to SQL Server 2012.
Tools Connectivity
After an in-place upgrade, you can use SQL Server 2008/2008 R2 SSMS to connect and
manage SQL Server 2012 instances. However, you cannot use SQL Server 2008/2008 R2
Configuration Manager to manage any of the SQL Server 2012 services.
SQL Server 2008/2008 R2 Profiler allows you to run a trace on the SQL Server 2012
instance. However, when running a new trace, there is no template so you have to
manually select your events before running the trace. SQL Server 2012 Profiler can also
be used to open SQL Server 2008/2008 R2 trace files.
Project Files
SSMS 2012 can open and work with project files created in previous versions of SSMS
When the project is opened with SSMS 2012, it must be upgraded with a Visual Studio
conversion process. This upgrade process is a function of the Visual Studio Shell upon
which the SSMS 2012 is built. After the project is upgraded, it cannot be opened by any
of the previous versions of SSMS. For more information, see Projects (SQL Server
Management Studio) (http://msdn.microsoft.com/en-
us/library/hh231442(v=sql.110).aspx) in SQL Server 2012 Books Online.
Post-Upgrade Tasks
After the upgrade, you might need to perform some tasks to have your new
management tools behave the same as before the upgrade.
For details about the Maintenance Plan Wizard, see Use the Maintenance Plan Wizard
(http://msdn.microsoft.com/en-us/library/ms191002.aspx) in SQL Server 2012 Books
Online.
Database Diagrams
During an in-place upgrade to SQL Server 2012, database diagrams created in earlier
releases of SQL Server will automatically be upgraded. The following steps describe
how to set up database diagramming on SQL Server 2012 to complete the upgrade.
DBAs wanting to set up database diagramming on a SQL Server 2012 database must be
a member of the sysadmin fixed server role or the db_owner role for each database
they want to configure:
1. From Object Explorer in SSMS, expand the database you want to configure.
4. When you open the database diagrams, SQL Server 2012 automatically
upgrades them.
For details about upgrading database diagrams, see Upgrade Database Diagrams from
Previous Editions (Visual Database Tools) (http://msdn.microsoft.com/en-
us/library/ms190628(v=sql.110).aspx) in SQL Server 2012 Books Online.
After an in-place upgrade, SQL Server 2012 will preserve your settings in SSMS.
However, in a side-by-side upgrade, you will need to customize the tools to have the
same functionality as before. This includes:
Enabling or disabling services and features. For safety, only selected services and
features are enabled by default after an upgrade.
Conclusion
SQL Server 2012 provides many valuable new features and enhanced functionality in
the management tools area. You can minimize the risks involved with an upgrade to
SQL Server 2012 and gain confidence by following these practices, understanding the
changes made to the management tools, and preparing for an effective upgrade.
Additional References
For an up-to-date collection of additional references for upgrading SQL Server 2012’s
management tools, see the following links:
o For log shipping upgrade information, see About Log Shipping (SQL
Server) (http://msdn.microsoft.com/en-
us/library/ms187103(v=sql.110).aspx).
For full-text upgrade information from SQL Server 2008/2008 R2, see Chapter 6,
"Full-Text Search." For information about upgrading from SQL Server 2005, see
Upgrade Full-Text Search from SQL Server 2005 (http://msdn.microsoft.com/en-
us/library/ms142490(v=sql.110).aspx) in SQL Server 2012 Books Online.
For SQL Server Express upgrades, see Chapter 8, "SQL Server Express."
Upgrade Considerations
Before upgrading from SQL Server 2005/2008/2008 R2 to SQL Server 2012, you need to
address the following considerations.
Make sure that you have a valid backup of all the databases participating in the
upgrade process. For backup details, see Chapter 1, "Upgrade Planning and
Deployment."
Only instances of SQL Server 2005 Service Pack 4 (SP4) or later versions,
instances of SQL Server 2008 SP2, and SQL Server 2008 R2 SP1 can be upgraded
to SQL Server 2012. For comprehensive information about which versions and
editions can be upgraded, see Supported Version and Edition Upgrades
(http://msdn.microsoft.com/en-us/library/ms143393(v=sql.110).aspx).
On a server that contains multiple legacy instances of the SQL Server Database
Engine, you must upgrade each instance individually. Upgrading one instance
has no effect on other instances on the same server. From the SQL Server 2012
You cannot perform a direct, in-place upgrade from a 32-bit edition of SQL
Server 2005/2008/2008 R2 to any 64-bit edition of SQL Server 2012. However,
databases from a legacy 32-bit edition can be restored on or attached to a 64-
bit edition of SQL Server 2012, and they will be automatically upgraded. For
more information about this process, see Chapter 1, "Upgrade Planning and
Deployment."
Note: Be aware of significant tool upgrade issues in upgrading to SQL Server 2012.
For comprehensive information about how to upgrade SQL Server tools, see
Chapter 2, "Management and Development Tools."
SQL Server 2012 has multiple hardware and software requirements that you must
consider when you perform an in-place upgrade because you might have to update
your operating system service pack or install or upgrade other operating system
components. For a complete list of requirements, see Hardware and Software
Requirements for Installing SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143506(v=sql.110).aspx).
Full-Text Search
SQL Server 2008 added numerous improvements to full-text search, including the
following:
Stop lists
Thesaurus improvements
For Information on how to upgrade full-text search to SQL Server 2012, see Chapter 6,
"Full-Text Search."
Versions
As mentioned previously, you can upgrade the following versions to SQL Server 2012:
You can also upgrade SQL Server 2012 RC0 to SQL Server 2012. For more information
about versions that you can upgrade, see the "Upgrade Considerations" section later in
this chapter.
Components
You can upgrade the Database Engine component, including SQL Server Agent, to SQL
Server 2012. You can also upgrade the management tools, full-text search, Analysis
Services, and Reporting Services components. For more information about each of
these topics, see the following chapters in this guide:
Editions
There are multiple in-place upgrade paths available to you, depending on the edition
of SQL Server that you are upgrading from. Generally, you can upgrade to an edition
equal to or later than your current edition. For example, you can upgrade from SQL
Server 2005 Standard to SQL Server 2012 Standard, Enterprise, or Business Intelligence
Edition.
When you upgrade editions in-place, you must maintain the same processor
architecture type. There is no support for upgrading from a 32-bit edition to a 64-bit
edition or from X64 to IA-64 or vice versa. If you have to upgrade to a different
processor architecture, you must perform a side-by-side upgrade. For a complete
Note also that SQL Server 2012 is not supported on Windows 2003 and earlier
operating systems. For a complete list of supported operating systems, see Hardware
and Software Requirements for Installing SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143506(v=sql.110).aspx).
Cross-Language Support
There is broad support for localization within SQL Server 2012. The US English version
of SQL Server 2012 is supported on all localized versions of supported operating
systems. If you are running a localized version of SQL Server 2005/2008/2008 R2, you
can perform an in-place upgrade to SQL Server 2012 as long as the target instance and
operating system are of the same language as your original SQL Server instance. You
can run a localized instance of SQL Server 2012 on English-language versions of
supported operating systems by using the Multilingual User Interface Pack (MUI) and
verifying that the following operating system settings match the language of SQL
Server to be installed:
For more information about cross-language support, see Supported Version and
Edition Upgrades (http://msdn.microsoft.com/en-us/library/ms143393(v=sql.110).aspx).
Versions
Although SQL Server 2000 and earlier versions are not directly upgradeable to SQL
Server 2012, there are options available to upgrade these databases indirectly. For an
in-place upgrade, you can upgrade the SQL Server 2000 instance to SQL Server
2005/2008/2008 R2, and then to SQL Server 2012.
Instances of SQL Server 2005 with service pack levels less than SP4 cannot be upgraded
in-place. However, individual SQL Server 2005 databases can be upgraded by using the
side-by-side upgrade model, even if SQL Server 2005 is at the RTM level.
Some components have either been deprecated or removed in SQL Server 2012. For
example, Notification Services was removed from SQL Server 2008 R2 and therefore is
not available in SQL Server 2012. In addition, Data Transformation Services (DTS) was
replaced by SQL Server Integration Services (SSIS). For more information about DTS
and SSIS, see Chapter 17, "Integration Services."
Evaluation Editions
Although Microsoft has made a great effort to support as many in-place upgrade paths
as possible, you cannot upgrade SQL Server 2005/2008/2008 R2 Evaluation Editions to
SQL Server 2012. For more information, see Supported Version and Edition Upgrades
(http://msdn.microsoft.com/en-us/library/ms143393(v=sql.110).aspx).
Platforms
When you perform an in-place upgrade, you must upgrade to the same processor
architecture. For example, you cannot upgrade from a 32-bit edition of SQL Server
2005 to a 64-bit edition by using the in-place upgrade method. However, you can
upgrade to a different processor architecture by using the side-by-side upgrade
method.
Cross-Language Support
Upgrading across localized versions of SQL Server is not supported. For more
information, see Supported Version and Edition Upgrades in SQL Server 2012 Books
Online (http://msdn.microsoft.com/en-us/library/ms143393(v=sql.110).aspx).
In-Place Upgrade
An in-place upgrade is the fastest and easiest upgrade method because it upgrades all
system and user databases and settings for you. In addition, you do not have to update
client applications to connect them to a new instance of the relational Database Engine.
However, an in-place upgrade is an all-or-nothing approach. In the unlikely event that
an in-place upgrade of the relational Database Engine fails, you cannot quickly roll back
to SQL Server 2005/2008/2008 R2.
1. From the installation media, run the repair option in an attempt to fix the
instance. If this does not work, go to Step 2.
2. Uninstall the corrupted SQL Server 2012 instance that was created during the
failed upgrade attempt.
4. Reinstall the earlier version of SQL Server (SQL Server 2005/2008/2008 R2).
5. Reinstall any required SQL Server service packs to your legacy SQL Server
instance.
Be aware that downtime will be required if you must roll back an in-place upgrade.
Side-by-Side Upgrade
With a side-by-side upgrade, the SQL Server 2012 relational Database Engine is
installed as a second instance and the original SQL Server 2005/2008/2008 R2 relational
Database Engine remains in place. Then you move or copy one or more legacy user
databases to the SQL Server 2012 instance (each moved database is automatically
upgraded).
A side-by-side upgrade can require much more effort than an in-place upgrade. In an
in-place upgrade, SQL Server 2012 Setup makes sure that the new SQL Server 2012
instance has the same name as the old instance and automatically preserves server
configuration and server objects, such as logins, SQL Server Agent jobs, and so on. In a
side-by-side upgrade, you must perform all those tasks yourself, either manually or
through scripting techniques.
With a side-by-side upgrade, you either install the SQL Server 2012 relational Database
Engine as a new named instance on the same server or on a new server as either the
default instance or a named instance.
Warning: A relational database that was upgraded to SQL Server 2012 cannot be
restored or attached to an earlier version of SQL Server. You could extract the data
out of the SQL Server 2012 instance and import it to the legacy instance. Whatever
the case, if an in-place upgrade fails (perhaps because of a persistent issue such as
disk corruption), you must have a verified backup of your original databases to
retrieve data from.
A side-by-side upgrade lets you continue to use the existing relational database
environment until you are ready to switch to the new one. This approach can help
maximize your ability to quickly roll back to the prior instance should any difficulties
arise. A side-by-side upgrade might also result in simpler testing scenarios because
both versions are available at the same time.
Important: If you update any data in the legacy instance of SQL Server
2005/2008/2008 R2 while you are testing an upgraded database in an instance of
SQL Server 2012, the databases will not remain synchronized. Data changes that are
made to the existing database will not be made to the upgraded database. To bring
the instance of SQL Server 2012 forward in time, you must bring the new data from
the legacy SQL Server instance forward by using some kind of data transfer, such as
data file detach and attach, transaction log backup and restore, or transactional
replication. Some of these topics are covered later in this chapter.
Note: When you install a new instance of the SQL Server 2012 relational Database
Engine and then move one or more user databases to this instance, be aware that
the following SQL Server 2005/2008/2008 R2 relational database features are
disabled by default in new installations:
SQL Mail
Named pipes
xp_cmdshell
To enable some or all of these features, configure the server properties in SQL Server
Management Studio (SSMS) or use the sp_configure stored procedure.
Important: After upgrading to SQL Server 2012, always run sp_updatestats in the
upgraded databases, to ensure optimal use of improved statistics features in SQL
Server 2012.
Backup/restore
Detach/attach
Manual schema rebuild and data export/import
Log shipping
Copy Database Wizard
Backup/Restore
You can upgrade a SQL Server 2005/2008/2008 R2 relational database by performing a
database backup of that database and then restoring it to a SQL Server 2012 instance.
You can create a database backup by using SSMS or by executing a Transact-SQL (T-
SQL) or PowerShell script. You can then restore this database backup on the SQL Server
2012 instance by using SSMS or a T-SQL script. The database metadata will
automatically be upgraded as it is restored. You may then change the compatibility
level to 110, the level for SQL Server 2012.
This side-by-side upgrade method lets you leave the legacy SQL Server relational
database online and available to users until you are ready to switch to the upgraded
database in the new instance of SQL Server. Before switching over, make sure that you
perform post-upgrade compatibility and functionality testing (described later in this
chapter) and any necessary application modifications such as connection string
changes, modifications required by the Database Engine upgrade, and T-SQL changes.
The advantage of using the backup/restore method is that database backups are
usually smaller than the original database files because the database backup process
captures only actual data, not reserved but unused database space. In addition, only
the tail of the transaction log is backed up instead of the whole log file. This decrease
in file size usually makes any file transfer over the network faster than trying to transfer
the original data and log files. You can also use third-party utilities to compress the
backup before transferring it over the network.
One drawback to the backup/restore method is that if the backup is made to the local
disk instead of offline to other storage, the destination SQL Server will need additional
disk space to accommodate the backup file in addition to the original database files.
Detach/Attach
You can upgrade a SQL Server 2005/2008/2008 R2 database by detaching the database
from its current instance, moving or copying the underlying data and log files, and then
reattaching those data and log files to a SQL Server 2012 relational database instance.
The database will automatically be upgraded as it is attached. If you copy the data and
log files, you can reattach the original data and log files to the existing instance of SQL
Server with only minimal disruption to the availability of the databases to be moved.
The detach/attach upgrade method has the safety advantage in that the current
databases remain available until you are ready to switch over after you perform post-
upgrade compatibility and functionality testing and any necessary application
modifications (e.g., connection string changes, modifications required by the Database
Engine upgrade, T-SQL changes).
Note: In many SQL Server databases, a significant amount of unused space may be
reserved in the data and transaction log files. This is by design to minimize how
often a data file must expand as data is added. However, if you plan to detach a
SQL Server database of any version and copy or move it to another location to be
reattached, you will be moving this empty space together with your data. This
increases the time that is required to complete the upgrade process.
Important: During a side-by-side upgrade, if you allow data updates to the SQL
Server 2005/2008/2008 R2 instance while you are testing an upgraded database in a
SQL Server 2012 instance, the databases will not remain synchronized. Data changes
that you make to the existing database will not be made to the upgraded database.
(This is true not only for the detach/attach method but also any of the other
methods discussed in the “Side by Side Upgrade” section.) You must perform
another detach/attach upgrade of the database when you are ready to switch to
SQL Server 2012. As with all upgrade methods, make sure that you have reliable
When you move a very large database (VLDB) from one instance to another on the
same server, the detach/attach method can have the advantage of requiring less disk
space than some other upgrade methods if you reuse underlying data and log files
instead of copying them. On systems that use a SAN disk configuration, you can detach
the SAN volume from the older instance of SQL Server and then present it to the
instance of SQL Server 2012. These options will save disk space and might save
database administrators (DBAs) from having to move the database files over the
network. But they will also eliminate the ability to roll back if the relational database
upgrade should fail for any reason.
With a SAN disk configuration, you can also clone the disk volume while the original
SQL Server relational database is online and then recreate that clone on another disk
array, which you can then attach to the SQL Server 2012 relational database instance
for upgrade. DBAs with a SAN disk configuration should meet with their disk engineers
to discuss possible methods for moving the database files without having to perform a
copy over the network and without attaching the original files if possible.
Caution: For rollback purposes, you should create a copy of the relational database
file (or perform a backup) before attaching it to a new relational database instance.
After you have attached a relational database file to SQL Server 2012, you cannot
reattach it to an earlier version of the SQL Server relational Database Engine.
Most DBAs do not choose this method for upgrading their relational databases
because it is primarily a manual process and provides few advantages over the side-by-
side upgrade methods previously discussed. However, it does leave the current
relational database online and lets you schedule the upgrade at a convenient time,
Log Shipping
You can use log shipping to make a side-by-side relational database upgrade easier
with minimal downtime. You can log ship from a legacy database on one instance to a
target database on SQL Server 2012 and then fail over the log shipping as the final
upgrade step. For more information about this alternative, see the "Methods for New
Hardware and Side-by-Side Upgrades" section in Chapter 4, "High Availability."
SMO. This approach is similar in concept to the manual schema rebuild and data
export/import upgrade method we looked at earlier. It uses SMO to read the
definition of each database object in the relational database being upgraded,
without taking it offline, and then recreates each object in the destination
database. It then creates and executes an SSIS package to transfer the data from
the source table to the newly created destination table, recreating indexes and
metadata.
Each approach within the Copy Database Wizard method lets you automate and
schedule the upgrade process at a convenient time. Each approach also lets you select
one or more of the following additional object types to upgrade:
Logins
You should look at the most important SQL Server 2012 upgrade issues—including
deprecated and discontinued functionality, changes that might prevent an upgrade,
and changes in feature behavior that might require modifications—whether detected
by Upgrade Advisor or not. For a complete list of backward-compatibility issues, see
Backward Compatibility (http://msdn.microsoft.com/en-
us/library/cc280407(v=sql.110).aspx). For a complete list of the Database Engine
upgrade issues that Upgrade Advisor detects, see the "Database Engine Upgrade
Issues" topic in the SQL Server 2012 Upgrade Advisor Help file.
Deprecated Features
There are some features in SQL Server 2012 that are marked for removal in the next
version of SQL Server. After you upgrade, you should remove the usage of these
features from existing applications and avoid them in new development work. For a
complete discussion of deprecated features in the SQL Server 2012 relational engine,
see Deprecated SQL Server Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/cc707789(v=sql.110).aspx).
Discontinued Functionality
Several features from earlier versions of the SQL Server Database Engine are not
supported in SQL Server 2012, so you must use replacement features for these. The
following link lists the discontinued features that you will most likely encounter as well
For a complete list of discontinued features in SQL Server 2005/2008/2008 R2, see the
following topics in SQL Server Books Online:
Breaking Changes
Some settings will prevent the SQL Server 2012 Setup program from starting the
upgrade process for the Database Engine. If one of these issues is encountered, the
upgrade process will stop, and the legacy system will remain in place. Upgrade Advisor
will discover each issue that Table 1 lists.
If you are performing a side-by-side upgrade, you must correct only the "username
sys" and the "duplicate index names" issues on the legacy system. SQL Server 2012 will
prevent you from applying any of the other settings, such as using a database ID of
Some additional issues will prevent you from upgrading a SQL Server 2005/2008/2008
R2 database to SQL Server 2012. You must resolve these issues before you start an
upgrade, or the upgrade will fail. Table 2 lists the most likely issues of this kind
together with the recommended corrective action.
For a complete list of breaking changes in SQL Server 2005/2008/2008 R2, see the
following:
Behavior Changes
SQL Server 2012 has some behavior changes that might require you to take corrective
action after the upgrade is complete. For more information, see Behavior Changes to
Database Engine Features in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143359(v=sql.110).aspx).
Important: Backward compatibility with earlier versions was a high priority in SQL
Server 2012, so in most cases, applications will behave as they did before the
upgrade.
For a complete list of behavior changes in SQL Server 2005/2008/2008 R2, please
review the following topics:
Important: For any critical database, you should perform a test run of a side-by-
side upgrade to enable extensive application testing before you perform an actual
upgrade visible to the online application. This best practice lets you perform any
necessary modifications to the application environment in the test environment for
verification. Performing a test upgrade can help prevent an unnecessary rollback to
the earlier version.
1. Verify that you have met the SQL Server 2012 hardware and software
requirements at Hardware and Software Requirements for Installing SQL Server
2012 (http://msdn.microsoft.com/en-us/library/ms143506.aspx). If you do not
meet these requirements, the System Configuration Checker (SCC) part of the
SQL Server Setup program will detect it and not permit Setup to continue.
2. Run SQL Server 2012 Upgrade Advisor to analyze legacy SQL Server
2005/2008/2008 R2 relational engine components, as the following series of
figures shows.
a. First, specify the legacy server name to be analyzed and, for our purposes,
select the SQL Server component, as Figure 1 shows. If you want to verify the
compatibility of other components, you can select them also.
c. Figure 3 shows the next Upgrade Advisor window, which lets you select one
or more databases to analyze. You also have an option to analyze specified
trace files and SQL batch files to help identify any T-SQL code that might not
port well to SQL Server 2012.
d. After Upgrade Advisor finishes its analysis, review the generated report.
Figure 4 shows an example of the upgrade issue report, which lists items to
address before you start an upgrade in addition to some items to address
after the upgrade. Verify that all pre-setup issues are resolved and that you
have a plan for all post-setup issues.
3. Back up all system and user databases to make sure that you can roll back the
upgrade if it is necessary.
4. Run DBCC CHECKDB on all databases to make sure that they are in a consistent
state.
5. Configure the system databases for autogrow and make sure that they have
sufficient hard disk space. Additional disk space is required for the system
databases in SQL Server 2012 because of changes in system database schema.
You can turn off autogrow after the upgrade is complete.
6. Make sure that each user database is set to autogrow and that the PRIMARY
filegroup of each user database has sufficient disk space. Additional disk space is
required to allow for the additional space that is required for the PRIMARY
filegroup when you install SQL Server 2012. You can turn off autogrow after the
upgrade is complete.
7. Make sure that the log file for each user database is set to autogrow and has
sufficient additional disk space. Additional space is required by transaction log
9. Disable all startup procedures because they might block the upgrade process.
You can re-enable the disabled startup procedures after the upgrade is
complete.
10. Disable all trace flags before upgrading to SQL Server 2012. Some SQL Server
2005/2008/2008 R2 trace flags may not exist in SQL Server 2012, and some trace
flags may have different functionality in SQL Server 2012. If you use trace flags,
you should verify each one after the upgrade to make sure there have been no
changes before you enable any previously used trace flags.
11. If your systems are using SQL Server replication, stop replication and make sure
that the replication log is empty.
12. Prune backup history tables in the msdb database to save time during the
upgrade. (Very large backup history tables can slow down the upgrade process.)
13. Exit all applications, including all services that have SQL Server dependencies.
Upgrades might fail if local applications are connected to the instance being
upgraded.
1. Run Upgrade Advisor to analyze the database(s) you want to upgrade, as shown
earlier in Figures 1 through 4. Then review the generated report to verify that
you have addressed all issues that must be resolved before the upgrade and to
ensure you understand the upgrade issues that you must resolve after the Setup
program is complete.
2. Run DBCC CHECKDB on the databases to be upgraded to make sure that they
are in a consistent state.
4. Make sure that the log file for each user database is set to autogrow and has
sufficient additional disk space. Additional space is required by transaction log
files of user databases. You can turn off this option after the upgrade is
complete if it is required by your application or database maintenance plan.
6. Make sure that you have current backups of the databases that you are
upgrading by using the BACKUP DATABASE command, and verify their validity
by using RESTORE VERIFY ONLY before you start the upgrade process. If you use
the detach/attach method, you should make sure that you copy instead of move
the data files so that in the unlikely event something should go wrong, you can
quickly and easily reattach your data files on the original SQL Server
2005/2008/2008 R2 instance.
Performing an Upgrade
After thoroughly preparing to move your SQL Server 2005/2008/2008 R2 relational
Database Engine to SQL Server 2012, you are ready to perform the upgrade. Here are
the steps for performing an in-place upgrade and a side-by-side upgrade.
3. Select SQL Server Database Services and any other desired components, such as
Workstation Components, SQL Server Books Online, and Development Tools.
Note: The in-place upgrade process automatically upgrades all system and user
databases.
Note: In some cases, you might want to copy the system databases, including the
master database, from the source SQL Server 2005/2008/2008 R2 instance to the
SQL Server 2012 instance before transferring user databases. For more information,
see Move System Databases (http://msdn.microsoft.com/en-
us/library/ms345408.aspx).
Next, you can upgrade the SQL Server 2005/2008/2008 R2 user databases by following
the steps associated with the side-by-side upgrade method that you chose.
Take the following steps to upgrade a user database by using the backup/restore
upgrade method:
2. Use SSMS to connect to the SQL Server 2012 relational database instance to
which you want to restore the legacy relational database.
3. Restore the relational database from the backup file, changing the database or
file names and locations as necessary.
Take the following steps to upgrade a user database by using the detach/attach
upgrade method:
2. Copy the detached data file(s) and log file(s) to the new server.
3. Attach the copied data and log files to the SQL Server 2012 instance by using
SSMS or the CREATE DATABASE T-SQL statement with the FOR ATTACH or FOR
ATTACH_REBUILD option.
4. Optionally, if you copied the original data and log files, reattach the original data
and log files to the previous instance of SQL Server 2005/2008/2008 R2.
Important: You must manually move or transfer the master and msdb database
objects (e.g., logins, jobs, alerts) to the SQL Server 2012 instance from the legacy
server.
Take the following steps to upgrade a user database by using the Copy Database
Wizard upgrade method:
1. Make sure that you have the required permissions on the appropriate servers.
b. For the SMO approach, you must be a database owner for the source
database and must either have been granted the CREATE DATABASE
permission or be a member of the dbcreator fixed server role on the
destination server.
b. For the SMO approach, active connections are allowed because the database
is never taken offline.
4. Specify the name of the target database if different from the source database.
5. Specify other objects to be moved, such as logins, shared objects from the
master database, jobs, maintenance plans, and user-defined error messages.
6. Specify a schedule for the copy or move operation if you want it scheduled for a
later time.
7. If you are not a member of the sysadmin fixed server role, you must specify a
SQL Server Agent Proxy account that has access to the SSIS package execution
subsystem. For information about how to create a proxy account, see How to:
Create a Proxy (SQL Server Management Studio) (http://msdn.microsoft.com/en-
us/library/ms190698(v=sql.105).aspx).
Important: You must manually move or transfer the master and msdb database
objects (e.g., logins, jobs, alerts) to the SQL Server 2012 instance from the legacy
server.
Post-Upgrade Tasks
You should take the following actions after you upgrade a relational database to SQL
Server 2012 to make sure that the upgrade ran successfully and to configure the
relational Database Engine in addition to the upgraded relational database.
In-Place Upgrade
For in-place upgrades, execute the following steps:
1. Apply available service packs or updates to the upgraded SQL Server 2012
instance.
2. Reregister your servers. For information about registering servers, see Create a
New Registered Server (SQL Server Management Studio)
(http://msdn.microsoft.com/en-us/library/ms188231(v=sql.110).aspx).
3. Configure the SQL Server installation. To reduce the attackable surface area of a
system, SQL Server selectively installs and enables key services and features.
Therefore, you must configure the new instance to meet your specific needs.
1. Configure or update server logins on the new instance and database users in the
upgraded database.
5. Update connection strings at clients so that they can connect to the new
instance, unless you are replacing the old server with a new server that has the
same identity.
1. Execute DBCC CHECKDB WITH DATA_PURITY to check the database for column
values that are not valid or are out of range. After you have successfully run
DBCC CHECKDB WITH DATA_PURITY against an upgraded database, you do not
have to specify the DATA_PURITY option again because SQL Server will
automatically maintain "data purity." This is the only DBCC CHECKDB check that
you must run as a post-upgrade task.
3. Update statistics on all databases after you upgrade them. Execute UPDATE
STATISTICS in user-defined tables in SQL Server databases.
4. Repopulate full-text catalogs. For information about this task, see Chapter 6,
"Full-Text Search."
5. Make sure that the relational databases are working correctly by executing a
sample set of queries.
Full-Text Upgrade. Any databases that were marked full-text enabled or disabled
before the upgrade will maintain that status after the upgrade. After the upgrade, the
full-text catalogs will be rebuilt and populated automatically for all full-text-enabled
Changes in Caching Behavior. There are changes in caching behavior among SQL
Server 2005/2008/2008 R2 and SQL Server 2012. For more information see Execution
Plan Caching and Reuse (http://msdn.microsoft.com/en-us/library/ms181055.aspx).
When the USE PLAN hint is specified directly in a query, take the following steps:
3. If the optimizer does not select an appropriate plan, tune the query and then
consider specifying the USE PLAN hint with the desired query plan.
When the USE PLAN hint is specified in a plan guide, follow these steps:
2. If the plan guide is not valid, drop the plan guide. If the optimizer does not
select an appropriate plan, tune the query and then consider specifying the USE
PLAN hint with the query plan that you want.
Finding and Tuning Similar Queries by Using Query and Query Plan Hashes
(http://msdn.microsoft.com/en-us/library/cc645887.aspx)
SQL Server 2012 also includes many improvements to query plans on partitioned tables
and indexes. They include an improved algorithm for identifying the best parallel
execution strategy, an improved seek mechanism for partitioned tables, and additional
information displayed in the query execution plans for queries that include partitioned
tables. For complete information about these improvements, see Query Processing
Enhancements on Partitioned Tables and Indexes (http://msdn.microsoft.com/en-
us/library/ms345599.aspx). Also see Behavior Changes to Database Engine Features in
SQL Server 2012 (http://technet.microsoft.com/en-
us/library/ms143359(v=sql.110).aspx) for the latest information about plans over
partitioned tables.
Issue Description
Network protocols The only supported network protocols are now TCP/IP Sockets, named pipes, VIA,
and shared memory. If your application is using network protocols that are not in
this list, it will not work.
SQL-DMO-based If your application uses DMO-based management APIs, you must upgrade to either
WMI providers the SMO-based management APIs or the WMI for Configuration management
APIs. SMO is written by using the managed code APIs. WMI for Configuration is
written by using unmanaged code APIs.
DB-Library Before SQL Server 7.0, the primary mechanism for client/server communication
between SQL Server and client applications was DB-Library. Although DB-Library
was still included with SQL Server 2000, Microsoft announced that it was being
deprecated. With the release of SQL Server 2005, DB-Library support is limited to
SQL Server 7.0 features.
Network By default network communication might be disabled in new SQL Server 2012
communication installations and must be enabled through the Server Network Communication
tool.
Conclusion
The SQL Server 2012 relational Database Engine offers many improvements over SQL
Server 2005, 2008, and 2008 R2, as well as significant new features. The first step in
taking advantage of these improvements is upgrading your existing databases to SQL
Server 2012. As this chapter explains, you have two main choices for upgrading legacy
SQL Server 2005/2008/2008 R2 databases to SQL Server 2012: in-place or side-by-side.
If you select the side-by-side method, you have additional choices to make, including
whether to use the backup/restore, detach/attach, or Copy Database Wizard method—
or another alternative. Each of these options has its pros and cons, so you need to
make sure that you understand your organization’s current configuration and needs.
Then you have to prepare thoroughly and test extensively to make sure that an
upgrade is successful and ready for production.
Additional References
For an up-to-date collection of additional references for upgrading SQL Server 2012,
see the following links:
Preparing to Upgrade
Before looking at how to have highly available upgrades to SQL Server 2012, this
section details the types of upgrades possible and how each should be thought about
from the perspective of availability. The three main upgrade options are an in-place
upgrade, a side-by-side upgrade, and going to a separate server or new cluster. For a
detailed discussion of upgrade types and their advantages and disadvantages for
different scenarios, see Chapter 1, "Upgrade Planning and Deployment."
During an upgrade, the original instance of SQL Server and its databases remain
available until the Database Engine upgrade process begins. This means that during the
checks and file copy operations, you can use the instance and allow connections.
However, the upgrade process does not let you know when it starts processing the
database or that other objects might be in use. It is therefore always best to ensure that
all connections are terminated and transactions are complete before the setup or
upgrade process has started. You do not want to run the risk of someone issuing a
query after a final backup has already been performed, thus invalidating it.
In-Place Upgrade
An in-place upgrade uses SQL Server 2012 Setup to directly upgrade an instance of
SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, or pre-release SQL Server 2012
to SQL Server 2012 RTM on the same server or Windows Server Failover Clustering
(WSFC) cluster if you have already deployed the supported version of SQL Server for
upgrading on a supported operating system version (Windows Server 2008 Service
Pack 2 (SP2) or later or Windows Server 2008 R2 SP1 or later). The "Upgrade Strategies"
section in Chapter 1 describes the in-place upgrade process in detail.
The more important consideration with an in-place upgrade is that the installation of
SQL Server may not be usable should the process fail for whatever reason. This worst-
case scenario would need to be remedied by a full reinstall of Windows and SQL Server
because the file versions might be in a mixed state. After the reinstallation, you would
have to restore the databases and objects from backups and scripts. Any fallback plan
must include steps to potentially rebuild the server from scratch to the way it was
before the upgrade process started. Backup and restore is the only fallback plan, so if
pursuing an in-place upgrade, make sure that you have good backups and tested plans
for bare metal recovery.
A side-by-side upgrade on the same hardware or WSFC cluster offers slightly better
protection than an in-place upgrade because the old configuration is technically still
available if something fails. The real cost is the downtime to switch the databases to the
instance of SQL Server 2012, as the moving of data and objects to the new instance
could be handled transparently. It also means that you will incur storage costs because
you will need to account for two copies of the data. The downtime to applications and
end users could translate into minutes of downtime depending on the process used,
which is significantly lower than an in-place upgrade.
With both Windows Server 2008 and Windows Server 2008 R2, depending on what is
already deployed, you could potentially have SQL Server 2005, SQL Server 2008, SQL
Server 2008 R2, and SQL Server 2012 instances co-existing on the same server or WSFC
cluster.
Problems with a side-by-side upgrade on the same server or WSFC cluster include the
following:
You may still encounter downtime because some SQL Server 2012 components
could require a reboot to install (for example, the resource DLL for a clustered
configuration).
SQL Server 2012 is still bound by the same rules as SQL Server 2005, SQL Server
2008, and SQL Server 2008 R2 when it comes to the individual instance names.
On a single server or WSFC, there can be only one default instance. Everything
else can be a named instance. If one of the existing instances (2005, 2008, or
2008 R2) is already using the default instance, the SQL Server 2012 installation
must be a named instance. Ensure that this will not pose a problem to the
application after the upgrade is complete, otherwise the application may not be
able to connect to the new instance.
It will be very hard to go back to the previous configuration that existed pre-
upgrade. There are two main aspects to this:
For the first problem, the only way to get back to where you were would be to
SQL Server 2012 Upgrade Technical Guide 128
restore system backups or reconfigure the hardware from scratch. That will most
likely not be the issue; the issue would most likely occur if an application’s
database that now exists in SQL Server 2012 starts to exhibit some sort of issue
that would require it to be moved back to the previous version of SQL Server.
Because you cannot take a backup of a SQL Server 2012 database and restore it
to an earlier version of SQL Server, you will need to devise some other way to
extract the data, such as using BCP or SQL Server Integration Services (SSIS). Data
movement is the more trivial aspect of porting the database back. The difficult
aspect is trying to figure out what data changed. That would be a manual
process.
Using a separate server has most of the same drawbacks as a side-by-side upgrade on
the same server or WSFC cluster. Application and end-user redirection and default
versus named instances are still issues. A new wrinkle in this scenario is that although
you are using new hardware and can create a new default instance, you cannot have
two objects with the same name in the same Active Directory domain, which would
affect a clustered deployment.
For example, assume that the old standalone server name is MYSERVER with a default
instance of SQL Server 2008 R2. If a new server is deployed, the new server (and default
instance) could not use MYSERVER since MYSERVER is already used in Active Directory.
With clusters, even the instance name must be unique in the domain since it is not the
same as the name for the underlying WSFC cluster or any of the nodes. If the old
clustered instance was a default instance named MYSQLINS, you could not reuse that
name when configuring the new cluster. You can rename a clustered instance only after
the old server has been decommissioned; however, you can only rename the portion of
The reason this all matters is that some applications may be inflexible and require a
specific name to connect to. This is more glaring if the application is installed on many
desktops. The amount of work required to touch every desktop may be impossible, so
if the same name must be used but the old server cannot be decommissioned or the
same name cannot be used, other methods such as using aliases in DNS must be
considered. That type of requirement puts a burden on network administrators and is
only a patch that obscures the underlying issue.
Before allowing users to access the new SQL Server 2012 instance, you should disable
the old one so that users and applications will not accidentally connect to the wrong
server. This may not be possible if all the databases have not been migrated, but you
run the potential risk of users accessing the old environment and updating what is now
the old data. The expense and time involved to detangle that mess would be painful.
If the database is small to mid-sized, it is relatively easy to back up, copy, and restore it
in a reasonable amount of time. However, if you have a very large database (VLDB) in
the hundreds of gigabytes or terabyte range, waiting until the cutover time to start the
backup, copy, and restore process might exceed the allowed outage window. Just
copying a terabyte database could take the better part of a day (or more). That is
definitely not a highly available upgrade and will need to be accounted for in your
upgrade plan. For more information about VLDBs, see "Upgrading Very Large
Databases" in Chapter 1.
There are a few things you can do to increase the speed of the backup, copy, and
restore process:
Use backup compression (either third party or what is built into SQL Server 2008
or later) to generate backups. This shrinks the backup size (which means a
quicker copy time) and usually speeds up the backup and restore process.
Use hardware-based (i.e., SAN-based) backups to make the backup, and then
attach the backup (and restore it) using lower-level technologies that are
transparent to the hardware. This strategy assumes that the source and
destination servers are on the same storage unit. Hardware-based backups are
not an option if this configuration is not already set up. For more information,
see the "Hardware-Assisted Database Moves" section later in this chapter.
Log Shipping
The problem is that while SQL Server 2012 can restore backups from older versions of
SQL Server going back to SQL Server 2005, the log shipping features of those earlier
versions of SQL Server cannot be used to configure log shipping to SQL Server 2012.
Custom log shipping scripts (such as the scripts listed in "Additional References"
section at the end of the chapter) would need to be used.
Prepare Applications
For information about how to prepare applications for a database upgrade, see the
"Application and Connection Requirements" section in Chapter 1. Treating the SQL
Server upgrade as an isolated event that will not affect anything else is a mistake and
may cause downtime.
Update Skills
Ensuring that the database administrators are fully trained and prepared for the
upgrade will increase uptime. For information about how to make sure that those
administering or deploying SQL Server 2012 are ready, see the "Treat the Upgrade as
an IT Project" section in Chapter 1.
Make sure that the hardware you plan to use for SQL Server 2012 meets the minimum
requirements documented in the "Minimum Hardware and Software Requirements for
SQL Server 2012" section in Chapter 1, as well as in Hardware and Software
Requirements for Installing SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143506(v=sql.110).aspx) in SQL Server 2012 Books Online. When it comes
to availability, it is a bad idea to assume that the current server will meet a company's
future needs. New software generally has higher requirements. If current servers are
near capacity or exceeding it, you will be facing availability and performance issues.
These issues must be resolved prior to deployment, or they will cause a much larger
upgrade outage than necessary.
Disk Space
Disk space, or lack thereof, is one of the major causes of downtime. During the
installation of SQL Server 2012, SQL Server will tell you how much disk space is needed.
For more information, see the "Hard Disk Space Requirements (32-Bit and 64-Bit)"
section in Chapter 1. Hardware and Software Requirements for Installing SQL Server
2012 (http://msdn.microsoft.com/en-us/library/ms143506(v=sql.110).aspx) also lists
how much disk space the program files consume.
Besides accounting for the program files and system databases, follow the
recommended guidelines to account for the disk space needed during the upgrade.
The downtime spent recovering and then attempting to continue upgrading a VLDB
that failed due to lack of disk space can easily be avoided through proper planning.
You also need to size all databases and their files appropriately after the upgrade,
especially tempdb.
In addition, one of the biggest consumers of disk space will be the backups used to
initialize the upgrade in a side-by-side scenario as well as the backups made prior to
the upgrade or decommissioning. Make sure you account for this space as noted in
"Perform Database Backups" section later in this chapter and in the "Plan for Backups"
section in Chapter 1.
If you find that the plan is flawed halfway through the upgrade, it may be too late to fix
the problem (or easily adjust to it) if the problem encountered was not already known.
Finding any problems and either accounting for or correcting them before initiating the
upgrade is essential for ensuring a successful upgrade. A major goal of testing the
upgrade and fallback plans is to know approximately how long the process should take
to perform. If an unforeseen problem is encountered during the upgrade and the
fallback plan is set into motion, all that management will want to know is how long it
will take to get back to a usable state, no matter whether it is the old version or SQL
Server 2012. Without testing, it is anyone's best guess, and chances are that
management will not want to hear, "I don't know." It is also important that all plans
include application testing steps. Upgrades are not just a DBA and/or IT exercise.
Testing does not provide a 100 percent guarantee that problems will not be
encountered. There might be some differences in production that cannot be replicated
in the test environment due to configuration differences, such as not having a cluster in
a non-production environment. Performing tests against a standalone server will
validate that the databases and application work after an upgrade to SQL Server 2012,
but the upgrade process for a standalone server is different than that for upgrading a
cluster. Comprehensive testing helps mitigate such risks and reduces downtime.
Install Prerequisites
Important: If you plan on using the AlwaysOn capabilities of SQL Server 2012, it is
recommended that you install at a minimum the 4.0.2 update for .NET Framework
4.0. You should also install the hotfix noted in the Knowledge Base article "An
update introduces support for the AlwaysOn features from SQL Server 2012 to the
.NET Framework 3.5 SP1" (http://support.microsoft.com/kb/2654347), which gives
.NET Framework 3.51 all of the AlwaysOn capabilities.
SQL Server 2012’s Setup will detect what required components are missing and try to
install or enable them (depending on your operating system). The downside of that is
the install or upgrade times will increase. A way to minimize the time is to ensure that
the prerequisites are installed before you do the upgrade. If you have an outage
window prior to the upgrade, consider installing these components. For example,
putting .NET Framework 4.0 on a server should introduce minimal (if any) risk. Some of
SQL Server provides the Transact-SQL (T-SQL) DBCC CHECKDB command to check and
ensure the health of SQL Server databases. A healthy database generally ensures higher
availability. For information about using DBCC CHECKDB in conjunction with an
upgrade, see Chapter 2, "Management Tools." The problem with running a full DBCC
CHECKDB is that it generally affects a database's availability. How long it takes to run is
directly related to the size of the database. The benefits generally outweigh the
downtime, but there might be service-level agreements (SLAs) that prevent DBCC
CHECKDB from being run or that make it difficult to complete within the set window.
It is also recommended that you run DBCC CHECKDB after the database is upgraded to
SQL Server 2012 to ensure that nothing went wrong or was introduced as a result of
the upgrade. That means more downtime during the upgrade process. Although some
people might consider the downtime required to run DBCC CHECKDB before and after
the upgrade excessive, the assurance it provides might be worth the additional time.
The more important thing you can do to protect data in an upgrade is to perform
backups at the appropriate times. The "Plan for Backups" section in Chapter 1 covers
this essential topic. How many backups you need to perform depends on the point to
which the data might need to be recovered.
To minimize downtime, prepare any scripts or SSIS packages before the upgrade. In
cases where sensitive information may be stored (such as passwords), secure them
properly. Upgrades can fail when an application no longer functions properly because
an object such as a linked server is not configured.
Even if you do not use any of the high-availability technologies discussed in this
chapter, using scripts or SSIS packages for objects involved in the upgrade provides an
insurance policy in case a complete failure occurs. Having these objects scripted or
exported out of the original system could mean the difference between some
downtime and trying to track down the consultant who implemented the system years
ago to see if he or she remembers those key elements.
Chapter 6, "Full-Text Search," covers the strategies for upgrading full-text search, which
has been integrated into the Database Engine since SQL Server 2012. If upgrading from
a clustered SQL Server 2005 instance, there will no longer be a dedicated cluster
resource for full-text in the resource group with SQL Server. This is expected behavior.
For all deployments both clustered and not clustered, if you use full-text indexes, you
will have more to upgrade. Plan accordingly for the additional downtime required.
Replication
If you are upgrading from a clustered SQL Server 2005 instance, you may not have
configured replication. SQL Server 2012 automatically will install replication as a feature
even if you are not using it. For details about upgrading replicated databases, see the
"Upgrading Replicated Databases" section later in this chapter.
Service Accounts
During an in-place upgrade, Setup will not prompt you to change the existing
instance's service accounts. This means that any existing service accounts will also be
used for SQL Server 2012. Anyone who has access to those accounts and knows the
passwords will have full access to the new SQL Server 2012 instance. We do not
recommend using the existing accounts for the upgraded instances of SQL Server 2012
if that is a concern. To remedy this situation, create new domain-based service
accounts with the correct privileges on each server. After the upgrade, use SQL Server
Configuration Manager (covered in Chapter 5, "Database Security") to update the newly
upgraded services to use these new accounts.
After the upgrade, only SQL Server 2012 tools and utilities should be used to manage
SQL Server 2012 instances. This will require that the appropriate version for SQL Server
2012 is installed somewhere in your ecosystem. You may still need to manage older
versions of SQL Server, so you may need to have multiple versions of SQL Server
Management Studio (SSMS) to have the most optimal experience for a particular
version of SQL Server.
Note: When you upgrade in-place to SQL Server 2012, the SQL Server 2012 install
process might not remove the existing management tools for the legacy version of
SQL Server. After the upgrade, check to see if the old tools versions still exist and, if
necessary, uninstall them.
For additional information about upgrading failover clusters, see Upgrade a SQL Server
Failover Cluster (http://msdn.microsoft.com/en-us/library/ms191009(v=sql.110).aspx) in
SQL Server 2012 Books Online.
Table 1 shows an example of how many install processes would be executed for up to
four nodes and four instances of SQL Server.
These numbers might be surprising to some, but the installation change was
implemented with these important goals in mind: increased stability, improved
reliability, and more granular control. In terms of an in-place upgrade, the ability to
upgrade instances in a rolling fashion, one node at a time, increases application and
database availability and minimizes downtime during an upgrade. Other nodes and
their individual components as they relate to an instance can be upgraded
independently.
Windows Server 2008 SP2 mainstream support will end during SQL Server 2012’s
lifecycle. It is strongly recommended that you use Windows Server 2008 R2 SP1 (or
later) for your deployments. Check the Microsoft Support Lifecycle web site
(http://support.microsoft.com/lifecycle/#tab0) for the support dates for your country.
Note: Windows Server 8 is in beta as of the writing of this document, and no formal
support has been announced for SQL Server 2012. There are quite a few
enhancements to WSFC in Windows Server 8 that you may want to consider for
your SQL Server deployments. Watch for any formal announcements for
supportability announcements around Windows Server 8 and SQL Server 2012.
If you are going to upgrade both the hardware and operating system at the same time,
you will need to do a side-by-side upgrade to the new hardware and use your
preferred method to migrate the databases. If your current hardware is still viable and
logoed for Windows Server 2008 or Windows Server 2008 R2 (depending on the
version you are going to deploy), you cannot do an in-place upgrade when it comes to
a WSFC cluster. You will have to completely reinstall the operating system, which
means a new installation of SQL Server 2012 on top of that. For that reason alone, it is
much better to upgrade using new hardware so you have a fallback plan.
SQL Server 2012 is the first version of SQL Server to support Windows Server Core if
you are using Windows Server 2008 R2 SP1 or later. Windows Server Core is a “stripped
down” version of Windows that has no user interface, relies on the command line, and
restricts what can be run on it. It can potentially be more secure and offer other
benefits, such as reducing the amount of patches that need to be applied. It is not
possible to convert existing installations to Windows Server Core during an upgrade
unless you use completely new hardware.
Notable Changes to Both Windows and SQL Server 2012 Failover Clustering
If you are only used to clustering using Windows Server 2003, Windows Server 2008
(and later) has quite a few new features that you should become familiar with. SQL
Server 2012 also introduces a few improvements that you should be aware of.
The Windows Server 2008 (and later) failover clustering features include the following:
Starting with Windows Server 2008, a WSFC is no longer bound by the old
Windows Server Catalog and the cluster solutions defined in them. Windows
Server 2008 has a built-in process called Cluster Validation. The concept is
simple: If the hardware passes the tests, a cluster can be configured and is
considered supported as long as the hardware itself is logoed for the version of
the operating system you plan on deploying. If the validation fails, the cluster is
not considered a supported or valid cluster. It is possible to deceive Cluster
Validation because some tests can be disabled; do not do this.
Do not use this capability to cobble two or more odd pieces of hardware
together as a valid cluster. The recommendation is still to configure nodes that
are similar (i.e., same brand and type of server). The biggest change to
implementers is that they will have to rely on the other hardware vendors to
provide correct information about which drivers are certified for clusters using
Windows Server 2008.
The support policy for Windows Server 2008 and Windows Server 2008 R2 WSFC
clusters is clearly outlined in the Knowledge Base article The Microsoft Support
Policy for Windows Server 2008 or Windows Server 2008 R2 Failover Clusters
(http://support.microsoft.com/kb/943984). Similarly, you should also be familiar
with the SQL Server support policy for clusters as outlined in the Knowledge
Windows Server 2008 and Windows Server 2008 R2 failover clustering supports
multiple subnets for cluster nodes natively.
Quorum introduces the concept of a witness. There are four quorum models (up
from two in Windows Server 2003). They are:
o No Majority. This is the same as the old disk-based quorum, where the
witness disk is a single point of failure.
o Node Majority. This is the same as the old Majority Node Set quorum,
where one less than half the number of nodes rounded up can be
tolerated as a failure. So for example, two nodes have no failure tolerance,
three and four nodes can tolerate one node failure, and five nodes can
tolerate two nodes failing. Node majority is best for an odd number of
nodes.
o Node and Disk Majority. This is a combination of both the witness disk
and a majority of nodes, giving you more protection. It can tolerate the
failure of half the nodes rounded down if the witness disk is available, and
it can tolerate the failure of one less than half the nodes rounded up if
the witness is unavailable. So for example, two nodes have one-node
failure tolerance if the witness is available, but no failure tolerance if the
witness is unavailable.
o Node and File Share Majority. Similar to the Node and Disk Majority, this
uses a file share instead of a witness disk. This is a good choice for a
geographically dispersed cluster.
All disks must still be Basic disks (not Dynamic). However, GUID partition table
(GPT) disks are supported for sizes over 2 TB.
You can configure tempdb to be on the local node (for example, C:\tempdb).
The paths must be the same on all nodes. This cannot be configured during an
upgrade.
SQL Server 2012 introduces a new health check model. Instead of using SELECT
@@SERVERNAME for the “heavyweight” cluster-specific check as part of the
resource DLL, it now uses sp_server_diagnostics. You can now configure what is
being called a flexible failover policy that is based on the state of what is going
on within your instance. It may or may not trigger a failover. For more on this,
see the SQL Server 2012 Books Online topic Failover Policy for Failover Cluster
Instances (http://technet.microsoft.com/en-
us/library/ff878664%28SQL.110%29.aspx).
SQL Server 2012 introduces server message block (SMB) share support for FCIs.
This will allow you to use a SMB share to place your databases. This is not
something you will be able to configure during an in-place upgrade.
Another thing to note is that as of SQL Server 2008, full-text has been integrated into
the Database Engine. With SQL Server 2005, full-text got its own resource in the cluster,
as seen in Figure 2. After the upgrade, there will no longer be a full-text resource as
shown in Figure 3.
Tip: To install a new clustered instance and then use another method to upgrade
databases, follow the instructions in SQL Server Failover Cluster Installation
(http://technet.microsoft.com/en-us/library/hh231721.aspx).
If you are upgrading an instance of SQL Server and have another FCI already running
on that node, once the resource DLL replacement happens, you could cause the other
instance to go offline as shown in Figure 5. This is why you want to control failovers. In
this example, the instance SQL2K12RC0 was upgraded on a node where there was a
running SQL Server 2005 instance (UPGINS1\SQL2K5). This is also detected by one of
the upgrade rules as shown in Figure 6.
Figure 5: Upgrade causing an outage for another instance due to the resource DLL
The ability to fail over (or not) is controlled by the instance’s network name resource in
the WSFC cluster. Specifically, if a given node can be a possible owner of the network
name (and SQL Server was properly installed there), it can fail to that node. If a node is
not a possible owner even if SQL Server was properly installed, failover is not possible.
An example of not being able to fail over to a node is shown in Figure 7.
Figure 7: Error message noting you cannot move the FCI’s resources to another node
Here is the logic that Setup uses in an upgrade: As you upgrade nodes that do not own
the resource, once you hit 50 percent (or greater) of those nodes being upgraded,
Setup will initiate a failover automatically if you run the installer on the node that owns
the SQL Server instance, as shown in Figure 9. If you have coordinated an outage, this
will not be a problem. However, if an outage is not expected, this could cause a
problem with those expecting SQL Server to be up. Which node the instance fails over
to is controlled by the logic of the WSFC cluster. It depends on which nodes are
possible owners as well as the preferred owners as set on the SQL Server resource
group. With multiple instances and in more mission critical environments, you may
want to control this behavior yourself. You have a few methods at your disposal. The
easiest way is to modify the possible owners of the network name resource yourself.
Prior to upgrading a node that does not own the SQL Server resource, remove it as a
possible owner. Using the same tab shown earlier, deselect the node. An example is
shown in Figure 10.
To modify the possible owners for a resource using cluster.exe, you can use /listowners
to see all the current owners for the network name resource. Use /removeowner to
remove a node, and /addowner to add a node as a possible owner. To control failover
for a resource group, you would use the /move option and specify a node to move the
instance to. An example of each of these is shown in Figure 13.
To modify the possible owners for a resource using PowerShell, you can pipe the
resource through the Get-ClusterOwnerNode cmdlet to see the possible owners. To
change the possible owners, use the Set-ClusterOwnerNode cmdlet with the -Owners
parameter and list the nodes separated by commas. Unlike the cluster.exe
implementation, the list you provide will be absolute—it’s not a simple matter of
adding and removing. To control failover for a resource group, you would use the
Move-ClusterGroup cmdlet with the –Node parameter, specifying the node to which
you want to move the group. Examples of these cmdlets are shown in Figure 14.
Note: With two nodes, there is not much room to move things around so you may
incur multiple outages that need to be coordinated with the business, application
owners, and end users. This is why having another node (or more) purely dedicated
to failover gives you more flexibility.
As noted earlier, upgrading will replace the resource DLL that is shared among all
instances. Whatever node you choose to start with, you will need to move the already
running FCI on that node to the other one. This also assumes you have the capacity to
run both instances with no issues on a single node. If you do not, upgrading may be
hard to do.
SQL Server 2012 Upgrade Technical Guide 157
In this example, we will start with Instance 2 (SQL Server 2005), so that it will be failed
over to the other node. Once the failover occurs, upgrade the SQL Server 2005
instance. This will also upgrade any shared components at the same time, which would
affect the SQL Server 2008 instance. Figure 16 shows what the cluster will look like.
At this point, you have two instances running on one node, with one half upgraded. To
complete the upgrade for the 2005 instance to SQL Server 2012, it will need to be failed
over to the other node. If you are looking to upgrade both the 2005 and 2008 instances
at the same time, it may be best (especially in the interest of time) to upgrade the 2008
instance on the node that does not own the FCI. The cluster will now look like that in
Figure 17.
Figure 17: SQL Server 2008 upgraded on one node (one node completed)
Since once node is completely upgraded to SQL Server 2012, two things must happen:
1. The instances in the midst of the upgrade process must be failed over to a node
that has been upgraded in order to upgrade the internal components.
2. The binaries on the node not upgraded must be upgraded.
As noted earlier, you can control this process yourself or have Setup take care of it. If
you have reached the “tipping point” where enough of the other nodes have been
For this example, SQL Server 2005 will be upgraded first. However, as noted above,
since the resource DLL must be replaced, the 2008 instance will be affected so it is
recommended that you fail over both instances to the other node, which will upgrade
both of them. The cluster will look like the one in Figure 18, and the first node is ready
to be upgraded.
Figure 18: Manual failover of both instances to complete the internal upgrade
At this point, you have two working SQL Server 2012 instances that you can now test to
ensure that the applications work correctly before opening them up for production use.
This can be done while upgrading the instances on the node not owning the FCIs.
Technically, you may even claim that you are done if the applications are verified, but it
is always best to finish the upgrade on all nodes and test failover to ensure that
nothing has changed post-upgrade. You do not want to get into a situation where you
assumed that failover could happen, but found out weeks later that there was a
problem in the failover process.
Although this example was relatively simple, it involved possible multiple outages. If
the instances were to be upgraded at different times, one would still affect the other.
The more complex your WSFC and FCI configuration, the more challenging the
upgrade. Account for this in your planning.
Here are the tasks that you should perform before upgrading a clustered instance to
SQL Server 2012:
2. If necessary, create the security accounts in the domain for SQL Server 2012.
Because it is not possible to alter the service accounts during the upgrade, we
recommend that you change the older security accounts to SQL Server 2012-
specific accounts post-upgrade. This step is optional.
3. Make sure that there are no errors in any of the logs (including SQL Server), that
all resources can be failed over to each node, and that all names and IP
addresses can be accessed. This task may need to be scheduled for a time that
will not impact end users. The goal is to ensure that everything is working
properly in the failover cluster before you attempt to install SQL Server 2012. If
you have already validated failover at another time, it may be possible to skip
this task.
4. If you have a planned outage window prior to the actual upgrade, you may want
to consider ensuring that the prerequisites required for SQL Server 2012 are
installed on the nodes. This will shorten the time required for the upgrade
process. For example, if you are already using SQL Server 2008 R2 on Window
Server 2008 R2 SP1, the only prerequisite you should need to install would be
.NET Framework 4.0.
This section will cover the overall process and discuss some specific actions that will
occur during an upgrade of a clustered instance of SQL Server. Therefore, this section
does not include every Setup screen but rather the screens at key points in the upgrade
process. Step-by-step instructions for using the Setup program for an in-place upgrade
can be found in the topic Upgrade a SQL Server Failover Cluster Instance (Setup)
(http://msdn.microsoft.com/en-us/library/ms191295(v=sql.110).aspx) in SQL Server
2012 Books Online.
1. Nodes that are note currently owning the clustered SQL Server instance must be
upgraded first. This allows SQL Server to have a place to fail the instance over to
when the time is right. At that point, the internal upgrading of SQL Server will
occur, which is only a brief outage. This process minimizes the downtime that
you must incur from the upgrade process. To minimize the downtime involved in
the upgrade, you must upgrade all the nodes that can possibly host the instance
but do not currently own the instance that is being upgraded.
Figure 19: Message if you are attempting to upgrade the owner of the instance
2. During the upgrade process, you will first have to select which instance you are
upgrading on that node. If there is only one instance installed, you will see a
dialog box similar to the one in Figure 20. If there are multiple instances, they
will be displayed in the Installed instances table as shown in Figure 21. You can
select the instance to upgrade in the drop-down list. If there is only one instance
that is eligible for upgrade, you will not be able to select anything else in the
drop-down list.
3. As noted earlier, you will need to either enter a new Instance ID for the
upgraded instance or leave the default value no matter what version of SQL
Server you are coming from. The prefix will change to MSSQL11 before the
Instance ID. For example, if the Instance ID is MYSQLINS, it will appear as
MSSQL11.MYSQLINS on the file system.
Important: It is crucial that the Instance ID used for an instance is the same
for the upgrade of that instance on every node.
4. Before the upgrade begins, Setup will display the Cluster Upgrade Report, as
shown in Figure 22. This report shows the status of where you are in the process.
Figure 22: Initial Cluster Upgrade Report showing that nothing is upgraded
Warning: At this point, it is not possible to fail over the older SQL Server
clustered instance to the node that was upgraded. You will get the error
message shown in Figure 7. For two-node clusters, if the instance itself is not
upgraded immediately and the instance fails without any nodes for it to fail
over to, a bigger outage could occur. Time the upgrades of each node to
minimize exposure to this risk.
5. Upgrade at least half of the nodes that do not own the FCI you are currently
upgrading.
6. Once at least half of the nodes have been upgraded for an FCI, stop all traffic to
the instance of SQL Server to ensure that no one tries to access the instance
during the upgrade process. While SQL Server will only have a brief outage
during the final upgrade steps, it is always a best practice to ensure that no
changes happen during the upgrade period to ensure a consistent state before
and after.
SQL Server will be unavailable during the failover process and while the
databases are being upgraded. Sometimes there is no need to stop the traffic.
Setup will automatically handle the failover to the upgraded node. On average
this takes about 2 minutes, depending on the hardware and other
configurations.
Figure 24: Cluster Upgrade Report when the instance itself is upgraded
If anyone tries to connect to the instance during the upgrade, they will see a
message similar to the one in Figure 27.
8. When the upgrade is complete, Setup will show a final Cluster Upgrade Report,
similar to the one in Figure 28.
9. If necessary, upgrade any nodes that have not been upgraded that could own
the SQL Server 2012 instance.
The upgrade is now technically complete from a SQL Server upgrade perspective. Note
that the upgraded instance was not automatically moved back to the original node it
was hosted on. You can manually fail the resource group back to the original node by
using the proper Windows cluster administration tool for the operating system version
deployed. You should also perform the following tasks post-upgrade for each FCI:
1. Check for pending reboots and any errors in the logs to see if a reboot is
necessary on the node. Reboot as needed.
3. Ping the network name of the clustered SQL Server instance from all nodes
inside the cluster as well as outside the cluster.
4. Ping the IP address of the clustered SQL Server instance from all nodes inside
the cluster as well as outside the cluster.
5. Make sure that the compatibility level of the databases is set to 110 (if
necessary).
6. We recommend that you run all the necessary health checks including DBCC
CHECKDB to ensure the well-being of the newly upgraded databases.
7. Even if you do not plan on using availability groups immediately, enable the
feature so that they can be used later. Availability groups are enabled at the
service level and require a restart of SQL Server, which is why this is an
opportune time to perform this task. For more information, see the SQL Server
2012 Books Online topic Enable and Disable AlwaysOn Availability Groups (SQL
Server) (http://technet.microsoft.com/en-us/library/ff878259(v=sql.110).aspx).
Once all of these tasks are complete, verify that the upgrade is successful. Open the
instance for testing the applications; when those are certified, allow production use.
Clustering Installation
This section provides sample syntax for upgrading an instance via the command line.
There are two options for using the command line: either enter all the commands
directly on the same line as setup.exe, or use a configuration file. This section covers
There is one optional, but very specific parameter, that applies to failover clustering
instance upgrades: FAILOVERCLUSTERROLLOWNERSHIP. Setting a value for this
parameter controls the behavior of failover (as described above in the "Instance
Failover Behavior During the Upgrade Process" section). The three possible values for
FAILOVERCLUSTERROLLOWNERSHIP are:
0 = Will not allow failover to one of the already upgraded nodes to upgrade the
instance itself, nor will it add the node to the list of possible owners when the
upgrade is completed. You will have to do failover and modification of the
possible owners on your own.
1 = Will allow failover to one of the already upgraded nodes to upgrade the
instance itself, and will it add the node to the list of possible owners when
upgrade is completed.
2 = SQL Server determines if 0 or 1 is needed.
To use the command prompt and not a configuration file, use a slash (/) before each
option and separate with a space. For strings that might contain spaces or odd
characters, use double quotation marks. Here is an example of using the command line
to upgrade a default instance showing all output in the command window:
Here is the sample syntax for upgrading a named instance using a command file:
D:\>setup.exe /CONFIGURATIONFILE="c:\UpgradeSQL.ini"
[OPTIONS]
ACTION=UPGRADE
ERRORREPORTING=0
IACCEPTSQLSERVERLICENSETERMS=TRUE
INDICATEPROGRESS=TRUE
INSTANCEID=MSSQLSERVER2100
INSTANCENAME=MSSQLSERVER
QUIET=TRUE
SQMREPORTING=0
UPDATEENABLED=FALSE
During the upgrade, you will see what is going on with the upgrade if the QUIET (or /Q)
and INDICATEPROGRESS actions are used (such as in the examples above). A sample is
shown in Figure 30.
Figure 30: Sample output during the upgrade with a command-line process
A successful end result would look something like Figure 31. A Setup result of 0
generally means that no reboot is required. Any other status often means either an
error (which would be clearly indicated as such) or a possible reboot.
When the upgrade is complete on a node, regardless of what status you see, you
should check the Setup logs which can be found on the local node in the SQL Server
directory for the binaries. The location, assuming a C drive, would be C:\Program
Files\Microsoft SQL Server\110\Setup Bootstrap\Log. There you will find Summary.txt,
which is a summarized view of what took place. If you have errors or want to see more
detail, look at Detail.txt in the dated folder found under Log that is associated with the
upgrade. A sample Log folder is shown in Figure 33.
Tip: The command line or file execution is the same (outside of the one parameter
for failover behavior) for standalone or clustered instances. If you have a lot of
instances and nodes, scripting the upgrade will be much easier since for a single
instance, the upgrade commands will be the same. It will also save a lot of time
since you do not need to click through the UI.
In-Place Upgrade
There are two main configurations for database mirroring: high-performance
(asynchronous) and high-safety (synchronous). High-safety can also be configured with
an optional witness to allow automatic failover. The steps for both are similar and will
be combined in this section. Any differences will be explicitly pointed out.
3. Upgrade the instance containing the mirror. The mirroring session will then
synchronize. After synchronization, the mirroring session will look similar to that
shown in Figure 34, which displays it in both SSMS and the Database Mirroring
Monitor.
4. At this point, you can technically upgrade the principal but first ensure all traffic
is stopped to the database so nothing will connect to it.
5. Use SSMS or T-SQL to manually fail over the mirroring session to the instance
that was upgraded. To do this in SSMS, click the Failover button in the Mirroring
page of the Database Properties dialog box for the database mentioned earlier.
To do this in T-SQL, use the following command:
ALTER DATABASE database SET PARTNER FAILOVER
At this point, the mirroring session will be suspended as shown in Figure 35.
After the failover occurs, the mirror database will go through its upgrade process
and, once complete, will technically be ready for use.
6. If you want the now principal and former mirror to be the new principal
production server, you must get it fully ready for use. That entails tasks such as:
Synchronizing logins and ensuring that all jobs and objects residing
outside the database are restored via scripts to make the mirror usable
Optionally, you could wait until the old primary is upgraded and then fail back.
That may be advantageous since you will be able to test the failover to ensure
things are working post-upgrade, but you may not be able to tolerate the longer
outage.
Assuming the newly upgraded database will be the new principal, ensure that
the application testing is complete and then redirect all users and applications to
the upgraded instance containing the new principal (the old mirror). This will
minimize an outage because the old principal (the new mirror) will not be
available during its upgrade.
7. Upgrade the instance containing the old principal to SQL Server 2012.
8. While mirroring should automatically start in most cases, you may have to
manually re-establish the suspended mirroring session. To do this, click the
Resume button in the Mirroring page of the Database Properties dialog box, as
shown in Figure 36.
The databases will now start synchronizing the unsent log. Once synchronized,
you will see a display similar to the one shown in Figure 37.
Figure 37: Upgrade with role reversal complete for a database mirroring
configuration
9. If you have not started to use the old mirror (now principal) as the primary, test
failover by failing back to the now upgraded original primary. If you want that to
be the primary again, unless you have made changes, you hopefully will not
have to do anything detailed in Step 6.
10. If necessary, change the mode from high-safety back to high-performance using
SSMS or T-SQL. The T-SQL command to use is:
ALTER DATABASE <database> SET PARTNER SAFETY OFF
11. If necessary, add the witness back to the high-safety configuration. Follow the
instructions in the SQL Server 2012 Books Online topic Add or Replace a
Database Mirroring Witness (SQL Server Management Studio)
(http://msdn.microsoft.com/en-us/library/ms365603.aspx).
1. Install the new SQL Server 2012 instances for the principal and mirror.
2. Take a full backup of the existing SQL Server principal database and restore two
copies: one on the new principal and one on the new mirror. Use the WITH
NORECOVERY option for these backups.
3. When you are ready to upgrade, stop all traffic and end all connections to the
instance containing the principal. This will ensure that the data cannot be
updated during the upgrade.
4. If transaction logs were made after the full backup was taken, copy and restore
them on both the principal and mirror. Use the WITH NORECOVERY option.
6. Copy the tail log backup to the both new principal and mirror. Restore it on the
new principal (use the WITH RECOVERY option) and on the new mirror (use the
WITH NORECOVERY option).
7. You must get the new production server fully ready for use. That entails tasks
such as:
Synchronizing logins and ensuring that all jobs and objects residing
outside the database are restored via scripts to make the mirror usable
Running health checks (e.g., DBCC CHECKDB) to ensure the health of the
newly upgraded database
8. Configure database mirroring from the principal to the mirror. See the SQL
Server 2012 Books Online topic Setting Up Database Mirroring (SQL Server)
(http://msdn.microsoft.com/en-us/library/ms190941.aspx).
9. Test the failover from the principal to the mirror and from the mirror back to the
principal.
10. Redirect all users and applications to the new SQL Server 2012 instance
containing the principal.
Performing a role change will minimize downtime to applications and end users. Once
the secondary instance is upgraded, bringing the database online will upgrade it to SQL
Server 2012 and enable it for use. That means no traffic can access the old primary and
the newly upgraded secondary will no longer be able to accept transaction logs.
However, because log shipping does not account for the server name switch, this may
not be an option for some since the applications used may involve changing the
application configuration or possibly each desktop instead of a central connection on
an application server. In this scenario, you would also have to re-establish log shipping
from this new primary to any secondary. This work may not be trivial and must be
accounted for when deciding what course of action to take.
If you do not perform a role change, the secondary (or secondaries) will remain in a
loading state. A database upgrade is a logged operation, so once the primary database
is upgraded and the transaction logs are being copied and restored, the secondary will
be upgraded as well. Upgrading without a role change allows you to maximize your
uptime on the primary, but you will have downtime since the primary will be
completely unavailable during its upgrade to SQL Server 2012. Having said that, a
benefit of not having a role change is that the log shipping configuration will remain
intact after the upgrade.
1. Disable the log shipping copy and restore jobs on all instances containing a
secondary. The copy job will have a name like LSCopy_<source
instance>_<database name> and the restore job will have a name similar to
LSRestore_<source instance>_<database name>. An example is shown in Figure
38.
2. Disable the alert job on the monitor (if it is used) or on the secondary. It will
have a name like LSAlert_<instance name>.
5. Upgrade any other secondaries that may be participating in this log shipping
configuration.
6. You now need to apply any transaction logs generated during the upgrade of
the secondary instance. You have two options:
Manually copy over and restore all transaction log backups generated.
Use the WITH NORECOVERY option.
Re-enable the copy and restore jobs and monitor their progress until
things are caught up. Enabling the jobs is demonstrated in Figure 39. An
example of the copies and restores resuming successfully is shown in
Figure 40. This is the only scenario where a mixed version log shipping
configuration is supported.
7. On the primary, stop all incoming traffic and verify that there are no connections
to ensure that, at this point, the data cannot be changed. To do this, consider
using single-user mode.
10. It is recommended that you run all the necessary health checks, including DBCC
CHECKDB, at this point to ensure the well-being of the newly upgraded primary
database.
11. Enable the existing Log Shipping transaction log backup and alert that were
previously disabled during the upgrade window. Verify each job is working
properly. Note that when the first transaction log from the upgraded primary
database is applied to the secondary database server, it will upgrade the log
shipped secondary database to SQL Server 2012.
13. Direct all users and applications to the original primary database.
1. Disable the log shipping copy and restore jobs on all instances containing a
secondary. The copy job will have a name like LSCopy_<source
instance>_<database name> and the restore job will have a name similar to
LSRestore_<source instance>_<database name>.
2. Disable the alert job on the monitor (if it is used) or on the secondary. It will
have a name like LSAlert_<instance name>.
3. Upgrade each instance containing the secondary database. Because the log
shipped database is in a state where it can restore transaction logs, it will not be
upgraded to SQL Server 2012 yet.
4. On the primary, stop all incoming traffic to the primary and verify that there are
no connections to ensure that, at this point, the data cannot be changed.
Consider using single-user mode.
5. Disable the transaction log backup job on the primary, which will have a name
like LSBackup_<database_name>.
6. Apply any transaction logs generated during the upgrade of the secondary
instance(s). You have two options:
Manually copy over and restore all transaction log backups generated
during the secondary upgrade. Use the WITH NORECOVERY option.
Re-enable the copy and restore jobs and monitor their progress until
things are caught up, as shown earlier in Figures 39 and 40. You can also
manually start them.
7. On the current primary database, manually make a final transaction log backup
(also known as the tail of the log) using the WITH NORECOVERY option. This will
put the database in the RESTORING state. If this instance will not be the primary
again, do not use the WITH NORECOVERY clause of the BACKUP LOG command;
leave the database online. However, by using WITH NORECOVERY, this instance
Figure 41: Backing up the tail of the log and putting the original primary in a
loading state
8. Copy and restore the tail of the log using WITH RECOVERY. As part of the
restore, it will be upgraded to SQL Server 2012, as shown in Figure 42.
Figure 42: Upgraded secondary that is no longer in a loading state and now
usable
11. You must get the new production server fully ready for use. That entails tasks
such as:
Synchronizing logins and ensuring that all jobs and objects residing
outside the database are restored via scripts to make the mirror usable
Running health checks (e.g., DBCC CHECKDB) to ensure the health of the
newly upgraded database
12. Delete the old copy and restore jobs on the former secondary database as
shown in Figure 43.
14. Delete the alert job from the monitor instance or the original secondary.
15. Upgrade the original primary to SQL Server 2012. Because there is a new
primary, consider dropping the old primary database so that it will not go
through the upgrade process. This will save time during the upgrade.
16. Delete the backup job for the original primary database on the original primary
instance (the soon-to-be new secondary).
17. On the new primary (the old secondary), configure log shipping to the new
secondary (the old primary) using the instructions found in the SQL Server 2012
Books Online topic Configure Log Shipping (SQL Server)
(http://msdn.microsoft.com/en-us/library/ms190640.aspx).
2. Take a full backup of the older primary database and restore two copies: one on
the new primary and one on the new secondary. Use the WITH NORECOVERY
option.
3. When you are ready for the upgrade, stop all traffic and kill all connections to
the instance containing the primary. This will ensure that the data cannot be
updated during the upgrade.
4. If transaction logs were made after the full backup was taken, copy and restore
them on both the primary and secondary. Use the WITH NORECOVERY option.
6. Copy the tail log backup to the new primary and restore using the WITH
RECOVERY option.
7. Copy the tail log backup to the new secondary and restore using the WITH
NORECOVERY option.
8. You must get the new production server fully ready for use. That entails tasks
such as:
Synchronizing logins and ensuring that all jobs and objects residing
outside the database are restored via scripts to make the mirror usable
Running health checks (e.g., DBCC CHECKDB) to ensure the health of the
newly upgraded database
10. Redirect all users and applications to the new SQL Server 2012 instance
containing the new log shipping primary.
This option assumes that only the instance for the primary will be brand new and the
secondary will be reused and upgraded to SQL Server 2012.
1. Install the new SQL Server 2012 instance that will be used for the primary.
2. Take a full backup of the original primary database and restore it to the new SQL
Server 2012 instance using the WITH NORECOVERY option.
3. When you are ready for the upgrade, stop all traffic and kill all connections to
the instance containing the primary. This will ensure that the data cannot be
updated during the upgrade.
4. If transaction logs were made after the full backup was taken, copy and restore
them WITH NORECOVERY on the SQL Server 2012 instance. Use the WITH
NORECOVERY option. Also ensure that the secondary is caught up with its
transaction log restores.
6. Copy the tail log backup to the new primary and restore using the WITH
RECOVERY option.
7. You must get the new production server fully ready for use. That entails tasks
such as:
Synchronizing logins and ensuring that all jobs and objects residing
outside the database are restored via scripts to make the mirror usable
Running health checks (e.g., DBCC CHECKDB) to ensure the health of the
newly upgraded database
11. Redirect all users and applications to the new SQL Server 2012 instance
containing the principal.
For an up-to-date collection of additional references for upgrading log shipping, see
the Upgrade to SQL Server 2012 page (http://msdn.microsoft.com/en-
us/library/bb677622(v=sql.110).aspx).
The Distributor must be running the same version as the Publisher or a later
version.
The Publisher must be running the same version as the Distributor or an earlier
version.
Depending on the type of replication, the Subscriber versions may be restricted.
For transactional replication, the Subscriber must be within two versions of the
Publisher, which means that the oldest a Subscriber can be with SQL Server 2012
is SQL Server 2005. For merge replication, the Subscriber version can be earlier
than or equal to the Publisher.
These rules influence the order in which the instances can be upgraded and where you
will incur any potential outages. The key is the Distributor. With a single Distributor,
there will be the least downtime. If there are multiple Distributors, you will need to
coordinate to have the least impact on end users and applications.
The Distributor is the key to how much downtime will be encountered during the
upgrade. If there are multiple Distributors in the topology, there will be multiple
outages. Where possible (assuming the hardware is not out of date), performing an in-
place upgrade is recommended over installing a new instance of SQL Server and
reconfiguring the Distributor. When upgrading in an environment that has multiple
Distributors, upgrade them in order of magnitude. Do not upgrade the biggest and
most important Distributor first. Schedule the upgrades to have the least impact on the
end users and applications.
Tip: Always upgrade the Distributors first because they can push changes from a
Publisher to a Subscriber, provided that two conditions are met:
The Publisher and Subscriber are down level from the SQL Server 2012
Distributor.
The Subscriber is running a version of SQL Server supported by the SQL
Server 2012 Distributor.
In SQL Server 2012, three replication features are being deprecated: Replication
Management Objects (RMO), heterogeneous replication, and Oracle publishing. For a
full list of deprecated replication features, including features deprecated in older
versions that may affect the upgrade, see Deprecated Features in SQL Server
Replication (http://technet.microsoft.com/en-us/library/ms143550(SQL.110).aspx) in
SQL Server 2012 Books Online.
There are no breaking changes in SQL Server 2012 with regards to replication.
However, if you are upgrading from SQL Server 2005, check the SQL Server 2012 Books
Online topic Breaking Changes in SQL Server Replication
(http://technet.microsoft.com/en-us/library/ms143470(SQL.110).aspx) for breaking
changes made in SQL Server 2008 that would apply.
Behavior Changes
Other than the deprecated features and breaking changes, there are no listed behavior
changes to replication in SQL Server 2012 from where things were in SQL Server 2008
R2. If you are coming from SQL Server 2005 or 2008, review the SQL Server 2008
and/or SQL Server 2008 R2 documentation and upgrade technical guides for more
information.
In-Place Upgrade
Performing an in-place upgrade to any instance that may be participating in replication
may make sense if your hardware and underlying operating system will continue to be
supported for a SQL Server 2012 deployment. This section will cover how to perform
such an upgrade of a replication topology pointing out specific things for different
replication types where applicable.
A nice feature of any replication upgrade is that you do not need to upgrade every
component at once. As long as you stick to the rules of replication and upgrade the
components in the right order, you can upgrade over time.
1. As components are being upgraded, verify that you will have a valid topology. If
not, you may need to adjust the plans. For example, if you upgrade the
Distributor but you have SQL Server 2000 Subscribers, you may need to wait to
upgrade or get them to SQL Server 2005 so that they are at the minimum
supported level for replication. (For information about the minimum supported
levels, see the “Planning an Upgrade with Replication” section earlier in this
chapter.)
3. Stop all application and data traffic to the Publisher that will be affected during
the upgrade.
4. Ensure that all existing transactions marked for publication have been moved to
the Subscribers. If using transactional replication, run sp_repltrans on the
Publisher to get the outstanding transactions marked for publication. If there are
transactions still pending, it will look like Figure 44. Once the result set is empty,
the upgrade can begin. Check over the span of a few minutes just to be safe.
There are other places you can look to see the status of replication, such as in
Replication Monitor. Figure 45 shows that nothing is available for replicating in
Replication Monitor, whereas Figure 46 shows that there has been some recent
replication activity. Each form of replication at the Publisher can show you
whether things are moving or not. In SSMS, expand Replication then Local
Publications. For each publication, right-click and then select one of the status
options. A sample is shown in Figure 47 and its output is shown in Figure 48.
7. At this point, assuming the Publisher and Subscribers are valid for a SQL Server
2012-based topology and you do not want to upgrade those yet, you can stop
for now. If this is the case:
8. When you are ready to start upgrading again, the next component to upgrade
would be the Publisher (assuming each Subscriber's version of SQL Server is
compatible with SQL Server 2012 replication). To upgrade the Publisher:
a. If not done already, stop all traffic and end any connections to the
Publisher.
b. Following the instructions in Step 4, verify that all transactions have been
replicated.
c. If necessary, disable all replication SQL Server Agent jobs if this is being
done at a later time than the Distributor upgrade.
f. It is recommended that you run all the necessary health checks, including
DBCC CHECKDB, at this point to ensure the well-being of the newly
upgraded databases.
h. If the Subscriber will not be upgraded at this time, enable all the SQL
Server Agent jobs related to the Publisher and Distributor.
f. After the Subscriber is upgraded, enable all the SQL Server Agent jobs for
the subscription and enable all SQL Server Agent jobs on the Distributor
(if they were somehow disabled).
g. Verify that the replication is working properly and now sending what it
needs to (e.g., a transaction in transactional replication). The easiest way
to do this is to manually kick off the SQL Server Agent jobs involved in
snapshot replication and view the status using some of the methods
shown earlier in Step 4. They should reflect a successful execution.
1. As components are being upgraded, verify that you will have a valid topology. If
not, you may need to adjust the plans. For example, if you upgrade the
Distributor but you have SQL Server 2000 Subscribers, you may need to wait to
upgrade or get them to SQL Server 2005 so that they are at the minimum
supported level for replication. (For information about the minimum supported
levels, see the “Planning an Upgrade with Replication” section earlier in this
chapter.)
3. Install and configure the hardware and SQL Server 2012 instance(s) that will
participate in the replication topology.
4. Update the scripts generated in Step 2 to SQL Server 2012 and make sure that
the instance names and databases are updated to reflect their new locations.
Before updating the scripts, make copies of the originals so that the old
environment can be restored if necessary.
5. At the minimum, ensure that the existing Publisher is at a version that can
participate in the replication topology when SQL Server 2012 is added since the
Distributor must be running SQL Server 2012.
6. Stop all application and data traffic to the Publisher that will be affected during
the upgrade to ensure that the data will not be updated during the cutover.
7. Run the appropriate upgraded replication script on the new Distributor to create
the publication and distribution with your settings. At this point, the old
replication topology is still being used and you have not incurred any downtime.
8. If the Distributor is the only component being upgraded, to do the cutover, stop
all traffic and kill any connections to the Publisher to ensure that no one tries to
access it during the switch.
9. To point existing Publishers and Subscribers to the new Distributor, you must
drop the publications and subscriptions, and then recreate them pointing to the
new Distributor. If this completes successfully, replication works, and you will not
be upgrading any other components, your upgrade is complete.
10. If you are also moving the Publisher to a new SQL Server 2012 instance:
b. Re-create the publication on the new Publisher and point it to the SQL
Server 2012 Distributor.
a. To point at the new Distributor, you should have already dropped the
subscription. If not, do so now.
14. To ensure that no one will connect to the old environment, it is recommended
that you stop the services if possible on the original topology after it has been
migrated to the new instance.
Conclusion
While it is not possible to completely avoid downtime during certain points of an
upgrade to SQL Server 2012, minimizing downtime is achievable by following the
advice presented in this chapter. Preparation and testing are the ultimate defense
against failures and extended outages. Each high availability feature currently
configured on your existing instance will have different considerations and steps that
you will need to account for in your overall upgrade plan.
Table 1 provides a summary of the new security features in SQL Server 2012 and how
they might affect the upgrade process from SQL Server 2005, SQL Server 2008, or SQL
Server 2008 R2.
As you can see from this table, the new security features that might affect your upgrade
are very limited. All the other features are enhancements that you can take advantage
of after your upgrade, but they will not block or impede the upgrade process.
Note: You can also use sp_configure to set Database Engine features.
Note: There is an exception if you upgrade from SQL Server 2005 because a new
full-text search service was introduced in SQL Server 2008. Even for an in-place
upgrade, the service settings for SQL Server 2005 full-text search will not be
preserved.
SQL Server 2012 now supports Managed Service Accounts and Virtual Accounts to be
used for SQL Server services. Managed Service Accounts and Virtual Accounts provide
the isolation of their own accounts, while eliminating the need for an administrator to
manually administer the Service Principal Name (SPN) and credentials for these
accounts. These changes make the long-term management of service account users,
passwords, and SPNs much easier. For more information on these types of accounts
see Service Accounts Step-by-Step Guide (http://technet.microsoft.com/en-
us/library/dd548356(WS.10).aspx).
As a default, SQL Server 2012 uses Virtual Accounts for new installations for all services,
except the SQL Server Browser and SQL Server VSS Writer services, where LOCAL
SERVICE and LOCAL SYSTEM are the default accounts.
If you use the in-place upgrade method, you can use SQL Server Configuration
Manager to change to the new available Managed Service Accounts or Virtual Accounts
after the upgrade.
If you use a side-by-side upgrade method, you might need to adjust the default service
settings based on your needs. To change the service accounts, password, service
startup type, or other properties of any SQL Server–related service after installation, use
SQL Server Configuration Manager. In addition to changing service accounts, SQL
Server Configuration Manager changes other configurations such as permissions in the
Windows registry. Changing service accounts by using the Windows Service Control
SQL Server 2012 Upgrade Technical Guide 198
Manager is not supported. For more information, see SQL Server Configuration
Manager (http://msdn.microsoft.com/en-us/library/ms174212(v=SQL.110).aspx) in SQL
Server 2012 Books Online.
Some of these services might be optional for your instance. You can enable and disable
these services, depending on the functionality your SQL Server instance requires, by
using SQL Server Configuration Manager. You should review these new service
accounts and their security requirements before attempting an upgrade to SQL Server
2012. Use the principle that if a service is not needed, it should be disabled. You can
also enable and disable remote connections for many of the services.
For details about service accounts and services, see Configure Windows Service
Accounts and Permissions (http://msdn.microsoft.com/en-
us/library/ms143504(v=sql.110).aspx) in SQL Server 2012 Books Online.
This is a big difference to older SQL Server installations. Earlier versions created local
Windows groups for all services and used per-service SIDs only in some configurations.
For more information, see Configure Windows Service Accounts and Permissions
(http://msdn.microsoft.com/en-us/library/ms143504(v=sql.110).aspx).
In case of an in-place upgrade from SQL Server 2008 or SQL Server 2008 R2, SQL Server
Setup will preserve the ACEs for the SQL Server 2008 per-service SIDs and the local
Windows groups used by SQL Server.
In both cases, all permissions are preserved and no special actions are needed for a
successful upgrade.
As a best practice, use Managed Service Accounts or Virtual Accounts if possible and
grant as few additional privileges as possible. In cases where it is not possible to use a
Managed Service Account or Virtual Account, use a separate low-privilege user account
or domain account for each service and don’t give additional privileges directly to it.
Instead apply privileges on security groups or per-service SIDs accordingly. For more
information, see Configure Windows Service Accounts and Permissions
(http://msdn.microsoft.com/en-us/library/ms143504(v=SQL.110).aspx) in SQL Server
2012 Books Online.
Configuring Features
Through the new Policy-Based Management capability introduced in SQL Server 2008,
you can enable or disable many Database Engine features as well as options for the
Analysis Services and Reporting Services components. You can also set options for the
Database Engine by using the sp_configure stored procedure.
All these options are off by default with a new installation, although the Windows Data
Access Components (DAC) on clusters will have remote use enabled by default. The
purpose of having these options off by default is to reduce the potential attack surface
of a new installation. You can selectively enable these options as required for your SQL
Server 2012 instance.
With an in-place upgrade, all feature configurations stay in their pre-upgrade state. But
you can use Policy-Based Management to disable features that you are not using
anymore and reduce the attack surface of the upgraded instance.
Here are the Database Engine configuration features that you can set through the
Surface Area Configuration facet of Policy-Based Management:
Database Mail
OLE automation
Service Broker
xp_cmdshell
You can find out-of-the-box security best practices policies, including Surface Area
Configuration, in the SQL Server 2012 installation path in the
\110\Tools\Policies\DatabaseEngine\1033 folder. For more information about Policy-
Based Management, see Administer Servers by Using Policy-Based Management
(http://msdn.microsoft.com/en-us/library/bb510667(v=SQL.110).aspx).
If you are using SQL Trace for auditing purposes, you should consider changing to SQL
Server Audit after the update. Beside the fact that SQL Server Audit is more suitable
and reliable for security auditing and easier to manage than SQL Trace, SQL Trace is
deprecated and will be removed in a future version of SQL Server. By changing to SQL
Server Audit now, you can take advantage of its features and make the upgrade to
future versions of SQL Server easier.
SQL Server 2012 also introduces enhancements to SQL Server Audit. These
enhancements include:
A new option to fail an operation that would otherwise generate an audit event
to be written to a failed audit target
SQL Server 2012 Upgrade Technical Guide 201
A new option to cap the number of audit files without rolling over
The ability to filter audit events before they are written to the audit log
Preparing to Upgrade
After you become familiar with the new features you need to prepare for in your
upgrade plan and process, you need to understand which features have been
deprecated or discontinued in SQL Server 2012 and review the changes that could
block your upgrade or change the behavior of your applications after the upgrade.
Deprecated Features
Some security-related features are deprecated in SQL Server 2012. Although they will
continue to operate in SQL Server 2012, they will be removed in a future version of SQL
Server. These deprecated features have no immediate effect on your upgrade to SQL
Server 2012, but they will affect your upgrade to a later version. For comprehensive
information about these features, see Deprecated Database Engine Features in SQL
Server 2012 (http://msdn.microsoft.com/en-us/library/ms143729(v=SQL.110).aspx) in
SQL Server 2012 Books Online.
The deprecated security features consist primarily of system stored procedures that
have been replaced by Transact-SQL (T-SQL) commands. For example, sp_adduser and
sp_dropuser are replaced by CREATE USER and DROP USER, respectively, and SETUSER
is replaced by EXECUTE AS. These procedures are deprecated because they do not
work with user/schema separation. As soon as you take advantage of new security
commands such as CREATE USER and CREATE SCHEMA, you should also switch from
using compatibility views such as sysobjects to catalog views such as sys.objects.
Table 2 lists the deprecated security features in SQL Server 2012 and their
replacements.
To fully understand these security upgrade issues, make sure you review SQL Server
Database Engine Backward Compatibility (http://msdn.microsoft.com/en-
us/library/ms143532(v=SQL.110).aspx) in SQL Server 2012 Books Online.
Discontinued Features
A number of security features are discontinued in SQL Server 2012, and you need to
adjust your applications accordingly or they will not work properly. You can address
many of these issues before the upgrade process, but they will not block an upgrade.
Table 3 lists the security-related features that are discontinued in SQL Server 2012.
Note: If you are upgrading from SQL Server 2005, there might be features that were
discontinued in SQL Server 2008 and SQL Server 2008 R2 that could affect your
upgrade process. For a full list, see Discontinued Database Engine Functionality in
SQL Server 2008 R2 (http://msdn.microsoft.com/en-
Breaking Changes
Table 4 lists the security-related breaking changes in the database engine. As you can
see the list is quite small, but you should check if they apply to the system that you are
about to upgrade and fix them in advance.
Note: If you are upgrading from SQL Server 2005, there might be breaking changes
in SQL Server 2008 and SQL Server 2008 R2 that could affect your upgrade process.
For a full list, see Breaking Changes to Database Engine Features in SQL Server 2008
R2 (http://msdn.microsoft.com/en-us/library/ms143179(v=SQL.105).aspx) in SQL
Server 2008 R2 Books Online.
Behavior Changes
There are no security-related behavior changes in SQL Server 2012. For comprehensive
information about other changes, see Behavior Changes to Database Engine Features
in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143359(v=SQL.110).aspx) in SQL Server 2012 Books Online.
Note: If you are upgrading from SQL Server 2005, there might be behavior changes
in SQL Server 2008 and SQL Server 2008 R2 that could affect your upgrade process.
SQL Server 2012 Upgrade Technical Guide 205
For a full list, see Behavior Changes to Database Engine Features in SQL Server 2008
R2 (http://msdn.microsoft.com/en-us/library/ms143179(v=SQL.105).aspx) in SQL
Server 2008 R2 Books Online.
1. Assess the current database security. Start by assessing the security level of your
current system. Make an inventory of the security features for each legacy server,
including:
Use of xp_cmdshell
Required auditing
Since SQL Server 2008, SQL Server has enhanced SQL Server login passwords.
DBAs creating and maintaining SQL Server logins now have the ability to apply
the local Windows password policy to their SQL Server logins. If possible, you
should plan to incorporate stronger passwords and Windows-level password
policies in your SQL Server logins.
In addition, you should review applications and scripts that create new SQL
Server logins to determine whether the logic of those applications and scripts
needs to be modified to account for the new password security enhancements.
2. Back up databases. No matter what upgrade method you use, you must make
an initial backup of your databases from the server you plan to upgrade. You
should also verify the backup file or tape. Like you do for other backups, apply
the same security considerations to the backup you take before upgrading:
Apply a password to the backup, and store the backup media securely. If you
need to transport the media to a secure location, ensure that your method of
transfer is also secure and trusted.
SQL Server 2012 Upgrade Technical Guide 206
3. Review and resolve issues identified by SQL Server 2012 Upgrade Advisor. Be
sure to run Upgrade Advisor, address all blocking issues, and find solutions for
all other issues. Many of the issues might be security-related. You can find some
of these security-related issues listed in "Other Database Engine Upgrade Issues"
in the Upgrade Advisor Help topic. Chapter 1, "Upgrade Planning and
Deployment," covers using Upgrade Advisor as well as the Best Practices
Analyzer for SQL Server.
5. Determine service account security. Determine the service accounts used for
your SQL Server 2012 installation. As mentioned earlier in the "Service Account
Security" section, you do not need to grant local administrator rights to SQL
Server 2012 service accounts. Before you upgrade, you need to determine the
rights those accounts will have or let SQL Server Setup do that for you.
6. Choose an upgrade method. Make sure that the upgrade method you choose
will not compromise your security. For example, you might determine that some
data is so sensitive that you do not want it to leave the server, but you also do
not want to perform an in-place upgrade. If you have enough resources on the
server, you could perform a side-by-side upgrade on the same server. For other
security considerations for an in-place or side-by-side upgrade, see the "In-Place
Upgrade" and "Side-by-Side Upgrade" sections later in this chapter.
7. Create, document, and test the upgrade plan. Good planning is the best method
for preventing errors. Not only should you document your upgrade plan, you
should also test the upgrade steps in a test environment. If you must use
production data, ensure that the test environment is at least as secure as the
production environment. For details about planning for an upgrade, see Chapter
1, "Upgrade Planning and Deployment."
In-Place Upgrade
In SQL Server 2012, services and configuration settings are off by default unless
SQL Server 2012 Upgrade Technical Guide 207
required. During an in-place upgrade, the SQL Server 2012 Setup program will maintain
the SQL Server 2012 services until the upgrade is finished. Therefore, you are assured
that the upgrade process will not fail for those reasons.
Because an in-place upgrade occurs on the same database server, replacing the legacy
SQL Server instances with the new instances, your data remains as secure as the server.
There might be a brief time when the legacy SQL Server service has stopped before the
SQL Server 2012 Setup program can start the new SQL Server 2012 instance, and for
that duration, your data files are not being exclusively used by a SQL Server service.
Ensure that your database server's files are secured from outside users attempting to
access those files during the upgrade process.
Side-by-Side Upgrade
During a side-by-side upgrade, you install a new instance of SQL Server 2012 on a new
server or alongside the legacy instance on your current server. In this case, you should
ensure that services and configuration options are set in such a way as to guarantee
your successful upgrade. For example, the following features are off by default in a new
SQL Server 2012 installation to help reduce the attack surface of your new installation:
ad hoc distributed queries, OLE automation, and xp_cmdshell. If your new installation
requires any of these, you need to enable them by using Policy-Based Management
features or sp_configure.
When you move your data from the old instance to the new one, you must choose a
transfer method such as backup/restore, detach/attach, BCP, Data Transformation
Services (DTS), or Copy Database Wizard. In the case of the first two methods, you will
be copying files over some distance, so you must ensure the security of the copy
process and the media used in the copy.
If you use the Copy Database Wizard, be aware that your SQL Server logins must be a
member of the sysadmin fixed server role on both the source legacy SQL Server
instance and on the SQL Server 2012 destination instance. For more information about
using this wizard, see Use the Copy Database Wizard (http://msdn.microsoft.com/en-
us/library/ms188664(v=SQL.110).aspx) in SQL Server 2012 Books Online.
Note: If you are using a side-by-side upgrade method, you need to configure the
SQL Server 2012 services to match the needs of your SQL Server installation. In an
in-place upgrade, SQL Server 2012 Setup will preserve the services settings of the
SQL Server instance you are upgrading, except for the new service for full-text
search if you are upgrading from SQL Server 2005. Even for an in-place upgrade, the
1. Review service account settings. Ensure that you have enabled only the services
that you need on your upgraded SQL Server 2012 instance. Use the SQL Server
Configuration Manager tool to verify the services and settings.
2. Review configuration settings. Verify that you have the correct configuration
settings, including those that are off by default. Enable only those that are
necessary. Use the Policy-Based Management features or sp_configure to set the
correct configuration.
3. Verify service account security. Review the Windows privileges given to the
service accounts on your new SQL Server 2012 instance, and ensure that they are
the minimum required.
5. Use strong passwords. For SQL Server Authentication, require strong passwords
for all logins. Also require a strong password for the sa account, even if you are
using Windows Authentication. Finally, enable password policy checking.
6. Change Keys. Change the Service Master Key and Database Master Keys
encryption from 3DES to AES.
You might find that a combination of manual and automated testing will give you
the most confidence in the security level of your upgraded SQL Server 2012 system.
Conclusion
SQL Server 2012 delivers stronger security and new tools for easier security
management. With attention to the new, changed, and discontinued security features
we looked at in this chapter, you will be on your way to a smooth transition from SQL
Server 2005, SQL Server 2008, or SQL Server 2008 R2 to SQL Server 2012 Just be sure to
plan well for the upgrade, make sure you have a secure backup strategy, and test
extensively before and after the upgrade to make sure your system is protected and
able to take full advantage of the new security capabilities.
Additional References
For an up-to-date collection of additional references for upgrading database security,
see the following links:
Despite this change in architecture, the development team tried to maintain as much
compatibility with earlier versions as possible. In fact, although the full-text search
engine was completely rewritten, there are few changes in the query syntax model.
This chapter covers the different aspects related to full-text search that you should
consider before, during, and after the upgrade process from previous SQL Server
versions to SQL Server 2012.
For more information about the full-text architecture, see Full-Text Search (SQL Server)
(http://msdn.microsoft.com/en-us/library/ms142571.aspx) in SQL Server 2012 Books
Online.
Preparing to Upgrade
You can upgrade a relational database that is enabled for full-text search by
performing either an in-place upgrade of the Database Engine and all its databases or
by performing a side-by-side database upgrade. With a side-by-side upgrade, you use
either the backup/restore method or the detach/attach method, which we cover later in
this chapter. For information about choosing between an in-place relational database
upgrade and one of the side-by-side relational database upgrade methods, see
Chapter 1, "Upgrade Planning and Deployment."
Deprecated Features
Although there are no full-text search features that will be discontinued in the next
release of SQL Server, there are some features that will be removed in a later version.
Remember that you can use traces or the new System Monitor object
SQLServer:Deprecated Features to check which deprecated features you are using in
your applications. For more information, see SQL Server, Deprecated Features Object
(http://msdn.microsoft.com/en-us/library/bb510662(v=sql.110).aspx) in SQL Server
2012 Books Online.
For a completed list of deprecated full-text search features, see Deprecated Full-Text
Search Features in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/cc646010(v=sql.110).aspx) in SQL Server 2012 Books Online.
Breaking Changes
There is a change in the language of the name column in the catalog view
sys.fulltext_languages. It will now have the collation of the SQL Server instance. With
this change, it will be possible to join the sys.syslanguages view with the
sys.fulltext_languages view. For more information about breaking changes, see
Breaking Changes to Full-Text Search (http://msdn.microsoft.com/en-
us/library/ms143709(v=sql.110).aspx) in SQL Server 2012 Books Online.
Behavior Changes
There are several behavior changes that might require corrective action after the
upgrade is completed. Table 1 lists the most important of these changes.
For more information about the behavior changes to full-text search, see Behavior
Changes to Full-Text Search (http://msdn.microsoft.com/en-
us/library/ms143272(v=sql.110).aspx) in SQL Server 2012 Books Online.
Be aware that there is also a category of issues that either cannot be detected by
Upgrade Advisor or whose detection would result in too many false-positive results. For
a complete list of full-text search upgrade issues that Upgrade Advisor detects, review
the "Full-Text Search Upgrade Issues" topic in the Upgrade Advisor Help file.
Chapter 1 also covers running the SQL Server 2008/2008 R2 versions of the SQL Server
Best Practices Analyzer (BPA) to prepare for an upgrade.
Use System Configuration Checker (SCC) to scan the server for any conditions
that might prevent a successful installation of SQL Server 2012. For more
information, see Check Parameters for the System Configuration Checker
(http://msdn.microsoft.com/en-us/library/ms143753(v=sql.110).aspx) in SQL
Server 2012 Books Online.
Review security best practices and guidance for SQL Server. For more
information, see Security Considerations for a SQL Server Installation
(http://msdn.microsoft.com/en-us/library/ms144228(v=sql.110).aspx) in SQL
Server 2012 Books Online.
Run Upgrade Advisor on the server to determine any issues that might prevent
you from successfully upgrading. For more information, see Use Upgrade
Advisor to Prepare for Upgrades (http://msdn.microsoft.com/en-
us/library/ms144256(v=sql.110).aspx) in SQL Server 2012 Books Online.
Make sure that the filegroup associated with the base table of a full-text index
has sufficient space to accommodate the additional space that is required by
SQL Server 2012 full-text indexes.
In-Place Upgrade
For an in-place upgrade, an instance of SQL Server 2012 is set up side-by-side with the
old version of SQL Server 2008/2008 R2, and data is moved to the new version. If the
old version of SQL Server had full-text search installed, a new version of full-text search
is automatically installed.
Word breakers, stemmers, and filters. Each instance now uses its own set of
word breakers, stemmers, and filters instead of relying on the operating system
version of these components. These components are also easier to register and
configure at a per-instance level. For more information, see Configure and
Manage Word Breakers and Stemmers for Search
(http://msdn.microsoft.com/en-us/library/ms142509(v=sql.110).aspx) and
Configure and Manage Filters for Search (http://msdn.microsoft.com/en-
us/library/ms142499(v=sql.110).aspx) in SQL Server 2012 Books Online.
Filter daemon host. The full-text filter daemon hosts are processes that safely
load and drive third-party extensible components used for indexing and
querying—such as word breakers, stemmers, and filters—without compromising
the integrity of the Full-Text Engine. A server instance uses a multithreaded
process for all multithreaded filters and a single-threaded process for all single-
threaded filters.
Note: SQL Server 2008 introduced a service account for the FDHOST Launcher
service (MSSQLFDLauncher). This service propagates the service account
information to the filter daemon host processes of a specific instance of SQL Server.
For information about how to set the service account, see Set the Service Account
for the Full-text Filter Daemon Launcher (http://msdn.microsoft.com/en-
us/library/ms345189(v=sql.110).aspx) in SQL Server 2012 Books Online.
In SQL Server 2005 and earlier versions, each full-text index is located in a full-text
catalog that belongs to a filegroup, has a physical path, and is treated as a database
file. In SQL Server 2012, a full-text catalog is a logical concept—a virtual object—that
refers to a group of full-text indexes. Therefore, a new full-text catalog is not treated as
a database file that has a physical path. However, during an upgrade of any full-text
catalog that contains data files, a new filegroup is created on the same disk. This
maintains the old disk I/O behavior after upgrade. Any full-text index from that catalog
is put in the new filegroup if the root path exists. If the old full-text catalog path is
invalid, the upgrade keeps the full-text index in the same filegroup as the base table or,
for a partitioned table, in the primary filegroup.
Side-by-Side Upgrade
For a side-by-side upgrade, an instance of SQL Server 2012 is set up side-by-side with
the old version of SQL Server on the same server or another server, and you move data
to the new version.
Import. This is the default option after the setup of a SQL Server 2012 instance
and works only for SQL Server 2005 databases. If this option is enabled, SQL
Server 2012 tries to import the data in the full-text indexes without resetting or
rebuilding them and only copies the data from the old index structures to the
new one. Import is the fastest option for an upgrade. But for a set of specific
new word breakers, Microsoft cannot guarantee that your queries will return the
same results as the SQL Server 2005 version (see the "Semantic Consistency"
section later in this topic). At import time, this option does not use SQL Server
2012’s new and improved word breakers and stemmers.
Rebuild. With this option, SQL Server 2012 will rebuild all full-text indexes,
triggering a full population and using the new and improved word breakers. This
option can take significant time and could be very CPU- and memory-intensive,
depending on the number and size of your full-text indexes. This option
guarantees semantic consistency and, in some cases, specific internal
optimizations that can improve overall performance later.
Reset. The Reset option gives you more control over the overall total upgrade
time because no full-text population or rebuilding will occur. When this option is
enabled, SQL Server 2012 deletes the existing full-text catalogs. In addition, full-
text indexes are disabled for change tracking and crawls are not started
automatically. You can change this option by using the sp_fulltext_service stored
You can also change this option from SQL Server Management Studio (SSMS)
through the instance properties on the Advanced tab.
Semantic Consistency
When you import your existing full-text indexes into SQL Server 2012, the data in these
indexes is obtained by using the old word breakers and stemmers. But when you query
the new SQL Server 2012 full-text index, the full-text engine will use the new word
breakers so the results of the queries might change. This behavior is known as semantic
consistency.
SQL Server 2012 does not improve all word breakers. The following word breakers have
not changed from the earlier version so semantic inconsistency does not apply to them:
Chinese (Singapore)
Korean
Simplified Chinese
Thai
Traditional Chinese
For more information about semantic consistency, review the "Ensuring Consistent
Query Results after Importing a SQL Server 2005 Full-Text Index" section in Upgrade
Full-Text Search from SQL Server 2005 (http://msdn.microsoft.com/en-
us/library/ms142490(v=sql.110).aspx) in SQL Server 2012 Books Online.
How do you use word breakers? The SQL Server 2012 full-text search service
includes new word breakers and stemmers. These might change the results of
full-text queries from previous releases for a specific text pattern or scenario.
Therefore, how you use word breakers is important when you choose a suitable
upgrade option:
o If you care about recall accuracy and you use one of the word breakers
that were improved in SQL Server 2008, the Rebuild option is suitable.
What is the priority for bringing the server instance online? Importing or
rebuilding during upgrade takes a lot of CPU resources, which delays getting the
rest of the server instance upgraded and online. If bringing the server instance
online as soon as possible is important and if you are willing to run a manual
population after the upgrade, the Reset option is suitable.
Backup/Restore Method
The first option for doing a side-by-side upgrade is to perform a restore of a SQL
Server 2005/2008/2008 R2 full-text-enabled database in a SQL Server 2012 instance.
When you restore the database on SQL Server 2012, a new database file will be created
for the full-text catalog. The default name of this file is ftrow_catalog-name.ndf. For
example, if your catalog name is cat1, the default name of the SQL Server 2012
database file would be ftrow_cat1.ndf. If the default name is already being used in the
target directory, the new database file would be named ftrow_catalog-name{GUID}.ndf,
where GUID is the globally unique identifier of the new file.
After the catalogs are imported, sys.database_files and sys.master_files are updated to
remove the catalog entries, and the path column in sys.fulltext_catalogs is set to NULL.
Detach/Attach Method
When you attach a full-text-enabled database to SQL Server 2012, catalog files are
attached from their previous locations together with the other database files. If SQL
The state of each attached full-text catalog on SQL Server 2012 is the same as when the
database was detached from SQL Server 2005. If any full-text index population was
suspended by the detach operation, the population is resumed on SQL Server 2012
even if the full-text upgrade option is configured as Import.
By default, the full-text engine will not load components that are not signed by
Microsoft. If you are performing a side-by-side upgrade of a full-text enabled database
that has third-party filters, perform the following additional steps:
Post-Upgrade Tasks
It is a good practice to check the crawl log right after you upgrade to make sure that
the crawl is running without a problem and that the full-text population is complete.
Here are some post-upgrade tasks related to custom noise words that you might have
to perform.
If you modified your noise-word files in the previous SQL Server version, those
modifications are lost during upgrade. To re-create those updates, you must
manually re-create those modifications in the corresponding SQL Server 2012
stoplist.
If you do not want to apply any stopwords to your full-text indexes (for example,
if you deleted or erased your noise-word files in the earlier version installation),
you must turn off the stoplist for each upgraded full-text index.
Be aware that SQL Server 2012 does not create stoplists to implement noise-word files
in any upgrade scenario, so you have to create them manually. For more information,
see Configure and Manage Stopwords and Stoplists for Full-Text Search
(http://msdn.microsoft.com/en-us/library/ms142551(v=sql.110).aspx) in SQL Server
2012 Books Online.
Conclusion
Full-text search is now fully integrated in the SQL Server 2012 Database Engine, and
you upgrade full-text indexes by using the same process as for the base database. SQL
Server 2012 also provides a new Full-Text Upgrade option that lets you control how the
full-text engine should work with the indexes. By using this option, you can choose the
best approach for each scenario, maximizing the performance of the upgrade process
in addition to uptime.
Additional References
For an up-to-date collection of additional references for upgrading Full-Text to SQL
Server 2012, see the following links:
Service Broker provides queuing and reliable messaging for SQL Server by
implementing a transaction-oriented queue directly within the database. You can use
Service Broker for applications that use a single instance of SQL Server and for those
that distribute work across multiple instances. Within a single instance of SQL Server,
Service Broker provides a robust, asynchronous programming model. Database
applications typically use asynchronous programming to shorten interactive response
time and increase overall application throughput. And for applications that work across
multiple instances of SQL Server, Service Broker provides reliable messaging between
the instances and helps developers compose applications from independent, self-
contained components ("services"). Applications that require the functionality that is
available in these services use messages to interact with the services. Service Broker
uses TCP/IP to exchange messages between instances and includes features to help
prevent unauthorized access from the network and to encrypt messages sent across
the network.
Service Broker in SQL Server 2012 retains all the features and functionality from SQL
Server 2005, and there are no behavior changes that would affect an upgrade.
However, there are a few things to keep in mind for a smooth upgrade. This chapter
describes the key Service Broker considerations for upgrading from SQL Server 2005 to
SQL Server 2012.
Feature Changes
The major features for Service Broker in SQL Server 2012 (which were actually
introduced in SQL Server 2008) are as follows:
A diagnostic tool
This guide is focused on upgrade. Therefore, exploring these new features is not
discussed here. In the "Post-Upgrade Tasks" section later in this chapter, we discuss
some conversation priority changes you might want to make after your upgrade.
For information about architecting effective SQL Server 2012 Service Broker solutions,
see Planning and Architecture (Service Broker) (http://msdn.microsoft.com/en-
us/library/bb522900(v=sql.105).aspx) in SQL Server 2008 R2 Books Online. (This
documentation is not reproduced in SQL Server 2012 Books Online due to the small
number of changes in Service Broker in SQL Server 2012.)
Preparing to Upgrade
Because Service Broker is part of the SQL Server Database Engine component, you have
the same upgrade options available: in-place or side-by-side. For more information
about these options, see Chapter 1, "Upgrade Planning and Deployment". We look at
each of these upgrade methods as they relate to Service Broker later in this chapter,
but if you decide to perform an in-place upgrade, consider preparing for the move by
processing all the data in existing queues before the upgrade. You do not have to
process the data in existing queues, but doing so might reduce the resource
requirements during the upgrade.
Before you perform an in-place upgrade, back up the database, and run the following
queries to obtain the required space to upgrade Service Broker:
From the Upgrade Advisor Home screen, you can run the following tools:
The first time you use Upgrade Advisor, run the Upgrade Advisor Analysis Wizard to
analyze SQL Server components. When the wizard finishes its analysis, view the
resulting reports in the Upgrade Advisor Report Viewer. Each report provides links to
information in Upgrade Advisor Help that will help you fix or reduce the effect of the
known issues.
Database Engine
Analysis Services
Reporting Services
Integration Services
You can download Upgrade Advisor at Microsoft SQL Server 2012 Feature Pack
(http://www.microsoft.com/download/en/details.aspx?id=29065).
Once you have upgraded to SQL Server 2012, you can use the SQL Server 2012 Best
Practices Analyzer to further refine your systems. You can download the SQL Server
2012 BPA (http://www.microsoft.com/en-us/download/details.aspx?id=29302) from the
Microsoft Download Center.
64-bit Considerations
Table 1 shows the supported architectures for SQL Server 2012 Service Broker. Please
note that SQL Server 2012 no longer supports the Itanium-based architecture.
Architecture Supported
X86 (32 bit) Yes
X64 Yes
IA64 No
In-Place Upgrade
Service Broker operations do not change when a database or an instance of the
Database Engine is upgraded from previous versions of SQL Server to SQL Server 2012.
The Service Broker features available in SQL Server 2005/2008/2008 R2 have the same
behavior in SQL Server 2012.
SQL Server 2005/2008/2008 R2 databases are upgraded to SQL Server 2012 when the
following are true:
They are attached to an instance of the SQL Server 2012 Database Engine after
The instance of the Database Engine they are in is upgraded from SQL Server
2005/2008/2008 R2 to SQL Server 2012.
You do not have to process existing data/messages in the queues before the upgrade.
However, doing so might reduce the disk space required for the upgrade, as noted in
the earlier "Preparing to Upgrade" section. You can upgrade servers in any order.
Side-by-Side Upgrade
Routing
Therefore, it is important that when you perform an upgrade of Service Broker that
requires objects to be recreated via scripts, you should maintain the exact same object
Preserving Settings
is_broker_enabled
is_honor_broker_priority_on
is_trustworthy_on
You can see these settings for all databases by running the following query:
Post-Upgrade Tasks
After the upgrade to SQL Server 2012, consider performing the following Service
Broker-related tasks.
Restoring Settings
You will have to restore the following settings after the upgrade:
is_broker_enabled
is_honor_broker_priority_on
is_trustworthy_on
You can restore the settings by using the ALTER DATABASE command.
Routing Changes
If name changes are part of the upgrade process, you will probably have to change
Service Broker routing configurations after the upgrade.
If you are upgrading a SQL Server 2005 database to SQL Server 2012, conversations
continue to operate as they did in SQL Server 2005, but the system objects are built to
support conversation priorities, as follows:
The upgrade process builds the new system objects that are required to support
conversation priorities. It adds conversation priority columns to existing system
tables, views, trace events, and performance counters.
All existing messages in service queues have their priority level set to 10. This
means they will be the first messages retrieved by RECEIVE statements.
You can start to use conversation priorities in an upgraded database by doing the
following:
Conclusion
Upgrading SQL Server 2005/2008/2008 R2 Service Broker to SQL Server 2012 Service
Broker can be a straightforward process. But first, you must ensure that sufficient disk
space is available and consider the routing of existing messages or conversations. You
can implement conversation priorities after the upgrade is complete.
Express with Tools contains both the traditional SQL Server Express package and
the new LocalDB package install bits. Users can choose which one to install,
depending on their needs.
Express with Advanced Services contains the database engine, Express Tools,
Reporting Services, and full-text search.
SQL Server 2012 Express is the ideal upgrade from the SQL Server 2005/2008/2008 R2
Express Editions. It includes many features that make it a compelling upgrade
proposition from any of these previous versions.
A direct upgrade path from Microsoft Data Engine (MSDE) to SQL Server 2012 Express is
not supported. To upgrade an existing MSDE instance, you must first upgrade to a SQL
Server 2005/2008/2008 R2 Express instance and then upgrade to SQL Server 2012
Express.
LocalDB
LocalDB is a new version of SQL Server Express created specifically for developers. It is
very easy to install and requires no management, yet it offers the same Transact-SQL
You can download SQL Server 2012 LocalDB as separated package from the SQL Server
Express Edition web site
(http://www.microsoft.com/sqlserver/en/us/editions/express.aspx).
Feature Changes
SQL Server 2012 Express supports all the core database functionality that SQL Server
2005/2008/2008 R2 Express provides. This lets almost all existing database applications
work without modifications. This functionality includes support for most of the SQL
Server 2005 and SQL Server 2008 R2 features, including Common Language Runtime
(CLR) support, XQuery, dynamic management views, and user-schema separation.
In addition, SQL Server Express can rely on a set of management tools. SQL Server
Express users can use SQL Server Computer Manager to start and stop database
services. You can use SQL Server Configuration Manager to limit potential security risks
by controlling network connections and shutting down unused services. You can also
manage SQL Server Express by using SSMS Basic, which is included in SQL Server 2012
Express with Tools and SQL Server 2012 Express with Advanced Services. You can use
SSMS Basic to manage all editions of SQL Server starting with SQL Server 2000 to SQL
Server 2012.
Note: SSMS Express and SSMS Basic are different subsets of SQL Server
Management Studio. You can access a good explanation of the differences between
them in a blog post from the Customer Service and Support (CSS) SQL Support
Team (http://blogs.msdn.com/b/psssql/archive/2008/09/02/sql-server-2008-
management-tools-basic-vs-complete-explained.aspx). The blog post is related to
SQL Server 2008 Express, but the information is still compliant with SQL Server 2012
Express.
You can download SQL Server 2012 Express from the SQL Server Express Edition web
site (http://www.microsoft.com/sqlserver/en/us/editions/express.aspx).
When you are upgrading an existing 32-bit instance to a 32-bit instance, both in-place
and side-by-side upgrades are supported. In all other cases, side-by-side upgrades are
required.
English SQL Server can be upgraded to any localized SQL Server. A localized SQL Server
can be upgraded to a localized version of the same language. However, localized-to-
English upgrades are not supported, nor are upgrades of a localized SQL Server to
different languages.
Table 2 shows the features in three types of packages available for SQL Server Express.
Discontinued Functionality
All the discontinued features discussed in other chapters that apply to other SQL Server
2012 editions also apply to SQL Server 2012 Express. For details about discontinued
functionality, see the following SQL Server 2012 Books Online topics:
Breaking Changes
Many of the changes discussed in other chapters that could potentially break
applications also apply to SQL Server 2012 Express. For details about breaking changes,
see the following SQL Server 2012 Books Online topics:
Behavior Changes
Many of the behavior changes discussed in other chapters that apply to other SQL
Server 2012 editions also apply to SQL Server 2012 Express. For more details about
behavior changes that you need to watch out for, see the following SQL Server 2012
Books Online topics:
Upgrade Tools
You can take advantage of a variety of tools designed to make the upgrade to SQL
Server 2012 an easier process:
SQL Server 2012 Upgrade Advisor analyzes installed components from earlier
versions of SQL Server and generates a report that identifies issues to fix either
before or after you upgrade.
SQL Server 2012 Best Practices Analyzer analyzes the system and generates a
report based on a predefined list of SQL Server recommendations.
When you run Upgrade Advisor, the Upgrade Advisor Home page appears. From the
Home page, you can run the following tools:
The first time you use Upgrade Advisor, run the Upgrade Advisor Analysis Wizard to
analyze SQL Server components. When the wizard finishes the analysis, view the
resulting reports in the Upgrade Advisor Report Viewer. Each report provides links to
information in Upgrade Advisor Help that will help you fix or reduce the effect of the
known issues.
You can download Upgrade Advisor as part of the Microsoft SQL Server 2012 Feature
Pack (http://www.microsoft.com/download/en/details.aspx?id=29065).
Once you have upgraded to SQL Server 2012, you can use the SQL Server 2012 BPA to
further refine your systems. You can download the SQL Server 2012 BPA
(http://www.microsoft.com/download/en/details.aspx?id=29302) from the Microsoft
Download Center.
64-Bit Considerations
Table 3 shows the supported 64-bit architectures for SQL Server 2012 Express.
Architecture Supported
X86 (32 bit) Yes
X64 Yes
IA64 No
Note that in the table, ENU refers to the English-language version. Other language
versions are also available.
For both 32-bit and 64-bit editions of SQL Server 2012 Express, the following apply:
We recommend that you run SQL Server 2012 Express on computers with the
NTFS file format. Installing SQL Server 2012 Express on a computer with FAT32
file system is supported but not recommended as it is less secure than the NTFS
file system.
To make sure that the Visual Studio component can be installed correctly, SQL
Server requires you to install an update. SQL Server Setup checks for the
presence of this update and then requires you to download and install the
update before you can continue with the SQL Server installation. To avoid the
interruption during SQL Server Setup, you can download and install the update
before running SQL Server Setup as described below (or install all the updates
for .NET Framework 3.5 SP1 available on Windows Update):
o If you install SQL Server 2012 on a computer with the Windows Vista SP2
or Windows Server 2008 SP2 operating system, you can get the required
update from An update is available for the .NET Framework 3.5 Service
Pack 1 in Windows Vista and in Windows Server 2008
(http://support.microsoft.com/?kbid=956250).
o If you install SQL Server 2012 on a computer with the Windows 7 SP1 or
Windows Server 2008 R2 SP1 operating system, this update is included.
The installation of SQL Server 2012 fails if you launch the setup through
Terminal Services Client. Launching SQL Server Setup through Terminal Services
Client is not supported.
Component Requirement
.NET Based on selected features during the setup of SQL Server 2012 Express edition, you
Framework may have different .NET framework prerequisites.
.NET Framework 4.0 is a requirement for SQL Server 2012. SQL Server Setup installs the
following software components required by the product:
Ensure that an Internet connection is available on the computer. SQL Server Setup
downloads and installs the .NET Framework 4.0 because it is not included in the SQL
Server Express media. SQL Server Setup will download.NET Framework 4 to complete
the installation of the prerequisites.
SQL Server Express does not install .NET Framework 4.0 when installing on the
Windows 2008 R2 SP1 Server Core operating system. You must install .NET 4.0 before
you install SQL Server Express on a Windows 2008 R2 SP1 Server Core operating
system.
.NET Framework 3.5 SP1 is a requirement for SQL Server 2012 Express Edition only
when you select Database Engine, Reporting Services, Replication or SSMS, but it is no
longer installed by SQL Server Setup.
If you run Setup on a computer with the Windows Vista SP2 or Windows
Server 2008 SP2 operating system, and you do not have .NET Framework 3.5
SP1, SQL Server Setup requires you to download and install.NET Framework
3.5 SP1 before you can continue with the SQL Server installation. The error
message includes a link to the download center, or you can download .NET
Framework 3.5 SP1 from Windows Update. To avoid interruption during SQL
Server Setup, you can download and install .NET 3.5 Framework SP1 before
you run SQL Server Setup.
If you run Setup on a computer with the Windows Server 2008 R2 SP1
operating system, you must enable .NET Framework 3.5 SP1 before you install
SQL Server 2012.
Standalone named and default instances support the following network protocols:
Shared memory
Named pipes
TCP/IP
VIA
Note: Shared memory and VIA are not supported on failover clusters. The VIA
protocol is being deprecated and will be removed in a future version of SQL Server.
Avoid using this feature in new development work, and plan to modify applications
that currently use this feature.
Virtualization SQL Server 2012 is supported in virtual machine environments running on the Hyper-V
role in Windows Server 2008 SP2 Standard, Enterprise, and Datacenter Editions, and
Windows Server 2008 R2 SP1 Standard, Enterprise, and Datacenter Editions.
In addition to resources required by the parent partition, each virtual machine (child
partition) must be provided with sufficient processor resources, memory, and disk
resources for its SQL Server 2012 instance.
Within the Hyper-V role on Windows Server 2008 SP2 and Windows Server 2008 R2
SP1, a maximum of four virtual processors can be allocated to virtual machines
running Windows Server 2008 SP2 or Windows Server 2008 R2 SP1 32-bit or 64-bit
editions.
Internet Internet Explorer 7 or later is required for Microsoft Management Console (MMC), SQL
software Server Data Tools (SSDT), the Report Designer component of Reporting Services, and
HTML Help.
Hard disk Disk space requirements will vary with the SQL Server components you install.
Drive A CD or DVD drive, as appropriate, is required for installation from disk.
Display SQL Server graphical tools require VGA or higher resolution: at least 1,024 x 768 pixel
resolution.
Other A Microsoft mouse or compatible pointing device is required.
devices
Table 6 shows the processor, memory, and operating system requirements for the 32-
bit version of SQL Server 2012 Express (Express, Express with Tools, and Express with
Advanced Services packages).
Component Requirement
Processor Processor type:
Pentium III-compatible processor or faster
Processor speed:
Minimum: 1.0 GHz
Recommended: 2.0 GHz or faster
Operating Windows Server 2008 R2 SP1 64-bit Datacenter
system Windows Server 2008 R2 SP1 64-bit Enterprise
Windows Server 2008 R2 SP1 64-bit Standard
Windows Server 2008 R2 SP1 64-bit Foundation
Windows Server 2008 R2 SP1 64-bit Web
Windows 7 SP1 64-bit Ultimate
Windows 7 SP1 64-bit Enterprise
Windows 7 SP1 64-bit Professional
Windows 7 SP1 64-bit Home Premium
Windows 7 SP1 64-bit Home Basic
Windows 7 SP1 32-bit Ultimate
Windows 7 SP1 32-bit Enterprise
Windows 7 SP1 32-bit Professional
Windows 7 SP1 32-bit Home Premium
Windows 7 SP1 32-bit Home Basic
Windows Server 2008 SP2 64-bit Datacenter
Windows Server 2008 SP2 64-bit Enterprise
Windows Server 2008 SP2 64-bit Standard
Windows Server 2008 SP2 64-bit Foundation
Windows Server 2008 SP2 64-bit Web
Windows Server 2008 SP2 32-bit Datacenter
Windows Server 2008 SP2 32-bit Enterprise
Windows Server 2008 SP2 32-bit Standard
Windows Server 2008 SP2 32-bit Web
Windows Vista SP2 64-bit Ultimate
Windows Vista SP2 64-bit Enterprise
Windows Vista SP2 64-bit Business
Windows Vista SP2 64-bit Home Premium
Windows Vista SP2 64-bit Home Basic
Windows Vista SP2 32-bit Ultimate
Windows Vista SP2 32-bit Enterprise
Windows Vista SP2 32-bit Business
Windows Vista SP2 32-bit Home Premium
Windows Vista SP2 32-bit Home Basic
Table 7 shows the processor, memory and operating system requirements for the 64-
bit version of SQL Server 2012 Express (Express, Express with Tools, and Express with
Advanced Services packages).
Table 7: SQL Server 2012 Express (64-Bit) Processor, Memory, and Operating System
Requirements
Component Requirement
Processor Processor type:
Minimum: AMD Opteron, AMD Athlon 64, Intel Xeon with Intel EM64T support,
Intel Pentium IV with EM64T support
Processor speed:
Minimum: 1.4 GHz
Recommended: 2.0 GHz or faster
Operating Windows Server 2008 R2 SP1 64-bit Datacenter
system Windows Server 2008 R2 SP1 64-bit Enterprise
Windows Server 2008 R2 SP1 64-bit Standard
Windows Server 2008 R2 SP1 64-bit Foundation
Windows Server 2008 R2 SP1 64-bit Web
Windows 7 SP1 64-bit Ultimate
Windows 7 SP1 64-bit Enterprise
Windows 7 SP1 64-bit Professional
Windows 7 SP1 64-bit Home Premium
Windows 7 SP1 64-bit Home Basic
Windows Server 2008 SP2 64-bit Datacenter
Windows Server 2008 SP2 64-bit Enterprise
Windows Server 2008 SP2 64-bit Standard
Windows Server 2008 SP2 64-bit Foundation
Windows Server 2008 SP2 64-bit Web
Windows Vista SP2 64-bit Ultimate
Windows Vista SP2 64-bit Enterprise
Windows Vista SP2 64-bit Business
Windows Vista SP2 64-bit Home Premium
Windows Vista SP2 64-bit Home Basic
Memory RAM:
Minimum: 512 MB
Recommended: 1 GB
1. Download and install .NET Framework 3.5 SP1. It is a prerequisite for SQL Server
2012 Express but is no longer installed by SQL Server Express setup. You can
download .NET Framework 3.5 SP1 (http://www.microsoft.com/en-
us/download/details.aspx?displaylang=en&id=22) from the Microsoft Download
Center and then install it by running the dotnetfx.exe program.
2. Start the SQL Server 2012 Setup program, and install the prerequisite software.
SQL Server 2012 Express is installed by running the executable (i.e., .exe)
program for the package type you are installing.
3. Specify the remaining configuration options (generally accept all defaults), and
then click Install in the Ready to Install dialog box. This will upgrade the
specified instance to SQL Server 2012 Express.
Side-by-Side Upgrade
To upgrade from previous SQL Server Express versions when you cannot or do not
want to perform an in-place upgrade, use the following steps if you have the SQL
Server Express Management Tools installed; otherwise, perform the detach/attach
operations.
1. Log in to the previous SQL Server Express system as an administrator, and verify
that the instance of SQL Server Express that you want to upgrade is running.
2. Connect to the previous SQL Server Express system by using SSMS (Express or
another edition).
3. Detach each of the user databases by right-clicking the name of the database
and selecting the Detach option. (Note that you could also have done this using
the backup/restore method instead, but the detach/attach method is generally
easier.)
5. Repeat Step 4 for the Distributed Transaction Coordinator and SQL Server Agent
services if they are running.
6. Remove SQL Server Express by using the Add/Remove Programs applet from the
system’s Control Panel. Note that you can perform this step later if the names of
the instances containing the old and new versions of SQL Server Express are
different.
7. Download and install .NET Framework 3.5 SP1. It is a prerequisite for SQL Server
2012 Express but is no longer installed by SQL Server Express setup. You can
download .NET Framework 3.5 SP1 (http://www.microsoft.com/en-
us/download/details.aspx?displaylang=en&id=22) from the Microsoft Download
Center. After downloading .NET Framework 3.5 SP1, install it by running the
dotnetfx.exe program.
8. Install SQL Server 2012 Express by running the SQL Server Express executable
program. Select the appropriate installation options for the new instance you are
installing, including the instance name if you want to specify a name other than
SQLEXPRESS, although the use of this name is recommended.
Important: In SQL Server 2005 Express and later, the Setup program sets the
name of a default instance to SQLEXPRESS rather than the old MSDE default of
the host computer name. If you want the instance name to be the name of the
host computer, you must specify that name as the named instance’s name.
9. After SQL Server 2012 Express is installed, connect to it using SSMS (Express or
another edition).
10. Attach each of the user databases that were detached from the SQL Server
2005/2008/2008 R2 Express instance by right-clicking the Databases node in
Object Explorer and choosing the Attach Database option. (As noted earlier, you
could alternatively restore the databases at this point if you used the
backup/restore option instead of detach/attach.)
The default installation for SQL Server 2012 Express enables shared memory, which
enables local access only; the named pipes and TCP/IP protocols are disabled. If your
database installation requires network access, open SQL Server Configuration Manager,
open the SQL Server 2012 Network Configuration node, select Protocols for
Post-Upgrade Tasks
You should verify the SQL Server 2012 Express installation by performing the following
post-upgrade steps:
1. Use SQL Server Configuration Manager to verify that the upgraded instance is
running. To start Configuration Manager, double-click SQL Server Configuration
Manager under Configuration Tools in the Microsoft SQL Server 2012 Express
program group.
2. Within Configuration Manager, open the SQL Server 2012 Services node and
check for an upgraded instance entry to verify that it has a status of running. If
the SQL Server service is not running, you can manually attempt to start it by
right-clicking the entry and selecting Start from the context menu. If the service
will not start, the installation was not successful and will need to be redone.
Note: When you are upgrading instances of SQL Server 2005/2008/2008 R2 Express
that support connections from networked users, it is important to know that SQL
Server 2012 Express, by default, disables all remote connections. If you need to
enable remote connections to SQL Server Express, open SQL Server Configuration
Manager, expand the SQL Server 2012 Network Configuration node, select
Protocols for SQLEXPRESS, and then enable the required protocols by right-clicking
the protocol and selecting the Enable option from the context menu.
Upgrading to LocalDB
To upgrade from previous SQL Server Express versions to LocalDB, use the following
steps if you have the SQL Server Express Management Tools installed; otherwise,
perform the detach/attach operations.
1. Log in to the previous SQL Server Express system as an administrator, and verify
that the instance of SQL Server Express that you want to upgrade is running.
2. Connect to the previous SQL Server Express system by using SSMS (Express or
another edition).
4. Shut down previous SQL Server Express instance by opening SQL Server
Configuration Manager and stopping the SQL Server services.
5. Repeat Step 4 for the Distributed Transaction Coordinator and SQL Server Agent
services if they are running.
6. Remove SQL Server Express by using the Add/Remove Programs applet from the
system’s Control Panel. Note that you can perform this step later if the names of
the instances containing the old and new versions of SQL Server Express are
different.
7. Install SQL Server 2012 LocalDB by running the .msi installer. Select the
appropriate installation options for the new instance you are installing, including
the instance name if you want to specify a name other than SQLEXPRESS,
although the use of this name is recommended.
8. After SQL Server 2012 LocalDB is installed, connect to it using SSMS (Express or
another edition) or the SQLCMD command-line utility.
9. Attach each of the user databases that were detached from the SQL Server
2005/2008/2008 R2 Express instance by right-clicking the Databases node in
Object Explorer and choosing the Attach Database option. (As noted earlier, you
could alternatively restore the databases at this point if you used the
backup/restore method instead of the detach/attach method.) If you are using
the command-line option, you can attach the databases using the proper T-SQL
command.
Table 8 compares features between the SQL Server 2012 Express, Web, and Standard
Editions.
RAM Requirements Beyond the Level Supported by SQL Server 2012 Express
SQL Server 2012 Express supports only 1 GB of RAM. If your SQL Server Express
applications need more than this, consider upgrading to SQL Server 2012 Web.
Although SQL Server 2012 Web supports 4 processors with a maximum of 16 cores
compared with SQL Server 2012 Express’ support for 1 processor with a maximum of 4
cores, it is unlikely that this would necessitate a move to SQL Server 2012 Web. In most
cases, it would be more cost-effective to upgrade to a higher performance processor.
SQL Server Express supports multicore processors and can be installed on any server,
but each installation of SQL Server Express can access only one physical processor.
SQL Server 2012 Express does not support using a SQL Server Express instance as a
replication Publisher to other SQL Server Express databases. If your application needs
to act as a Publisher in a replication scenario, you need to consider upgrading to SQL
Server 2012 Web.
Note: If you need enterprise features such as data compression, Resource Governor,
or table partitioning, you will need to upgrade to SQL Server 2012 Enterprise.
Conclusion
SQL Server 2012 Express is the ideal upgrade path for SQL Server 2005/2008/2008 R2
Express database management systems. The upgrade is straightforward, and there are
only a few issues to review and prepare for before upgrading from previous versions of
SQL Server Express. But make sure you understand these upgrade issues before making
your move to ensure a smooth and successful upgrade.
This chapter lays out the general guidelines for installing and upgrading from Visual
Studio 2010 Database Projects to SSDT. This chapter will also cover the most common
behavior and breaking changes while upgrading projects from Visual Studio 2010
Database Projects to SSDT Database Projects.
Preparing to Upgrade
Before you upgrade, make sure you can install SSDT:
If you already have Visual Studio 2010 Ultimate, Premium, or Professional Edition
installed, you will need to manually install the Visual Studio 2010 SP1 update
(http://www.microsoft.com/download/en/details.aspx?id=23691) before you
install SSDT.
If you don’t have Visual Studio 2010 installed, the SSDT installation will install
the Visual Studio 2010 Integrated Shell SP1 on your PC along with the SSDT
functionality.
For a complete overview of the SSDT installation process, see Get Started with
Microsoft SQL Server Data Tools (http://msdn.microsoft.com/en-us/data/hh297027).
While the conversion of the project itself is a fairly straightforward process, you have to
keep in mind that some project types, file types, properties, and settings cannot be
upgraded either because of the nature of the element itself or simply because SSDT
uses another project structure and underlying technologies.
Element Notes
Project (.dbproj) files
Schema comparison (.scmp) files There are different ways of
building schema comparison
files in Visual Studio 2010
Database Projects. Not all of
them are supported for
conversion.
.sqldeployment, .sqlsettings, and .slqpolicy files Converted to their respective
project properties.
.sqlpermissions Converted to T-SQL scripts.
.sql files and their folder structure
Deployment scripts
Table 2 shows the elements that will not be upgraded. You can expect them either to
be highlighted in the conversion report at the end of the conversion or to fire an error
when building the project.
The next sections discuss the issues encountered while converting Visual Studio 2010
Database Projects to SSDT Database Projects and present a solution (if one exists)
either as a pre- or post-upgrade task.
SSDT uses .dacpac files to reference external databases and doesn’t support .dbschema
files. Upon conversion, the referenced full path will be converted from a .dbschema file
to a .dacpac file, resulting in a broken reference.
This type of referenced server login cannot be converted. Any references to the login in
the SSDT database project will result in an error.
Data generation. SSDT doesn’t have a data generation tool at this time, but it is
a feature that will be added in a future release.
Database Unit Test Projects. This type of project is not currently supported by
SSDT, but database unit testing will be added in a future release.
Full-text search. When you use SSDT and debug your project, you use the new
LocalDB, which is an on-demand local instance of SQL Server 2012.
Linked server definitions. In Visual Studio 2010 Database Projects, you are able
to define linked servers and use the value from a SQLCMD variable. Used this
way, it will convert to SSDT but will raise an error when deploying or debugging.
You need to create a database from a .dbschema file and then create a SSDT database
project from the newly created database. Run the VSDBCMD program found in the
C:\Program Files\Microsoft Visual Studio 10.0\VSTSDB\Deploy folder to generate a
database from the .dbschema file. For example, the following will create a database
named SQLPerf on the SQL Server note1\RC0 based on the schema sqlperf.dbschema:
In Visual Studio with SSDT, you can use SQL Server Object Explorer to create a new
project based on your new database, as shown in Figure 6.
Then you can take a snapshot of your project, which will create a .dacpac file that you
can use for referencing databases.
2. Use the Deploy tab of the project properties to indicate where to locate the
.sqlcmdvars file, as shown in Figure 8.
3. After the conversion, make sure that your variables and their values appear with
the name of your custom build configuration in the .publish.xml document, as
shown in Figure 9.
Post-Upgrade tasks
After the conversion, there are still some changes to be made before you can compile,
deploy, or publish your projects. The following topics were detailed in the “Breaking
and Behavior Changes” section earlier, but if they are still present after your upgrade,
you should address them now.
Figure 10: SQLCMD variable being used to define the linked server
Additional References
For more information, see these resources:
In this chapter, we look at the key query-related issues that could prevent an upgrade
as well as other changes that might affect how your stored procedures, queries, scripts,
and applications behave after an upgrade. You must manually review stored
procedures, ad hoc queries, and scripts used against the database for any upgrade
issues before you begin the upgrade process. However, you can significantly reduce the
amount of manual review you need to perform by executing the Upgrade Assistant for
SQL Server 2012 (UAFS). For more information and download instructions, see Upgrade
Assistant for SQL Server 2012 (UAFS)
(http://www.scalabilityexperts.com/tools/downloads.html).
Preparing to Upgrade
Preparation is the key to a successful upgrade of your stored procedures, ad hoc
queries, and administrative scripts. Having a backup and rollback plan is critical, and
you need to know which features have been deprecated or discontinued in SQL Server
2012 as well as which features could derail an upgrade or cause problematic changes in
behavior after your upgrade. In this section, we discuss the key T-SQL changes you
need to understand for a smooth transition to SQL Server 2012 and the tools that can
help you identify and resolve possible problems.
In addition to performing a backup, you should also run DBCC CHECKDB on the
database before upgrading to ensure that the database you are upgrading is not
damaged.
Deprecated Features
Deprecated features are those that SQL Server 2012 still supports but that will be
removed in a future version of SQL Server. Although you do not have to remove these
features from your implementation to complete an upgrade, you need to address them
to make sure you avoid problems in the future. SQL Server 2012 includes System
Monitor, the Deprecation Announcement Event Class, and the
deprecation_announcement Extended Event to help you identify deprecated features
on your upgraded system.
After you have upgraded to SQL Server 2012, you might want to identify deprecated
features still in use so that you can address those issues and replace them with the
newer SQL Server 2012 counterparts. SQL Server 2012 has a System Monitor object
named SQLServer:Deprecated Features. This object enumerates a number of
deprecated features and how frequently they are used on your SQL Server system. You
can view this information with System Monitor or by using the DMV
sys.dm_os_performance_counters. For more information about this object, see SQL
Server, Deprecated Features Object (http://msdn.microsoft.com/en-
us/library/bb510662(v=sql.110).aspx) in SQL Server 2012 Books Online.
Table 1 lists the deprecated features that will not be available after SQL Server 2012.
Discontinued Features
SQL Server 2012 has discontinued some stored procedure and T-SQL command
functionality from previous versions of SQL Server, including the sp_dboption system
stored procedure and sending emails by using the extended stored procedure
xp_sendmail.
Sending Email
Using xp_sendmail to send email messages is not possible anymore. This extended
stored procedure uses SQL Mail to send the message and this feature has been
removed from SQL Server 2012. You should change references to the extended stored
procedure xp_sendmail in all your scripts and use Database Mail instead. For more
information, see Database Mail (http://technet.microsoft.com/en-
us/library/ms189635.aspx).
sp_dboption
The system stored procedure sp_dboption has been removed from SQL Server 2012.
You should change references to this system stored procedure in all your scripts and
use ALTER DATABASE instead.
Discontinued Commands
Table 2 lists the commands that have been discontinued in SQL Server 2012. You
should change references to these commands in all stored procedures, ad hoc queries,
and scripts. Table 2 also lists some other features than have been discontinued.
For a comprehensive list of discontinued functionality in SQL Server 2008 R2 and SQL
Server 2012, see the following topics in SQL Server Books Online:
Breaking Changes
Although Microsoft has worked hard to minimize the impact of upgrading, there are a
few breaking changes in SQL Server 2012 that could cause your upgrade to fail.
T-SQL
There are a number of T-SQL breaking changes in SQL Server 2012. Not all breaking
changes will affect your upgraded database. Some of them impact the system only if
you use the compatibility level 110 for your upgraded databases. Table 3 describes T-
SQL breaking changes that affect all database compatibility levels. Table 4 describes T-
SQL breaking changes that affect upgraded databases in the database compatibility
mode 110.
Feature Description
Selecting from columns Sequences use the ANSI standard NEXT VALUE FOR function. If a table
or tables named NEXT or a column is named NEXT and the table or column is aliased as
VALUE, and if the ANSI standard AS is omitted, the resultant statement
can cause an error. To work around this issue, include the ANSI
standard AS keyword. For example, SELECT NEXT VALUE FROM Table
should be rewritten as SELECT NEXT AS VALUE FROM Table and
SELECT Col1 FROM NEXT VALUE should be rewritten as SELECT Col1
FROM NEXT AS VALUE.
WITHIN reserved WITHIN is now a reserved keyword. References to objects or columns
keyword named 'within' will fail. Rename the object or column name or delimit
the name by using brackets or quotes. For example, SELECT * FROM
[Within].
ALTER TABLE The ALTER TABLE statement allows only two-part (schema.object) table
names. Specifying a table name using the following formats now fails
at compile time with error 117:
server.database.schema.table
.database.schema.table
..schema.table
In earlier versions, specifying the format server.database.schema.table
returned error 4902. Specifying the format .database.schema.table or
the format ..schema.table succeeded.
To resolve the problem, remove the use of the four-part prefix.
Row count message for In SQL Server 2012, the Database Engine will consistently send the TDS
failed Data Manipulation DONE token with RowCount: 0 to clients when a DML statement fails.
Language (DML) In earlier versions of SQL Server, an incorrect value of -1 is sent to the
statements client when the DML statement that fails is contained in a TRY-CATCH
block and is either autoparameterized by the Database Engine or the
TRY-CATCH block is not on the same level as the failed statement. For
example, if a TRY-CATCH block calls a stored procedure and a DML
statement in that procedure fails, the client will incorrectly receive a -1
value.
Applications that rely on this incorrect behavior will fail.
sys.fn_get_audit_file Two additional columns (user_defined_event_id and
function user_defined_information) have been added to support user-defined
audit events. Applications that do not select columns by name might
return more columns than expected. Either select columns by name, or
adjust the application to accept these additional columns.
Browsing metadata Querying a view using FOR BROWSE or SET NO_BROWSETABLE ON
now returns the metadata of the view, not the metadata of the
underlying object. This behavior now matches other methods of
browsing metadata.
Table 4: Breaking Changes in T-SQL under the Database Compatibility Level 110
Feature Description
PIVOT operator The PIVOT operator is not allowed in a recursive common table
expression (CTE) query when the database compatibility level is set to
110. Rewrite the query, or change the compatibility level to 100 or
lower. Using PIVOT in a recursive CTE query produces incorrect results
when there is more than a single row per grouping.
CAST and CONVERT In earlier versions of SQL Server, the default style for CAST and
operations on CONVERT operations on time and datetime2 data types is 121 except
computed columns of when either type is used in a computed column expression. For
type time or datetime2 computed columns, the default style is 0. This behavior impacts
computed columns when they are created, used in queries involving
auto-parameterization, or used in constraint definitions.
Under compatibility level 110, the default style for CAST and CONVERT
operations on time and datetime2 data types is always 121. If your
query relies on the old behavior, use a compatibility level less than 110
or explicitly specify the 0 style in the affected query.
Upgrading the database to compatibility level 110 will not change user
data that has been stored to disk. You must manually correct this data
as appropriate. For example, if you used SELECT INTO to create a table
from a source that contained a computed column expression described
above, the data (using style 0) would be stored rather than the
computed column definition itself. You would need to manually update
this data to match style 121.
DMVs
A few DMVs have been updated in SQL Server 2012. Table 5 lists the modifications that
might cause upgrade problems if you are not prepared for them.
Feature Description
sys.dm_os_memory_cache_counters The following columns have been renamed:
Previous Column Name New Column Name
single_pages_kb pages_kb
multi_pages_kb pages_in_use_kb
Catalog Views
A few catalog views have been updated in SQL Server 2012. Table 6 lists the
modifications that might cause upgrade problems if you are not prepared for them.
View Description
sys.data_spaces A new column, is_system, has been added. A value of 1 in this column
indicates that the object is used for full-text index fragments.
sys.partition_functions A new column, is_system, has been added. A value of 1 in this column
indicates that the object is used for full-text index fragments. The new
column is not the last column. Revise existing queries that rely on the
order of columns returned from these catalog views.
sys.partition_schemes The new column is not the last column. Revise existing queries that rely
on the order of columns returned from these catalog views.
sys.filegroups The new column is not the last column. Revise existing queries that rely
on the order of columns returned from these catalog views.
The assembly Microsoft.SqlServer.Types.dll, which contains the spatial data types and
the HierarchyId type, has been upgraded from version 10.0 to version 11.0. Custom
applications that reference this assembly may fail. For more information, see Breaking
Changes to Database Engine Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143179(v=sql.110).aspx).
Distributed query calls through OPENQUERY to some system procedures will fail when
called from one server to another. For example:
This occurs when the Database Engine cannot discover metadata for a procedure.
Additional Information
For a complete list of breaking changes in SQL Server 2008 R2 and SQL Server 2012,
see the following topics in SQL Server Books Online:
Behavior Changes
SQL Server 2012 changes the behavior of a number of features that your stored
procedures, queries, and scripts might use. These changes likely will not prevent an
upgrade to SQL Server 2012, but they might affect how your query-intensive system
works after the upgrade. Be sure to review your code for the changes covered in this
section to make sure that it works correctly after your upgrade.
Metadata Discovery
Improvements in the Database Engine beginning with SQL Server 2012 allow
SQLDescribeCol to obtain more accurate descriptions of the expected results than
those returned by SQLDescribeCol in previous versions of SQL Server. For more
information, see Metadata Discovery (http://msdn.microsoft.com/en-
us/library/ff878240.aspx).
The SET FMTONLY option for determining the format of a response without actually
running the query is replaced with sp_describe_first_result_set,
sp_describe_undeclared_parameters, sys.dm_exec_describe_first_result_set, and
sys.dm_exec_describe_first_result_set_for_object. For more information, see:
sp_describe_first_result_set (Transact-SQL)
(http://msdn.microsoft.com/en-us/library/ff878602(v=sql.110).aspx)
sys.dm_exec_describe_first_result_set (Transact-SQL)
(http://msdn.microsoft.com/en-us/library/ff878258(v=sql.110).aspx)
sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)
(http://msdn.microsoft.com/en-us/library/ff878236(v=sql.110).aspx)
The LOG function now has an optional base parameter. For more information, see LOG
(Transact-SQL) (http://msdn.microsoft.com/en-us/library/ms190319(v=sql.110).aspx).
Database Compatibility
If you find that you cannot support certain behavior changes immediately, you have the
option of modifying the database compatibility level to limit or allow certain
functionality depending on the level you select.
During the upgrade process to SQL Server 2012, a database will retain its existing
compatibility level if the database compatibility level is greater than or equal to 90.
Otherwise, Setup will automatically set the compatibility level to 90.
Here are the compatibility levels and their corresponding SQL Server versions:
Note that compatibility levels 65, 70, and 80 are deprecated and will be removed in a
future SQL Server release. SQL Server Management Studio (SSMS) and SQL Server
Management Objects (SMO) do not support compatibility level 80 and might produce
errors if you try to use them against a database with this compatibility level.
You can determine the compatibility level of your databases either by right-clicking the
database in SSMS and selecting Properties and then Options, or by executing the
following statement:
The compatibility level of a database governs the ability of DBAs and developers to use
some of the new features in SQL Server 2012 as well as their ability to retain some
legacy behaviors. If you want to use all the features available in the new release of SQL
Server, you should resolve any upgrade issues before changing the compatibility level
of a database to 110.
To change the compatibility level of a database, right-click the database in SSMS and
select Properties and then Options. In the Compatibility Level drop-down list, select the
desired compatibility level. You can also change the compatibility level by issuing the
following ALTER DATABASE command:
Note: You can change the compatibility level of the model database so that you
can create a new database with a non-default compatibility level. The default
compatibility level for new SQL Server 2012 installations is 110.
For more information about changing compatibility levels, see ALTER DATABASE
Compatibility Level (Transact-SQL) (http://msdn.microsoft.com/en-
us/library/bb510680(v=sql.110).aspx) in SQL Server 2012 Books Online.
System Tables
SQL Server 2012 includes several changes to system tables, so you need to review your
stored procedures, ad hoc queries, and administrative scripts to determine whether the
changes will affect your code. Table 7 lists some of the key changes.
Functions
SQL Server 2012 has changed the behavior of built-in functions. Review your code to
make sure it accounts for changes listed in Table 9.
Function Change
fn_translate_permissions The data type of the second parameter named perms has been
changed from bigint to varbinary(16).
One possible issue you might face when upgrading a database and changing the
compatibility level of that database involves keywords marked as reserved. SQL Server
uses reserved keywords for defining, manipulating, and accessing databases. Reserved
keywords are part of the grammar of the T-SQL language that SQL Server uses to parse
and understand T-SQL statements and batches.
Although you can use T-SQL reserved keywords as identifiers or names of databases or
database objects (e.g., tables, columns, views), you can do this only by using either
quoted identifiers or delimited identifiers. Using reserved keywords as the names of
variables and stored procedure parameters is not restricted.
SQL Server 2012 Upgrade Advisor will flag stored procedures for usage of new reserved
keywords. But make sure to perform a manual review of T-SQL code embedded in
application code and other external sources. The reserved keywords introduced in SQL
Server 2012 are:
SEMANTICKEYPHRASETABLE
SEMANTICSIMILARITYDETAILSTABLE
SEMANTICSIMILARITYTABLE
TRY_CONVERT
WITHIN GROUP
In addition, the ISO standard defines a list of reserved keywords. Avoid using ISO
reserved keywords for object names and identifiers. The ISO reserved keyword list is
the same as the ODBC reserved keyword list, which is provided in the next section.
Note: The ISO standard reserved keywords list sometimes can be more restrictive
than SQL Server and at other times less restrictive. For example, the ISO reserved
keywords list contains INT. SQL Server does not distinguish this as a reserved
keyword.
ODBC features keywords reserved for use in ODBC function calls. These words do not
constrain the minimum SQL grammar. However, to ensure compatibility with drivers
that support the core SQL grammar, applications should avoid using these keywords.
Table 11 lists the SQL Server 2012 ODBC reserved keywords.
Microsoft has announced keywords that could be reserved in future releases of SQL
Server as new features are implemented. Consider avoiding the use of these words as
identifiers. DBAs and developers who determine that their stored procedures, queries,
or scripts use these new keywords need to either modify the keyword or enclose the
keyword in quotation marks or brackets. Table 12 lists keywords that could be reserved
in future SQL Server releases.
For the most recent reserved keyword list, see Reserved Keywords (Transact-SQL)
(http://msdn.microsoft.com/en-us/library/ms189822(v=sql.110).aspx) in SQL Server
2012 Books Online.
Additional Information
For a complete list of behavior changes in SQL Server 2008 R2 and SQL Server 2012,
see the following topics in SQL Server Books Online:
Upgrade Tools
There are two main tools available to help identify potential problems before you
upgrade to SQL Server 2012: the SQL Server 2012 Upgrade Advisor and the Best
Practices Analyzer (BPA). For details about using these upgrade tools, see Chapter 1,
"Upgrade Planning and Deployment."
For more information and download instructions, see Upgrade Assistant for SQL Server
2012 (UAFS) (http://www.scalabilityexperts.com/tools/downloads.html) on the
Scalability Experts Tools Downloads page. You can also find more information about
this valuable tool in Use Upgrade Advisor to Prepare for Upgrades
(http://msdn.microsoft.com/en-us/library/ms144256(v=sql.110).aspx).
You can use the SQL Server 2012 Best Practice Analyzer (BPA) to help identify bad
practices in your T-SQL database code and T-SQL scripts. You should always run BPA
on your T-SQL code before an upgrade because you might identify practices that you
need to change. The upgrade process could be the opportunity you need to implement
these changes. There are various versions of this tool, so make sure you get the one
designed especially for SQL Server 2012. You can download the SQL Server 2012 BPA
(http://www.microsoft.com/en-us/download/details.aspx?id=29302) from the Microsoft
Download Center.
64-Bit Considerations
T-SQL queries are completely compatible between 32-bit and 64-bit editions of SQL
Server 2012.
AUTO_UPDATE_STATISTICS
To make sure that database statistics are updated as part of your upgrade—and that
your queries get optimal query plans—set the AUTO_UPDATE_STATISTICS
configuration option to ON before you upgrade any databases to SQL Server 2012.
When you set AUTO_UPDATE_STATISTICS to ON, SQL Server updates all statistics when
they are first referenced, ensuring that the system is using the most up-to-date
information to try to create the best plans for your queries.
You can then use either the sp_updatestats stored procedure or the UPDATE
STATISTICS command to update statistics immediately to ensure optimal performance.
For more information, see:
sp_updatestats (Transact-SQL)
(http://msdn.microsoft.com/en-us/library/ms173804(v=sql.110).aspx)
Query Hints
The table hint FIRSTFASTROW is discontinued in SQL Server 2012. You have to replace
this query hint with OPTION (FAST 1) in your stored procedures, ad hoc queries, and
administrative scripts.
With a few exceptions, SQL Server 2012 requires the WITH keyword when you use a
table hint in the FROM clause of a query. You need to review your stored procedures,
ad hoc queries, and administrative scripts for table hint usage and modify the table hint
syntax to include the WITH keyword. For information about which hints do not require
the WITH keyword, see Table Hints (Transact-SQL) (http://msdn.microsoft.com/en-
us/library/ms187373(v=sql.110).aspx) in SQL Server 2012 Books Online.
In SQL Server 2012, ending T-SQL statements with a semicolon (;) is not required, but in
future releases, it will be. Therefore, you should end all T-SQL statements with a
semicolon. For some statements, it is already required (e.g., a statement prior to WITH
or MERGE).
RAISERROR
COMPUTE/COMPUTE BY
This feature is discontinued in SQL Server 2012. You need to review your stored
procedures, ad hoc queries, and administrative scripts and use ROLLUP instead. For
more information, see GROUP BY (Transact-SQL) (http://msdn.microsoft.com/en-
us/library/ms177673(v=sql.110).aspx).
HOLDLOCK
Specifying the HOLDLOCK table hint without parentheses is deprecated in SQL Server
2012. Future versions of SQL Server will require parentheses for this table hint.
sp_dboption
The system stored procedure sp_dboption has been removed from SQL Server 2012.
You should change references to this system stored procedure in all your scripts and
use ALTER DATABASE instead.
Sending Email
Using the extended stored procedure xp_sendmail to send email messages is not
possible anymore. This extended stored procedure uses SQL Mail to send the message
and this feature has been removed from SQL Server 2012. You should change
references to extended stored procedure xp_sendmail in all your scripts and use
Database Mail instead. For more information, see Database Mail
(http://technet.microsoft.com/en-us/library/ms189635.aspx)
In-Place Upgrade
The T-SQL code in database objects will remain unchanged by a direct, in-place
SQL Server 2012 Upgrade Technical Guide 280
upgrade. Any changes you must make to the scripts should be applied after the
upgrade (see the "Post-Upgrade Tasks" section later in this chapter). In addition,
external scripts on disk will be unaffected.
Side-by-Side Upgrade
In a side-by-side upgrade, any T-SQL objects stored in the database will be
automatically moved to the new server, but their T-SQL code will remain unchanged.
You will need to ALTER or re-create the objects directly to update them as required. In
addition, you might need to move any T-SQL external scripts to a new server or correct
references within your database to those scripts.
Post-Upgrade Tasks
After upgrading to SQL Server 2012, work through the following checklist to ensure
optimum performance:
Execute DBCC CHECKDB WITH DATA_PURITY to check the database for column
values that are not valid or are out of range. After you have successfully run
DBCC CHECKDB WITH DATA_PURITY against an upgraded database, you do not
need to specify the DATA_PURITY option again because SQL Server will
automatically maintain "data purity." This is the only DBCC CHECKDB check that
you need to run as a post-upgrade task.
Update statistics by using the sp_updatestats stored procedure to ensure that all
statistics are up-to-date.
Update revised database T-SQL objects such as stored procedures and functions.
Run a set of test scripts against the new database, and validate the results.
After the upgrade, you will want to analyze how your new SQL Server 2012 instance
performs compared with your original SQL Server 2005, SQL Server 2008 or SQL Server
2008 R2 instance. See RML Utilities for SQL Server (x86) (http://www.microsoft.com/en-
us/download/details.aspx?DisplayLang=en&id=8161) for a suite of tools for load
testing, workload replay, and performance analysis. For additional post-upgrade details,
see Chapter 3, "Relational Databases”.
Conclusion
Although SQL Server 2012 introduces a number of great new features, Microsoft has
SQL Server 2012 Upgrade Technical Guide 281
worked hard to minimize the impact on upgrading existing code. With a good
understanding of how the changes to T-SQL features might affect your stored
procedures, ad hoc queries, and administrative scripts, you can make needed fixes
before the upgrade. In addition, the Upgrade Advisor can help ease your transition
from SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2 to SQL Server 2012.
Additional References
For an up-to-date collection of additional references for upgrading T-SQL queries to
SQL Server 2012, see the Upgrade to SQL Server 2012 page
(http://technet.microsoft.com/en-us/library/bb677622.aspx) and the following links:
Spatial data support is available for the SQL Server Database Services in relational
databases. Spatial data is supported in all editions of SQL Server. In this chapter, we
cover the breaking and behavior changes for spatial data that you need to know about
when upgrading to SQL Server 2012.
Note: Be sure to use the RC0 or RTM release of SQL Server 2012. In SQL Server
2012 CTP1, the Spatial results tab in SQL Server Management Studio (SSMS) has not
been updated to handle the new spatial data features. Features such as FullGlobe
geography type support and circular arcs are not supported in the CTP1 version.
Preparing to Upgrade
The first step for preparing to upgrade to SQL Server 2012 is to search for features that
have been deprecated or discontinued. Then, you need to determine whether any
deprecated or discontinued feature will affect your upgrade. You also need to search
for changes that might prevent an upgrade (i.e., breaking changes) and changes in
feature behavior that might require modifications after the upgrade (i.e., behavior
changes).
Deprecated Features
There are no server side spatial features that are deprecated. However, client-side code
should start using IGeometrySink110 (http://msdn.microsoft.com/es-
es/library/microsoft.sqlserver.types.igeometrysink110.aspx) and IGeographySink110
(http://msdn.microsoft.com/es-
es/library/microsoft.sqlserver.types.igeographysink110.aspx) instead of IGeometrySink
SQL Server 2012 Upgrade Technical Guide 283
(http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.types.igeometrysink.aspx)
and IGeographySink (http://msdn.microsoft.com/en-
us/library/microsoft.sqlserver.types.igeographysink.aspx), respectively. This is needed
because of circular arcs, which are new spatial objects introduced in SQL Server 2012.
Before you upgrade, see Deprecated Database Engine Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143729(v=sql.110).aspx) for any last-
minute changes.
Discontinued Functionality
When this guide was being written, there were no discontinued features for the spatial
data type in SQL Server 2012. Before you upgrade, see Discontinued Database Engine
Functionality in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms144262(v=sql.110).aspx) for any last-minute changes.
Breaking Changes
Before you upgrade, you need to be aware of several breaking changes. This section
will discuss the breaking changes brought about by improved precision in SQL Server
2012 and SQL Azure, the introduction of new type of object named FullGlobe, and an
upgrade to the Microsoft.SQLServer.Types.dll assembly. In addition, you should check
Breaking Changes to Database Engine Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143179(v=sql.110).aspx) for any last-
minute breaking changes.
Improved Precision
In SQL Server 2012, all constructions and relations are now done with 48 bits of
precision compared to 27 bits used in SQL Server 2008 and SQL Server 2008 R2. This
can result in differences that range from how individual coordinates (vertices) in spatial
objects appear (rounding) to differences in computational results produced in different
versions of the database server for certain spatial operations.
You need to take this into count because SQL Azure has been recently upgraded in all
data centers to incorporate the new SQL Server 2012 spatial library. This upgrade,
which is known as the “September 2011 Service Release,” enables spatial operations in
SQL Azure to be identical to those in SQL Server 2012.
Some results from spatial operations in SQL Azure (after the September 2011 Service
Release) and SQL Server 2012 can differ from the results produced from spatial
operations in SQL Server 2008, SQL Server 2008 R2, and SQL Azure (before the
SQL Server 2012 Upgrade Technical Guide 284
September 2011 Service Release). In some cases, these changes will not be noticed and
will not affect the results. However, there are potential cases where this might matter.
For example, consider the following coordinate, which was processed using the
STUnion() method in SQL Server 2008 but which was not involved in the resulting
geometry:
In SQL Server 2012, the greater numerical precision assists in the preservation of
original coordinates of input points in most cases. Here is the result of the same
STUnion() method in SQL Server 2012 shown earlier:
FullGlobe
SQL Server 2012 has support for geography objects larger than a logical hemisphere.
Restricted to slightly less than a logical hemisphere in SQL Server 2008 and SQL Server
2008 R2, geography features in SQL Server 2012 can now be as big as an entire globe.
For example, consider the three images in Figure 1. The first image shows an example
of a “small hole” in a FullGlobe object, the second image shows a regular polygon, and
the third image shows the union of the two, yielding a spatial object that covers the
Earth with three small holes.
UNION yields
Vertex order is critical for the geography type. In SQL Server 2008 and SQL Server 2008
R2, if you enter an incorrect coordinate order for a geography polygon, you receive the
error: “The specified input does not represent a valid geography instance because it
exceeds a single hemisphere. Each geography instance must fit inside a single
hemisphere. A common reason for this error is that a polygon has the wrong ring
orientation.”
For the SQL Server geography data type, ring order is defined by the left-foot rule. The
left-foot rule specifies the interior region of the polygon. (When you “walk” the
boundary of a polygon, your left foot is always inside.) Traditional outer ring/inner ring
(hole) relationships can be modeled on the closed surface of the globe by using this
definition.
Note: The term “left-foot rule” is used in deference to the term “left-hand rule,” which
is already in use by physicists and mathematicians to describe phenomena other than
polygon ring order.
The following examples demonstrate how the geography type deals with large (greater
than a logical hemisphere) objects.
Here is an example of T-SQL code that returns a small (less than a logical hemisphere)
polygon:
DECLARE @R GEOGRAPHY;
SET @R = GEOGRAPHY::Parse('Polygon((-10 -10, 10 -10, 10 10, -10 10,
-10 -10))');
SELECT @R;
The following T-SQL code changes the coordinate order of the polygon ring to the
opposite direction of the previous example:
DECLARE @R GEOGRAPHY;
SET @R = GEOGRAPHY::Parse('Polygon((-10 -10, -10 10, 10 10, 10 -
10,
-10 -10))');
SELECT @R;
The resulting object is now the rest of the globe, as shown in Figure 3.
There are several other considerations which need to be taken into account with the
FullGlobe enhancements to the geography type:
Antipodal edges are not allowed. For example, LineString(0 90, 0 -90) is
considered antipodal whereas LineString(0 90, 0 0, 0 -90) is not.
There are now two types of arcs in geography: great circle arcs defined with two
points and small circle arcs defined with three points.
Degenerate arcs will be treated as great circle arcs between the start and end
points for the geography type. (For the geometry type, degenerate arcs will be
treated as straight edges.)
EnvelopeAngle() will return 180 for objects larger than a logical hemisphere and
< 90 for objects smaller than a logical hemisphere.
1. When you move a custom application from a computer on which SQL Server
2008 R2 is installed to a computer on which only SQL Server 2012 is installed,
the application will fail because the referenced version 10.0 of the SqlTypes
assembly is not present. You can get this error message: “Could not load file or
assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system
cannot find the file specified.”
2. When you reference the SqlTypes assembly version 11.0 and version 10.0 is also
installed, you can get the following error message: “System.InvalidCastException:
Unable to cast object of type 'Microsoft.SqlServer.Types.SqlGeometry' to type
'Microsoft.SqlServer.Types.SqlGeometry'.”
3. When you reference the SqlTypes assembly version 11.0 from a custom
application that uses the .NET Framework 3.5, 4.0, or 4.5, your application will fail
because SqlClient by design loads version 10.0 of the assembly. This failure
occurs when your application calls one of the following methods:
You can work around this issue by calling the GetSqlBytes method
(http://msdn.microsoft.com/en-
us/library/system.data.sqlclient.sqldatareader.getsqlbytes.aspx) instead of the
methods just listed. For more information about how to use the GetSqlBytes
method, see the "SQL CLR Data Types (geometry, geography, and hierarchyid)"
section in Breaking Changes to Database Engine Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143179(v=sql.110).aspx).
Behavior Changes
You need to be aware of several behavior changes before upgrading to SQL Server
2012. This section will discuss the behavior changes resulting from enhancements to
the STEnvelope method and the geography data type in SQL Server 2012. In addition,
you should check Behavior Changes to Database Engine Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143359(v=sql.110).aspx) for any last-
minute behavior changes.
STEnvelope Method
The STEnvelope method is now consistent with the behavior of other SQL Server Spatial
methods.
If you call the STEnvelope method in SQL Server 2008 and 2008 R2, you get the
following results:
When you run the same Transact-SQL (T-SQL) code in SQL Server 2012, the results will
be the following:
The best practice for determining when a spatial object is empty is to call the
STIsEmpty (geometry data type) method. For more information about this method and
others, review geometry Data Type Method Reference (http://msdn.microsoft.com/en-
us/library/bb933973(v=sql.110).aspx).
Note: For more information about empty spatial types, see “Behavior of
STEnvelope() Method Has Changed with Empty Spatial Types” in Behavior Changes
to Database Engine Features in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143359(v=sql.110).aspx).
In SQL Server 2012, geography data type supports objects that are bigger than a
hemisphere. The following methods used to return NULL if result is such object, but in
SQL Server 2012, they will return the expected result. However they are all controllable
by DB COMPATIBILITY LEVEL and will continue to return NULL if the compatibility level
is set to 100.
In addition, a new spatial type is added, called FullGlobe (represents entire globe),
which may be returned by all methods specified above or methods like ToString(),
STAsText(), and similar (that return binary or text representation of a geography object).
Post-Upgrade Tasks
After you complete the upgrade to SQL Server 2012, review and make changes in your
code to get the best performance from the new spatial data features.
For information on upgrading to SQL Server 2012, see Chapter 1, “Upgrade Planning
and Deployment,” and Chapter 3, “Relational Databases,” in this guide. For information
about the new spatial data features, see Spatial Data (SQL Server)
(http://msdn.microsoft.com/en-us/library/bb933790(v=sql.110).aspx) in SQL Server
2012 Books Online.
Conclusion
When you upgrade to SQL Server 2012, the effort for spatial data is very minimal. Just
be sure to check for behavior changes, especially with the STEnvelope method.
The new spatial features and improvements in SQL Server 2012 provide a major
milestone in the evolution of SQL Server spatial data support. The ability to support full
globe spatial objects and circular arcs on the ellipsoid are industry firsts for relational
database systems.
After you have your databases upgraded to SQL Server 2012, all these new features
and improvements will be available to you.
Additional References
Spatial Data (SQL Server)
(http://msdn.microsoft.com/en-us/library/bb933790(v=sql.110).aspx)
XML support is available in SQL Server Database Services in the relational database. The
process of upgrading relational databases in SQL Server is covered in other chapters,
such as Chapter 3, “Relational Databases,” and Chapter 1, “Upgrade Planning and
Deployment.” Therefore, we are covering only changes to XML support inside SQL
Server in this chapter. In addition, you do not have to worry about XML support in
different editions of SQL Server; all editions fully support XML features.
Preparing to Upgrade
Before upgrading to SQL Server 2012, you should investigate which features are
discontinued or deprecated in SQL Server 2008 R2. These features will not affect your
upgrade, but you might need to change your applications and queries. You also need
to know what functionality cannot be upgraded because is it discontinued or because it
has changed in SQL Server 2012. Plus, you need to be aware of some behavior changes
in XML support between in SQL Server 2005, 2008, 2008 R2, and 2012; otherwise, you
could get unexpected results. Let’s look at each of these categories of changes. For a
complete reference of XML changes in SQL Server 2012, see SQL Server Database
Engine Backward Compatibility (http://msdn.microsoft.com/en-
us/library/ms143532(SQL.110).aspx) in SQL Server 2012 Books Online.
Deprecated Features
You can validate XML documents against a schema. An old XML schema language is
XML Data Reduced (XDR) language. You can create XDR documents with the XMLDATA
directive in the FOR XML clause of the SELECT T-SQL statement. The current validation
language is called XML Schema, which is stored in XML Schema Document (XSD) XML
files. SQL Server 2005 supports XSD generation. In SQL Server, you can validate XML
SQL Server 2012 Upgrade Technical Guide 292
data type values against XSD with XML Schema collections.
In SQL Server 2012, the XMLDATA directive to the FOR XML option is deprecated. Use
XMLSCHEMA directive to generate XSD schemas in RAW and AUTO modes. There is no
replacement for the XMLDATA directive in EXPLICIT mode. This option is going to be
still available in the next version of SQL Server; it is not going to be supported in one of
the future versions. However, because there is not much reason to use XDR schemas
inside SQL Server, you should start changing your code soon. For example, the
following code, executed in the context of the AdventureWorksDW database, generates
XDR schema:
SELECT C.CustomerKey,
C.FirstName + ' ' + C.LastName AS CustomerName,
I.SalesAmount
FROM dbo.DimCustomer AS C
INNER JOIN dbo.FactInternetSales AS I
ON C.CustomerKey = I.CustomerKey
WHERE 1 = 0
FOR XML AUTO, XMLDATA;
Note that AdventureWorksDW is the 2005 version of the AdventureWorks demo data
warehouse. We have chosen this version of the demo database in order to make
examples work on any SQL Server version from 2005 to 2012.
SELECT C.CustomerKey,
C.FirstName + ' ' + C.LastName AS CustomerName,
I.SalesAmount
FROM dbo.DimCustomer AS C
INNER JOIN dbo.FactInternetSales AS I
ON C.CustomerKey = I.CustomerKey
WHERE 1 = 0
FOR XML AUTO, XMLSCHEMA;
Discontinued Functionality
There is no discontinued functionality for XML and XQuery support in SQL Server 2012.
So, you do not have to worry about this.
Breaking Changes
From SQL Server 2012, XQuery string functions are surrogate pair-aware. SQL Server
Unicode data types, including NCHAR, NVARCHAR, and XML, encode text in UTF-16
format. SQL Server allocates for each character a unique codepoint, a value in the range
0x0000 to 0x10FFFF. Most of the characters fit into a 16-bit word. Characters with
SQL Server 2012 Upgrade Technical Guide 293
codepoint values larger than 0xFFFF require two consecutive 16-bit words (i.e., two
bytes). These characters are called supplementary characters, and the two consecutive
16-bit words are called surrogate pairs.
The standard World Wide Web Consortium (W3C) recommendation for XQuery
functions and operators requires them to count a surrogate pair as a single character.
In SQL Server versions prior to 2012, XQuery string functions did not recognize
surrogate pairs as a single character. For example, string length calculations returned
incorrect results.
The XML data type in SQL Server only allows well-formed surrogate pairs. However, it is
possible to pass invalid or partial surrogate pairs to XQuery functions as string values.
Below is an example of providing surrogate pairs to XML data type variable through
string values. The value of the CustomerName element is “𠆾𠇀𠇃12”. The first three
characters of the name are surrogate pairs. The length of this value is 5. However, in
versions before SQL Server 2012, you would get a length of 8.
If you execute the following code in SQL Server 2005, 2008, or 2008 R2
<NumberOfCharacters>8</NumberOfCharacters>
<NumberOfCharacters>5</NumberOfCharacters>
This changed behavior affects the following XQuery functions, operators, and clauses:
fn:string-length
Comparison operators including +, <, >, <=, >=, eq, lt, gt, le, and ge (only when
the compatibility level is 110 or higher)
If you are upgrading from SQL Server 2005, you should also consider breaking changes
in SQL Server 2008 and 2008 R2.
In SQL Server 2005, the data types xs:time, xs:date, and xs:dateTime do not allow time
zone support—data is always mapped to the Coordinated Universal Time (UTC) time
zone. Starting with version 2008, SQL Server provides standard conformant behavior.
This behavior includes:
The internal storage representation is modified. This does not have any influence
on your applications.
The sqltypes schema namespace has been extended to include the date and time SQL
Server data types introduced in version 2008, including TIME, DATE, DATETIME2, and
DATETIMEOFFSET. You can also use the XML data type value() method to cast XML
elements and attributes to the new SQL Server date and time data types. The following
code does not run on SQL Server 2005; however, it runs on SQL Server 2008 and later.
It shows usage of the new date and time data types.
Finally, in SQL Server 2005, steps in an XQuery or XML Path Language (XPath)
expression that begin with a colon are allowed. This behavior does not conform to XML
standards and is disallowed in all versions after SQL Server 2005. For example, the
following code works on SQL Server 2005:
DECLARE @x AS XML;
SET @x=
N'<C11003>
<CustomerKey>11003</CustomerKey>
<CustomerName>Customer 1</CustomerName>
<SalesAmount>2294.9900</SalesAmount>
</C11003>';
SELECT @x.query('
for $i in /C11003
return $i/:CustomerName[1]
');
However, this code does not work on SQL Server 2008 or later. You should remove the
colon on these versions.
Behavior Changes
The XML data type value() method has changed internally. In previous versions, the
value method internally converted the source value to an xs:string, and then converted
the xs:string to the target SQL Server data type. In SQL Server 2012, the conversion to
xs:string is skipped in some cases. This means that some queries are slightly faster. This
conversion is skipped if:
The source XML data type is byte, short, int, integer, long, unsignedByte,
unsignedShort, unsignedInt, unsignedLong, positiveInteger, nonPositiveInteger,
negativeInteger, or nonNegativeInteger, and the destination SQL data type is
TINYINT, SMALLINT, INT, BIGINT, DECIMAL, or NUMERIC.
The source XML data type is decimal, and the destination SQL data type is
DECIMAL or NUMERIC.
The source XML data type is float, and the destination SQL data type is REAL.
SQL Server 2012 Upgrade Technical Guide 296
The source XML data type is double, and the destination SQL data type is FLOAT.
In addition, if the XML data type exist() function returns NULL and is used in
comparison with 0, the comparison returns NULL in SQL 2012. Such a comparison
returned TRUE in previous versions. Consider the following code:
The first query returns 0 in SQL Server 2012, while it returns 1 in previous editions.
Post-Upgrade Tasks
After you upgrade SQL Server Database Services to version 2012, you should consider
revising your code in order to benefit from the new features. There are not many new
features regarding XML and XQuery in SQL Server 2012; however, some new features
were added in SQL Server 2008. Therefore, if you are upgrading from SQL Server 2005,
you might decide to make more code changes than when upgrading from SQL Server
2008 or 2008 R2.
sys.xml_schema_components
sys.xml_schema_attributes
sys.xml_schema_component_placements
The following three queries return one row each in SQL Server 2012 and zero rows in
previous versions:
If you validate your XML data type values against an XML schema collection, the
schema collection is upgraded when you upgrade your database as well. After the
upgrade, the new supplementaryCharacters global attribute is exposed in your
upgraded XML schema collection if the schemas in the collection import the SQL Types
XML schema. Finally, the new supplementaryCharacters global attribute is added to
XML column set values that represent UTF-16 collation sql_variant strings.
From SQL Server 2008, you can define XML data types in your XML schemas that allow
a limited set of values for multi-valued elements and attributes in your XML instances.
For example, you can create an XML list type for product sizes, and then enumerate
values like 48, 50, 52, and 54. Now suppose that you need to add values like S, M, L,
and XL to the list. In the original list, the value type is integer; now you want to add
strings. From SQL Server 2008, you can create union XML data types—types that can
combine lists of enumerated elements of different data types.
The real power of XQuery lies in so-called FLWOR expressions. FLWOR is the acronym
for for, let, where, order by, and return. A FLWOR expression is actually a for each loop.
You can use it to iterate through a sequence returned by an XPath expression.
Although you typically iterate through a sequence of nodes, you can use FLWOR
expressions to iterate through any sequence. You can limit the nodes to be processed
SQL Server 2012 Upgrade Technical Guide 298
with a predicate, sort the nodes, and format the returned XML. The parts of a FLWOR
statement are:
For. With the for clause, you bind iterator variables to input sequences. Input
sequences are either sequences of nodes or sequences of atomic values. You
create atomic value sequences using literals or functions.
Let. With the optional let clause, you assign a value to a variable for a specific
iteration. The expression used for assignment can return a sequence of nodes or
a sequence of atomic values.
Where. With the optional where clause, you filter the iteration.
Order by. Using the order by clause, you can control the order in which the
elements of the input sequence are processed. You control the order based on
atomic values.
Return. The return clause is evaluated once for each iteration, and the results
are returned to the client in the iteration order.
In SQL Server 2005, the let clause is not supported. Consider the following example:
DECLARE @x AS XML;
SET @x = N'
<CustomersOrders>
<Customer custid="1">
<!-- Comment 111 -->
<companyname>Customer NRZBB</companyname>
<Order orderid="10692">
<orderdate>2007-10-03T00:00:00</orderdate>
</Order>
<Order orderid="10702">
<orderdate>2007-10-13T00:00:00</orderdate>
</Order>
<Order orderid="10952">
<orderdate>2008-03-16T00:00:00</orderdate>
</Order>
</Customer>
<Customer custid="2">
<!-- Comment 222 -->
<companyname>Customer MLTDN</companyname>
<Order orderid="10308">
<orderdate>2006-09-18T00:00:00</orderdate>
</Order>
<Order orderid="10952">
<orderdate>2008-03-04T00:00:00</orderdate>
</Order>
</Customer>
</CustomersOrders>';
Both queries return the same result. In the for loop, the query iterates through all Order
nodes using an iterator variable and returns those nodes. The resulting XML instance is
filtered by the orderid attribute. The orderid attribute is converted to an element by
creating the element manually and extracting only the value of the attribute with the
data() function. The orderdate element is returned as well, both wrapped in the Order-
orderid-element element. Note the braces around the expressions that extract the
value of the orderid element and the orderdate element. XQuery evaluates expressions
in braces; without braces, everything would be treated as a string literal and returned as
such. The result is ordered by the orderdate element.
Note that in the first query, the orderdate element of the $i iterator variable is referred
twice, once in the order by clause and once in the return clause. You can spare some
typing if you use the let clause to assign a name to the repeating expression. To name
the expression, you have to use a variable different from $i (e.g., $j) in the second
query.
Conclusion
You probably won’t decide to upgrade to SQL Server 2012 only because of the new
XML and XQuery features. However, there are many other reasons for the upgrade. And
once you have your database upgraded, you can start exploiting XML and XQuery
improvements as well.
With the CLR hosted in Microsoft SQL Server (called CLR integration or SQL CLR), you
can author stored procedures, triggers, user-defined functions, user-defined types, and
user-defined aggregates in managed code (both C# and VB.NET). Because managed
code compiles to native code prior to execution, you can achieve significant
performance increases in some scenarios.
SQL CLR was introduced with Microsoft SQL Server 2005. Integration of the CLR in SQL
Server also meant that SQL Server itself hosts the .NET Framework Runtime. Memory,
threading, deadlock detection, and resolution services for .NET code are managed by
SQLOS itself rather than the underlying Windows operating system.
This chapter will lead you through the CLR upgrade process.
Preparing to Upgrade
To prepare for the CLR upgrade process, you need review the changes that could block
your upgrade or change the behavior of your applications after the upgrade.
Breaking Changes
Breaking changes are those changes that introduce the possibility of blocking an
upgrade.
The SQL Server 2012 CLR is based on the .NET Framework 4.0, which replaces the .NET
Framework 2.0 used by previous versions of SQL Server. This means compatibility issues
between the previous versions of the .NET Framework (1.0, 2.0, 3.0, 3.5, 3.5 SP1) and the
.NET Framework 4.0 are also applicable to SQL CLR assemblies. For details on what’s
new in the .NET Framework 4.0, see:
Note: As far as the upgrade to SQL Server 2012 is concerned, the .NET Framework is
part of the installation process.
Behavior Changes
Behavioral changes are those changes that do not block the upgrade process but you
need to be aware of them as they might affect the existing CLR objects because of the
way the .NET Framework 4.0 works.
Managed Code Can No Longer Catch Exceptions from Corrupted Process States
In version 4.0 of the CLR, CLR database objects no longer catch corrupted state
exceptions (e.g., access violations) in catch blocks. These exceptions are now caught in
the CLR integration hosting layer. The <legacyCorruptedStateExceptionsPolicy> setting
in the .NET Framework 4.0 that would enable applications to catch exceptions for
corrupted process states is not available in SQL Server 2012, so the only method to
catch these exceptions is to apply the
System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute to
the method that contains the exceptions catch block. For details, see
HandleProcessCorruptedStateExceptionsAttribute Class (http://msdn.microsoft.com/en-
us/library/system.runtime.exceptionservices.handleprocesscorruptedstateexceptionsattr
ibute.aspx).
using System.Runtime.ExceptionServices
/*
Individual managed methods can override the defaults and catch these
exceptions by applying the HandleProcessCorruptedStateExceptions attribute to
the method.
*/
[HandleProcessCorruptedStateExceptions]
public static void HandleCorruptedState()
{
// Write Exception Notification code here.
// Can log or send mail to admin, etc.
}
Because of the special hosting considerations of SQL CLR compared to CLR itself,
changing the application configuration file is not possible because there is no
sqlservr.exe.config file for SQL CLR. The only way SQL Server 2012 allows you to enable
<TimeSpan_LegacyFormatMode> is by changing the database compatibility level
(dbcmptlevel) to 100 (which is the database compatibility level for SQL Server 2008) for
new databases created on SQL Server 2012. Databases upgraded from SQL Server 2008
or SQL Server 2005 keep their respective database compatibility levels and require no
change. For information on how to change the database compatibility level, see the
MSDN article Alter Database Compatibility Level (Transact-SQL)
(http://msdn.microsoft.com/en-us/library/bb510680.aspx).
Because of the special hosting considerations of SQL CLR compared to CLR itself,
changing the application configuration file is not possible because there is no
sqlservr.exe.config file for SQL CLR. The only way SQL Server 2012 allows to enable
<CompatSortNLSVersion> is by changing the database compatibility level
(dbcmptlevel) to 100 (which is the database compatibility level for SQL Server 2008) for
new databases created on SQL Server 2012. Databases upgraded from SQL Server 2008
or SQL Server 2005 keep their respective database compatibility levels and require no
change. For information on how to change the database compatibility level, see the
MSDN article Alter Database Compatibility Level (Transact-SQL)
(http://msdn.microsoft.com/en-us/library/bb510680.aspx).
When you move a custom application from a computer on which SQL Server
2008 R2 was installed to a computer on which only SQL Server 2012 is installed,
the application will fail because the referenced version 10.0 of the SqlTypes
assembly is not present. You may see this error message: “Could not load file or
assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system
cannot find the file specified.”
When you reference the SqlTypes assembly version 11.0 and version 10.0 is also
installed, you may see this error message: “System.InvalidCastException: Unable
to cast object of type 'Microsoft.SqlServer.Types.SqlGeometry' to type
'Microsoft.SqlServer.Types.SqlGeometry'.”
Using an assembly redirection policy. The configuration file for an application can
contain an assembly redirection policy. This workaround does not require code to be
changed. However, the XML configuration file needs to be deployed with the
application.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
...
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types"
publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="11.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
...
</assemblyBinding>
Changing the connection string. In .NET 4.5 and later, client applications can use the
Type System Version property of the connection string to set up the version of types
used on the client. If Types System Version = 2012 is specified, the client will load
version 11.0.0.0 of Microsoft.SqlServer.Types.dll. If not, version 10.0.0.0 will be loaded
by default.
Note: .NET 4.5 will deprecate the Type System Version = Latest option. That option
will stay locked into SQL Server 2008 and will always load version 10.0.0.0.
Using the GetSqlBytes method. You can work around this issue by calling the
GetSqlBytes method instead of the Get methods to retrieve CLR SQL Server system
types, as shown in the following example:
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
// In version 11.0 only
SqlGeometry g = SqlGeometry.Deserialize(reader.GetSqlBytes(0));
Beginning with SQL Server 2005, SQL Server has a list of supported .NET Framework
libraries, which have been tested to ensure that they meet reliability and security
standards for interaction with SQL Server. Supported libraries do not need to be
explicitly registered on the server before they can be used in your code. SQL Server
loads them directly from the Global Assembly Cache (GAC). For list of supported
assemblies, see Supported .NET Framework Libraries (http://msdn.microsoft.com/en-
us/library/ms403279(v=sql.110).aspx).
Data
Column Name Type Description
total_processor_time_ms bigint Total processor time, in milliseconds, used by all threads while
executing in the current application domain since the process
started. This is equivalent to
System.AppDomain.MonitoringTotalProcessorTime.
total_allocated_memory_kb bigint Total size, in kilobytes, of all memory allocations that have
been made by the application domain since it was created,
without subtracting memory that has been collected. This is
equivalent to
System.AppDomain.MonitoringTotalAllocatedMemorySize.
survived_memory_kb bigint Number of kilobytes that survived the last full, blocking
collection and that are known to be referenced by the current
application domain. This is equivalent to
System.AppDomain.MonitoringSurvivedMemorySize.
Another alternative is to deploy the SQL CLR assemblies to SQL Server 2012 manually
by using Create Assembly statements.
Additional References
For an up-to-date collection of additional references for upgrading CLR objects, refer
to the following links:
Support policy for untested .NET Framework assemblies in the SQL Server CLR-
hosted environment
(http://support.microsoft.com/kb/922672)
The SMO object model extends and supersedes the SQL Distributed Management
Objects (SQL-DMO) object model. Compared to SQL-DMO, SMO increases
performance, control, and ease of use. Most SQL-DMO functionality is included in
SMO, and there are various new classes that support new features in SQL Server.
Because SMO is fully compatible with SQL Server 2005, SQL Server 2008, SQL Server
2008 R2, and SQL Server 2012 and partially compatible with SQL Server 2000, you can
easily manage a multi-version environment.
If you want to develop an application that uses SMO, you should select the Client Tools
SDK when you install SQL Server. To install the Client Tools SDK without installing SQL
Server, install Shared Management Objects from the SQL Server 2012 Feature Pack. If
you want to ensure that SMO is installed on a computer that will run your application,
you can use the Shared Management Objects .msi in the SQL Server 2012 Feature Pack.
Preparing to Upgrade
Before upgrading to SQL Server 2012, you should investigate which features are
deprecated or discontinued.
Deprecated Features
Several SQL Server 2005/2008/2008 R2 features have been deprecated in SQL Server
2012. When you upgrade to SQL Server 2012 SMO, you might have to modify the code
by changing or removing deprecated functionalities. For more information about
deprecated features, see Deprecated Database Engine Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143729(v=sql.110).aspx) in SQL Server
2012 Books Online.
Discontinued Functionality
When you upgrade to SQL Server 2012 SMO, you might have to modify the code by
changing or removing discontinued functionalities. For more information about general
database engine discontinued features, see Discontinued Database Engine
Functionality in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms144262(v=sql.110).aspx) in SQL Server 2012 Books Online.
Keep in mind that if you are still using SQL-DMO, you should be aware that this
functionality is no longer included in SQL Server 2012 and must be converted to use
SMO. For more information about SQL-DMO mapping to SMO, see SQL-DMO
Mapping to SMO (http://msdn.microsoft.com/en-us/library/ms162159(v=sql.110).aspx)
in SQL Server 2012 Books Online.
SMO is implemented as a set of Microsoft .NET Framework assemblies. This means that
the common language runtime from the.NET Framework 3.5 must be installed before
using SMO. The SMO assemblies are installed by default into the Global Assembly
SMO libraries included in SQL Server 2012 are built against the .NET Framework 3.5 but
can be consumed by managed applications that target either the .NET 3.5 or .NET 4.0
runtimes. It is the application developer’s choice of which .NET runtime to target. This
can be useful in scenarios where you have a managed application that currently targets
.NET 3.5 and wants to use SQL Server 2012 SMO, without being forced to target the
.NET 4.0 runtime.
Before recompiling SMO projects, you must remove references to old SMO DLLs and
substitute them with new SMO DLLs, provided with SQL Server 2012.
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.Management.Sdk.Sfc
SmoEnum.dll has been removed, so references to this DLL must be removed from the
SMO project.
The SQL Server 2012 PowerShell components can be used to manage instances of SQL
Server 2000 or later. Instances of SQL Server 2005 must be running SP2 or later.
Instances of SQL Server 2000 must be running SP4 or later. When the SQL Server 2012
PowerShell components are used with earlier versions of SQL Server, they are limited to
the functionality available in those versions.
To load SMO into PowerShell and execute the scripts you can:
Load the SMO assemblies using the PowerShell 2.0’s AddType cmdlet
Add-Type -AssemblyName “Microsoft.SqlServer.Smo”
Existing PowerShell scripts should work without modifications because the PowerShell
runtime loads the latest version of the SMO assemblies, which are fully compatible with
older SQL Server versions.
Conclusion
Upgrading SMO projects to SQL Server 2012 can be a straightforward process. By
referencing new DLLs and recompiling existing applications, it is possible to access new
features exposed by new SMO libraries (to manage AlwaysOn Availability Groups, for
example).
Overview (SMO)
(http://msdn.microsoft.com/en-us/library/ms162557(v=sql.110).aspx)
BI Tools Users
BI includes the participation of professionals in different business roles, with users and
technical professionals having different perspectives and different reasons for using
various tools. User roles for the BI tools fall into three categories, which generally
include business information workers, software developers, and system administrators.
Excel 2010
Report Builder
System Administrators
System administrators are typically concerned with the setup and ongoing
maintenance of servers and the infrastructure to keep reporting solutions available and
working. Administrators typically spend their time and energy managing security and
optimizing the system for efficiency. Reporting Services has an administrative
component that is especially important in large-scale implementations.
In smaller organizations, the same person may play the role of system administrator,
developer, and report designer. As an Administrator, your primary management tools
for BI projects and components will be SQL Server Management Studio (SSMS),
configuration tools, and SQL Server Profiler. For Reporting Services, you will use Report
Manager in native mode and the SharePoint context menus for reports in SharePoint
integrated mode. For other BI content in SharePoint, you will use the context menus
and SharePoint configuration pages.
BI Tools Overview
The term “BI tools” refers to a collection of several configuration and design
applications that can be found in a few different places, including the Windows Start
menu, SharePoint, and Office application add-ins. To get started, we will enumerate
these tools and show you where to find them. To locate many of the available tools, a
good place to start is the Windows Start menu shown in Figure 1.
Referring to these menu items, the BI tools covered in this chapter include:
Additional tools that don’t appear on the Start Menu in this configuration include:
Report Builder
Power View
The Import and Export Wizard can also be launched from SSMS when connected to a
SQL Server relational instance. Separate Import and Export menu items in SSMS
actually launch the same tool and set default values for either the source or destination
adaptors.
The Import and Export Wizard user interface has not changed significantly from the
previous version, but it does support updated data providers and utilize the updated
SSIS 2012 architecture. After working through the wizard, the resulting SSIS package
can be executed immediately and then optionally saved to the file system or to a SQL
Server instance. Use the Import and Export Data wizard when you just need to import
or export data. You can use the package as a starting point in an SSIS project. Details
are available in Run the SQL Server Import and Export Wizard
(http://msdn.microsoft.com/en-us/library/ms140052(v=sql.110).aspx).
Chapter 17, “Integration Services” covers the upgrade path for SSIS. Please refer to this
chapter for specific steps and considerations for upgrading SSIS packages and projects.
If you have installed any edition of Visual Studio 2010 before or after installing the SQL
Server 2012 client tools, using Start menu shortcuts to open SSDT or Visual Studio 2010
will yield the same result. The BI project templates are added to the other Visual Studio
project types, and you will be able to author BI projects using either the SSDT or Visual
Studio 2010 shortcuts. Regardless of the project type you use, several toolbars and the
following project types are available in SSDT:
Integration Services
Reporting Services
Database
Additionally, the New Project dialog box includes templates that will launch wizards
enabling you to create projects from imported objects. These include an Analysis
Services Multidimensional project imported from a server database, an Analysis
Services Tabular project imported from a server database, and an Analysis Services
Tabular project imported from a PowerPivot Excel workbook file. A Reporting Services
project can also be created using the Report Server Project Wizard. This feature works
just as it did in earlier versions of BIDS. Selecting the Database project type from the
SQL Server group will prompt you to download and install the Database Projects
template using the Web Platform Installer, as shown in Figure 2.
SSDT Database Project allows you to develop SQL Server database Transact-SQL (T-
SQL) scripts to create, synchronize, and manage database objects. SSDT now aligns the
database development experience with familiar Visual Studio development and
debugging tools, such as code-completion, IntelliSense, compare capabilities, and rich
version control capabilities. The SSDT Database Project tools are extensive, allowing
developers to generate database schema deployment scripts to create and update all
database objects. SSDT Database Project can also create portable database backup
packages, incorporating data with schema change management. This tool is covered in
Chapter 9, “SQL Server Data Tools.” For developers and other database professionals,
SSDT Database Project uses declarative, model-based tools to develop a database and
database objects online or offline for on-premises and SQL Azure databases. Visual
Studio 2010 database projects can be converted to the newer SSDT database projects.
For conversion steps and considerations, refer to How to: Convert VS 2010 Database
Projects to SSDT Database Projects and Re-target to a Different Platform
(http://msdn.microsoft.com/en-us/library/hh272689(v=VS.103).aspx).
The BI Semantic Tabular Model project type is introduced in SQL Server 2012. The
designer experience in SSDT has many similarities to the PowerPivot for Excel 2010
add-in. A significant difference is that, even during the design stage, tabular model
data and metadata is stored is a live SQL Server 2012 Analysis Services (SSAS) instance
configured for tabular storage. This means that a developer must have connectivity to
the development SSAS database server or must have a local instance installed. Figure 3
shows the tabular model project designer in SSDT.
SQL Server 2012 includes many enhancements and user interface improvements for
solution development and administration of the SQL Server Database Engine, Analysis
Services, and Reporting Services. Like SSDT, SSMS utilizes the Visual Studio shell,
providing more extensible support and compatibility. SSMS is a vital tool for upgrading
to SQL Server 2012. Database objects from earlier SQL Server version can be scripted
and converted. Backward compatibility and the ability to upgrade databases are
provided for versions back to SQL Server 2005 (90). Be mindful that databases can only
be upgraded and not converted. For specific considerations and details regarding
compatible editions and product versions for upgrade, see Use SQL Server
Management Studio (http://msdn.microsoft.com/en-
us/library/ms174173(v=sql.110).aspx) in SQL Server 2012 Books Online.
The Analysis Services Deployment Wizard has not changed significantly from SQL
Server 2008 R2. For more details and options, see Deploy Model Solutions Using the
Deployment Wizard (http://msdn.microsoft.com/en-
us/library/ms176121(v=sql.110).aspx). Refer to Chapter 16, “Analysis Services,” for
specific guidance on how to upgrade Analysis Services projects.
In SharePoint integrated mode, all configuration settings are managed using the
SharePoint Central Administration site. To change a SharePoint integrated Reporting
Services instance to native mode, use the Configuration Manager to create a new
SQL Server 2012 Upgrade Technical Guide 322
report server content database in native mode. To migrate the instance from native to
SharePoint integrated mode, use the Central Administrator. Note that existing report
content will not be moved in either case. The recommended approach to migrate
existing report server content is to save reports, shared data sources, and data sets to
files in the file system and then upload them using SharePoint or an SSDT report
project. More information about migrating report server instances and switching
integration modes may be found in Configuration and Administration a Report Server
(Reporting Services SharePoint Mode) (http://msdn.microsoft.com/en-
us/library/ms159624(v=sql.110).aspx).
You can upgrade SSIS packages created with earlier product versions in three different
ways: from SSMS, from SSDT, or from the file system or command prompt. To upgrade
packages in an earlier-version SSIS project, open the existing project in SSDT. You can
upgrade each package individually using the right-click menu. To upgrade all packages,
right-click the SSIS Packages node in Solution Explorer and choose Upgrade All
Packages from the menu.
To upgrade packages stored using the former SQL Server storage mode or file system
storage mode, use SSMS. Connect to an Integration Services instance and then expand
the Stored Packages node. Right-click the File System or MSDB node, and then click
Upgrade Packages.
The Integration Services Project Conversion Wizard will allow you to save a backup
copy of any converted package or SSIS project prior to converting the files to work with
SQL Server 2012 Integration Services. The location of the converted files and backup
folders created by the wizard may be different depending on the method used to
launch the wizard. For details, see Upgrade Integration Services Packages Using the
SSIS Package Upgrade Wizard (http://msdn.microsoft.com/en-
us/library/cc280547(v=sql.110).aspx).
The SQL Server Profiler tool itself is largely unchanged in SQL Server 2012 but several
new events and counters have been added in several services that can be used to
monitor performance and audit events.
Report Builder
The Report Builder design tool in SQL Server 2012 is similar to Report Builder 3.0 in
SQL Server 2008 R2 and includes the same feature set. The original Report Builder tool,
available in SQL Server 2005 (and later called Report Builder 1.0) is deprecated in SQL
Server 2012, along with the first-generation semantic report models and report model
projects.
To edit an existing deployed report with Report Builder, hover the mouse pointer over
the report name in Report Manager, click the down arrow, and select Edit in Report
Builder. In SharePoint, the context menus work exactly the same way.
To create a new report with Report Builder in SharePoint integrated mode, a document
library must be configured to include the Report Builder Report content type. For
information on how to add a content type to a library, see Add Report Server Content
Types to a Library (Reporting Services in SharePoint Integrated Mode)
(http://msdn.microsoft.com/en-us/library/bb326289(v=sql.110).aspx).
To open Report Builder, navigate to the document library and choose the Documents
tab under the Library Tools group. In the left-side ribbon, select the Report Builder
Report option on the New Document menu.
Report Builder can also be installed to run as a standalone application. It can then be
launched from the Windows Start menu.
The highest compatibility level for reports created with either Report Builder or SSDT in
SQL Server 2012 is SQL Server 2008 R2. Both Report Builder and SSDT can be used to
deploy reports with SQL Server 2008 compatibility. Note that certain features may be
lost in 2008 compatibility mode that cannot be recovered if they are saved again to the
newer version.
The PowerPivot for Excel 2010 add-in has been updated with SQL Server 2012. Figure 4
shows PowerPivot’s new graphical relationship designer. Another improvement is that
there is no dependence on having any installed SQL Server instance for desktop users.
For upgrade purposes, a PowerPivot workbook authored using the PowerPivot for Excel
2010 add-in will be upgraded when opened using the 2012 Excel add-in. A PowerPivot
model cannot be downgraded to work with the 2012 version of the Excel 2010 add-in.
A PowerPivot workbook model can be upgraded to a BI Semantic Tabular Model by
importing the workbook file into a tabular project in SSDT.
The tool is highly-interactive. Figure 5 shows a Power View report with multiple related
visuals. When the name of an airline is clicked in the bar chart on the right side, this
acts a slicer, filtering the highlighted data displayed in the stacked column series chart
on the left.
As with any production solution, an upgrade should be tested and validated on a non-
production server using a backup copy of the databases and deployed objects. The
Visual Studio Conversion Wizard and each of the project type-specific conversion
utilities perform backups but it is always a good idea to create a master backup of
Any configuration change comes with an inherent risk so it’s advisable to proceed with
caution and to have a comprehensive recovery plan. Some product features in SQL
Server 2012 have changed more than others and if you plan to take advantage of these
improvements, you should consider the potential impact of making a change to an
existing solution. Table 1 provides some considerations for upgrading each project
type.
Analysis Services Service architecture and design Perform an in-place upgrade on the
Multidimensional environment are similar. existing database or re-deploy from SSDT
after backing up the BIDS project files.
Database Project Project type didn’t exist in Backup the original project and database.
BIDS.
In SSDT, use the Convert to SQL Server
Significant changes from prior Database Project wizard to upgrade and
Visual Studio 2010 database then test the new project before
projects. deployment.
When planning to upgrade multiple projects of different types that were created using
SQL Server 2008 or SQL Server 2008 R2, be mindful that the upgrade story for these
different SQL Server services is somewhat different. Each project type (SSIS, SSAS, and
SSRS) may be upgraded to the SQL Server 2012 project type, but the upgrade path for
You can’t depend on Windows to open projects for conversion from the file system.
When a BIDS/Visual Studio 2008 project or solution is opened from Windows Explorer,
it will simply open in that version of the BIDS designer. To upgrade the project, start
SSDT and then open the solution or project from the File menu. Figure 6 shows the
Visual Studio Conversion Wizard.
After conversion is complete, the wizard adds the UpgradeLog.XML file to the project
folder. Open this in Internet Explorer to view details about the project upgrade, as
shown in Figure 7.
Visual Studio 2010 database projects converted to SSDT 2012 database projects
will not include:
o Partial projects
o Extensibility files
Some SSIS packages may contain properties that will not be compatible with the
new project deployment model. When converting these packages, the Convert
to Package Deployment Model dialog box will analyze compatibility and inform
you about any restrictions.
SSAS Tabular Model projects don’t have all of the capabilities of SSAS
Multidimensional Model projects. The differences between these tools and
architectures are extensive. Consider these differences if you plan to replace
Additional References
The following resources may be helpful to plan and configure the tools for your SQL
Server 2012 upgrade:
Configuration guides, troubleshooting advice, and other in-depth articles and papers
related to SQL Server and SharePoint BI tools and architecture are available from the
SQL Server Customer Advisory Team (SQLCAT) web site (http://sqlcat.com).
With SSAS 2000, Microsoft introduced many new features and capabilities to increase
the functionality of its first release (OLAP Services 7.0). Features such as distinct count
measures, parent/child dimensions, improved aggregation design, and data mining
capabilities increased the value of SSAS 2000 and made its adoption rate among
organizations higher than any other multidimensional Database Engine.
With SSAS 2005, Microsoft worked hard to further increase the value of SSAS by adding
breakthrough capabilities to expand the number and kinds of solutions the platform
could be used to develop and support. Changes in the underlying architecture of the
product provided increased scalability, a unified model for supporting OLAP and
traditional reporting needs, significant improvements in the development and
administration of a given solution, and new Key Performance Indicator (KPI) and data
mining features.
The release of SSAS 2008 expanded the value of SSAS again by adding capabilities to
cover even more business scenarios, such as improved time series forecasts, and to
guide OLAP developers toward producing more efficient and effective solutions.
Developer guidance comes in the form of significantly reworked wizards that
streamline and simplify how to create objects while enforcing best practices learned
from customer implementations of SQL Server 2005. The design tools present real-time
feedback to notify the developer of deviations from best practices. New in SSAS 2008
are graphical tools to help developers build attribute relationships and examine, create,
modify, and remove aggregations. New capabilities in this release include improved
query performance in many cases and additional data mining models.
SSAS has been significantly upgraded in SQL Server 2012. SQL Server 2012 added the
tabular model and introduced the Business Intelligence Semantic Model (BISM). One
choice that must be made when performing an upgrade is whether to continue using
the multidimensional model or to switch to the tabular model. You cannot specifically
upgrade a multidimensional instance to tabular mode, but you can install a new
instance of SSAS that supports tabular model solutions and run both instances side by
side. In other words, you can upgrade an instance of the multidimensional instance, or
you can add a new instance of the tabular model. Since the tabular model did not exist
in previous versions of SQL Server, there is no upgrade for it. For more information, see
Install Analysis Services in Tabular Mode (http://msdn.microsoft.com/en-
us/library/hh231722(v=sql.110).aspx).
For information on how to upgrade data mining models, see Chapter 19, “Data
Mining.”
In-Place Upgrade
With an in-place upgrade, the SSAS 2005, 2008, or 2008 R2 engine and associated tools
are removed and replaced by SSAS 2012. During the upgrade process, the older SSAS
database metadata is moved to SSAS 2012, and the upgraded databases do not need
to be reprocessed.
Side-by-Side Upgrade
With a side-by-side upgrade, you install an instance of SSAS 2012 alongside the
existing version of SSAS, which remains until uninstalled. During the upgrade process,
users can continue to access the databases in the older versions of SSAS, which are
unaffected by the upgrade process. After a side-by-side upgrade is complete, both the
previous version of SSAS and SSAS 2012 are installed. You can move and test database
metadata without affecting the previous SSAS installation. After SSAS 2012 is fully
tested, the older version of SSAS can be uninstalled.
Note: With a side-by-side upgrade, you can either use the existing server
environment for the new installation or install SSAS 2012 on a new server.
Important: The side-by-side upgrade option provides for greater availability during
the upgrade process, simplifies rollback (should that be required), and results in
simpler testing scenarios because both versions are available at the same time.
Both upgrade options will result in SSAS 2012 versions of the databases from a given
instance of SSAS 2005, 2008, or 2008 R2.
The following sections discuss the most important upgrade issues. For a complete list
of backward-compatibility issues, breaking changes, and behavior changes to SSAS
2012, see Analysis Services Backward Compatibility (http://technet.microsoft.com/en-
us/library/ms143479(v=sql.110).aspx) in SQL Server 2012 Books Online.
Note: The list of discontinued, deprecated, behavior, and breaking changes from
SSAS 2005 to SSAS 2008/2008 R2 is important to understand if you are moving
from SSAS 2005 to SSAS 2012. For more information, see Chapter 11, “Analysis
Services,” in the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
Deprecated Features
Table 1 describes the most common SSAS objects and settings that are deprecated in
SQL Server 2012, which means that they will not be supported in future releases of SQL
Server.
For more information about deprecated features in SSAS 2012, see Deprecated Analysis
Services Functionality in SQL Server 2012 (http://technet.microsoft.com/en-
us/library/ms143346(v=sql.110).aspx) in SQL Server 2012 Books Online.
Discontinued Functionality
There are two features no longer available in SSAS 2012:
The Migration Wizard, used to migrate SQL Server 2000 Analysis Services
databases to newer versions, has been discontinued because SQL Server 2000 is
no longer supported.
The Decision Support Objects (DSO) library that provided compatibility with SQL
Server 2000 Analysis Services databases has been discontinued.
For more information about these discontinued features in SSAS 2012, see
Discontinued Analysis Services Functionality in SQL Server 2012
(http://technet.microsoft.com/en-us/library/ms143229(v=sql.110).aspx) in SQL Server
2012 Books Online.
Breaking Changes
There is only one breaking change moving to SSAS 2012. Table 2 covers this one
breaking change. Remember though, to review breaking changes between SSAS 2005
to SSAS 2008/2008 R2 if you are upgrading from SSAS 2005 to SSAS 2012.
If you created installation scripts for unattended setup, you will need to
modify those scripts for a PowerPivot for SharePoint installation. The
alternative is to use PowerShell cmdlets to configure the server in
unattended mode. For more information, see Install PowerPivot from the
Command Prompt (http://technet.microsoft.com/en-
us/library/ee210645(v=sql.110).aspx) and PowerPivot Configuration using
PowerShell (http://technet.microsoft.com/en-
us/library/hh230903(v=sql.110).aspx).
For more information about breaking changes in SSAS 2012, see Breaking Changes to
Analysis Services Features in SQL Server 2012 (http://technet.microsoft.com/en-
us/library/ms143742(v=sql.110).aspx) in SQL Server 2012 Books Online.
Behavior Changes
There are only two areas of behavior changes in SSAS 2012. The first area is for the
multidimensional mode of SSAS, and the second area is for PowerPivot for SharePoint.
Multidimensional Mode
In SQL Server Management Studio (SSMS) and in Cube Designer, the Cube browser has
been removed because it was based on a control that was an Office Web Control
(OWC) component. OWC was deprecated by Office and is no longer available. In its
place, a new browser is available that flattens out queries to only rows, similar to the
MDX query designer in the SQL Server Reporting Services Report Designer.
For more information about the behavior changes in SSAS 2012, see Behavior Changes
to Analysis Services Features in SQL Server 2012 (http://technet.microsoft.com/en-
us/library/ms143682(v=sql.110).aspx) in SQL Server 2012 Books Online.
64-bit Considerations
SSAS 2005, SSAS 2008, SSAS 2008 R2, and SQL 2012 are available for 64-bit and 32-bit
hardware platforms. You should perform an in-place upgrade using the same platform
edition you already have installed. Therefore, the 64-bit edition of SSAS 2005 should be
upgraded to the 64-bit edition of SSAS 2012.
When you perform a side-by-side upgrade using two servers, you can upgrade from
one hardware platform edition to another. For example, you can upgrade the 32-bit
edition of SSAS 2005 to the 64-bit edition of SSAS 2012.
Before you try an upgrade, review the behavior changes and determine whether any of
the listed issues will affect the query results after an upgrade. In addition, run Upgrade
Advisor to analyze the SSAS instance, and then review the generated report to verify
that you have addressed all issues that must be resolved before the upgrade and that
you understand the upgrade issues that you must resolve after Setup is complete. Also
take advantage of such tools as the Best Practices Analyzer (BPA) for SQL Server 2005
and SQL Server 2008 R2 to aid in upgrade preparation. (You use SQL Server 2008 R2
BPA for both SQL Server 2008 and SQL Server 2008 R2.) For more information about
these upgrade tools, see Chapter 1, “Upgrade Planning and Deployment.”
Important: With an in-place upgrade, the upgrade process handles all aspects of
the upgrade, automatically upgrading the metadata for each database found in
SSAS 2005, SSAS 2008, and SSAS 2008 R2.
If a failed upgrade occurs, frequently the easiest resolution is to reinstall the previous
version of SSAS and restore the installation to its state before the upgrade process was
started. Back up all databases by using the Back Up command in SSMS. To do this,
open SSMS, right-click each database that is listed, and select Back Up. Provide a
unique filename for each .abf file that is created, optionally choosing to also encrypt
them with a password.
We recommend that you put all the files that are generated by the previous steps in a
single directory on a network share for safe-keeping during the upgrade process.
Side-By-Side Upgrade
As mentioned previously, in a side-by-side upgrade, you install an instance of SSAS
2012 alongside the existing version of SSAS. After installing SSAS 2012, users can
continue to access the databases in the older versions of SSAS. After installing the
multidimensional SSAS 2012 engine as a new named instance, you can move SSAS
databases to it using one of the following methods:
Back up the database from the older version of SSAS and restore it to the SSAS
2012 instance.
Detach the database from the older version of SSAS and attach it to the SSAS
2012 instance.
Open the project files in Visual Studio 2010 and deploy the database to SSAS
2012. In this case, the cube will have to be processed, unlike the previous two
options.
In-Place Upgrade
To start the in-place upgrade, start the Setup application for SQL Server 2012, selecting
Installation and then Upgrade from SQL Server 2005, SQL Server 2008 or SQL Server
2008 R2. The Setup program will run a system configuration check, collect system
information, and prompt for a product key. After it installs any necessary setup files, the
Setup application will then prompt you to select the instance to upgrade.
After you have selected the components to install, the Setup application will prompt
you for an instance name for the newly installed SQL Server 2012 components. To
upgrade an existing installation of SSAS, leave the InstanceID the same. The Setup
application should detect any running services based on which components were
selected for installation. Ensure that the existing installation of SSAS is selected, and
continue.
After you select the instance name, Setup will check for the necessary disk space. The
Setup application will then check the server configuration, check the full-text search
upgrade option, and prompt the user to turn on Error and Usage Reporting. This is an
optional setting. Enabling it means the server might try to send data to Microsoft on an
as-needed basis.
The Setup application next checks a series of upgrade rules. You should examine any
failures in the rules and address them as necessary. When there are no failures,
installation can continue.
When the Setup application is ready to continue with the upgrade, it will display a
summary of actions that will be taken. Ensure that the action to be taken is “upgrade,”
and then continue.
Clicking the Upgrade button starts the upgrade process. During the upgrade, an
Upgrade Progress status screen will show status information about the various steps
taken by the Setup application. When Setup is complete, a screen that displays the
upgrade steps together with a success or failure message will be shown. A final screen
will provide a summary of the installation along with any notes that are relevant to the
upgrade process.
After the upgrade process is finished, you should perform a short set of post-
installation tasks to ensure that the upgrade completed successfully. See the “Post-
Upgrade Tasks” topic later in this section for information about these tasks.
Should the in-place upgrade process fail, the best strategy is to review the setup logs
that were created by the Setup application.
Post-Upgrade Tasks
After the upgrade of an SSAS server to SSAS 2012 is complete, you must complete a
series of post-installation tasks before the upgraded databases will be available to
users. In addition, you should perform other post-installation tasks to ensure that each
database is working correctly and can be modified in the future if necessary.
Review upgraded databases. Each database that was upgraded by the SQL Server
2012 Setup application should be reviewed to ensure that the upgrade process
completed successfully. Using SSMS, connect to SSAS on the upgraded server. If the
workstation components were installed as part of the upgrade, SSMS should be
available on the upgraded server; otherwise, SSMS will have to be started on another
server or workstation that has the workstation components for SQL Server 2012
installed.
The cubes that are upgraded from SSAS 2005, SSAS 2008, or SSAS 2008 R2 do not have
to be processed to be browsed. Also, projects from Business Intelligence Development
Studio (BIDS) 2005, 2008, and 2008 R2 can be opened in Visual Studio 2010 without
1050. This value is set when you attach or restore a database that was created in
SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2 on a SQL Server 2012
SSAS server. A new property named CompatibilityLevel, set to 1050, is
automatically added when you attach or restore the database.
1100. This is the default value for new databases that you create in SQL Server
2012. You can also specify it for databases created in earlier versions of SSAS to
enable the use of features that are supported only at this compatibility level
(namely, scalable string storage for dimension attributes or distinct count
measures that contain string data).
When changing database compatibility levels, you increase the level from 1050 to 1100
to take advantage of new features. You cannot set a SQL Server 2012 SSAS database to
1050 (the value is ignored), nor can you roll back the compatibility level from 1100 to
its original value of 1050. Setting the database compatibility to a higher level is
irreversible. Be sure to back up the database in case you want to use the previous
version on an earlier version of SSAS. For more information, see Set the Compatibility
Level of a Multidimensional Database (Analysis Services)
(http://msdn.microsoft.com/en-us/library/gg471593.aspx).
Conclusion
Upgrading to SSAS 2012 provides a wealth of new capabilities and features. Upgrading
to SSAS 2012 can be accomplished by using either an in-place upgrade or a side-by-
side upgrade. The in-place upgrade is a bit more risky because it replaces the earlier
version of SSAS. Before you do an in-place upgrade, it is important to make backups of
all the SSAS databases. The side-by-side upgrade lets two versions of SSAS run at the
same time, with SSAS 2012 being a named instance. When the earlier version of SSAS is
removed, the SSAS 2012 version can be changed to the default instance on the server.
Organizations upgrading from previous versions of SSAS will find a smooth transition.
There are improved tools for creating dimensions and cubes. The engine also contains
some performance and scalability improvements. The good news is that the number of
breaking changes is very small, and the overall design of cubes, dimensions, and the
like has not changed.
Additional References
For an up-to-date collection of additional references for upgrading to SQL Server 2012,
see the following links:
Current SSIS customers will appreciate the increased usability that SSIS 2012 provides
for both for developers and administrators. This chapter will cover some of these new
features as well as provide pointers to SSIS 2012 content on the web. However, the
primary focus is to assist existing customers with their upgrade to SSIS 2012. To that
end, this chapter is organized into the following sections:
“Running Upgrade Advisor.” This section shows you how to use the SQL Server
2012 Upgrade Advisor to find out if there are any issues you need to address
prior to your upgrade.
“Project Conversion Wizard.” This section shows you how to use the SSIS 2012
Project Conversion Wizard to upgrade SQL Server packages. It also introduces
you to the configuration, deployment, and management features in SSIS 2012’s
new project deployment model.
“Additional Resources.” This section contains useful online links for this topic.
View Matt Masson’s TechEd 2011 presentation What’s New in Microsoft SQL
Server Code-Named “Denali” for SQL Server Integration Services
In preparation for the upgrade, plan on performing the following steps for your SSIS
upgrade:
2. Run Upgrade Advisor, which will alert you to any issues that may need to be
addressed prior to the upgrade.
4. Run the SSIS 2012 Project Conversion Wizard to upgrade your existing SSIS
packages to SSIS 2012.
5. Perform post upgrade steps, including converting to SSIS 2012’s new project
deployment model.
Note that converting to SSIS 2012’s project deployment model is optional, but it is
highly recommended that you at least review the capabilities of this new feature. The
SSIS 2012 server leverages the new project deployment model, which makes it easier
for you to configure, deploy and manage SSIS packages.
In preparation for your upgrade, it is first useful to review SSIS 2012 support for
backward compatibility, especially the discontinued features, which include DTS.
ActiveX scripting is also being discontinued with the SSIS 2012 release. Existing ActiveX
scripting tasks will need to be rewritten, using a combination of SSIS tasks (including
the Script task) and task control flow.
Note that you can choose a side-by-side installation if you still have some DTS
packages that haven’t been converted yet. However, at some point in time, these DTS
packages will need to be migrated to SSIS. In addition, a side-by-side installation
creates a more complex environment with multiple versions of SQL Server and the SQL
Server Data Tools (SSDT) residing on one server.
64-Bit Considerations
The 64-bit vs. 32-bit considerations section is becoming less relevant as the computing
world moves to 64-bit systems. However, there are still some scenarios where running
SSIS in 32-bit mode is required.
The most common scenario is when Microsoft Excel is a either a source or destination
within a dataflow. For more information on this topic, see the following:
The next step is to run Upgrade Advisor. Before you do that, though, it is useful to
know about some of the details of the sample SSIS solution and packages used in the
remainder of this chapter.
ETL Frameworks
Custom ETL Frameworks are common in existing SSIS production solutions and this
sample uses a lightweight version of the Stonemeadow Solutions ETL Framework
(http://etlframework.codeplex.com) found on CodePlex. Another example of a custom
SSIS ETL Framework is the BI Monkey SSIS ETL Framework
(http://ssisetlframework.codeplex.com).
One common pattern for an ETL Framework is to have two types of packages: master
packages and execution packages. The master package is responsible for larger
deployment and workflow responsibilities. The execution packages contain the ETL
code. Note that this pattern fits well within SSIS 2012’s new project deployment model
(i.e., one project will contain one master package and multiple execution packages).
In addition, SSIS 2012 has made significant investments in configurations, logging, and
deployments to the point where third-party or custom ETL Frameworks are no longer
necessary. If you are upgrading to SSIS 2012, you should study these new capabilities
to decide whether to replace an existing ETL Framework capability (e.g., configurations)
SQL Server 2012 Upgrade Technical Guide 348
with the SSIS 2012 equivalent. However, you can continue to use your existing ETL
Framework if desired; the SSIS 2012 Project Conversion Wizard fully supports this. For
new SSIS implementations, you should strongly consider using SSIS 2012’s new
capabilities to meet your ETL Framework needs.
The SQL Server Worldwide Users Group (SSWUG) article SQL Server 2012 ETL
Framework Features in the New SSIS Catalog
(http://www.sswug.org/articles/viewarticle.aspx?id=59199) provides a list of what types
of features are in the SSIS Catalog out-of-the-box. Although this is an unofficial list, it
provides a good categorization of ETL Framework features along with what’s supported
in SSIS 2012.
Master Package
The master package is responsible for:
Batch creation and logging. The batch represents one instance of the master
package invocation and is used for logging as well as creating execution lineage
identifiers.
Error logging. The master package has an OnError event that logs error
information for every master package error as well as unhandled execution
package errors.
Figure 1 shows the task flow for a master package. Five out of the seven tasks in this
task flow are Execute Package tasks. The other two are responsible for creating a batch
record in the ETL Framework logging database and then updating this batch’s status
after the execution packages complete.
Note that custom ETL Frameworks may use SSIS Script tasks to populate SSIS variables
from configuration information stored in a file or database.
This master package uses SSIS package configurations, shown in Figure 2, to initialize
all source, destination, and logging connection strings used by the execution packages
as well as the file directory used by expressions to initialize each execution package file
connection.
SSIS expressions are heavily used in this sample in support of runtime configurations.
These allow the solution to be moved across environments (i.e., development, test, QA,
staging, and production), without having to open and edit the package. Figure 3 shows
the properties for one of the file connections, each of which point to a DTSX package
file.
Execution Packages
The execution packages are responsible for the real ETL work. Each of the five
execution packages in this sample follows a similar pattern for both their task flow and
data flow. Figure 4 shows an example of this task flow.
Three logging tasks. InitActivity, UpdateActivity and LogXfr are SQL tasks that
call a stored procedure to insert one or more records into an ETL Framework
logging table. Note that the InitActivity task is also responsible for creating the
execution lineage ID stored in all destination tables.
One data flow. This data flow implements either a Slowly Changing Dimension I
(SCD1) or Slowly Changing Dimension II (SCD2) data flow. Simply put, SCD2 is
about versioning every change, while SCD1 updates one record.
One SCD Post Process task. This is a Script task that builds and executes SQL
statements used in SCD post-processing activities. For example, an SCD2
(versioned table) will need to update the previous version with an End Date and
change the Record status from Active to Inactive.
Note that each of these execution package tasks has the same source, destination, and
logging database configurations. This is a common pattern, which is nicely supported
by SSIS 2012’s Shared Connections.
Each execution package uses expressions to set their database connection strings at
runtime. Figure 6 is a screenshot of the Destination (Dst) database connection’s
properties. Notice how the inpCnDst variable initialized by a parent package variable is
used to set the ConnectionString attribute.
The package adds record count instrumentation. Note that logging and
reporting on record counts is a useful component in an ETL Framework.
If the record doesn’t exist, the package inserts it. Before inserting, the package
generates a primary key if SQL Server IDENTITY columns are not in place.
If the record has not changed, the package ignores the record.
If the record changed, the package inserts a record into the History table.
Note that the SCD1 post processing logic will build and execute the UPDATE statement
that is applied to the destination SCD1 table.
That concludes the review of the SSIS sample solution that will be converted to SSIS
2012. The first step after planning has completed is to run the Upgrade Advisor wizard.
This can be done by selecting the Install Upgrade Advisor option within the SQL Server
Installation Center screen, which is invoked by running the Setup.exe application on the
SQL Server installation media. Note that you may get the error shown in Figure 8.
The SQL Server Transact-SQL ScriptDom prerequisite can be obtained from the
Microsoft SQL Server 2012 Feature Pack (http://www.microsoft.com/en-
us/download/details.aspx?id=29065&ocid=aff-n-in-loc--pd). The link is available in the
Microsoft® SQL Server® 2012 Transact-SQL ScriptDom section. The file is
SQLDOM.MSI.
After the Upgrade Advisor installation completes, it is available within the SQL Server
2012 program group. You can navigate to this program group by pressing the Start
button, and then All Programs. Clicking the Launch Upgrade Advisor Analysis Wizard
button and then the Next button gets you to the SQL Server Components screen
shown in Figure 9.
Select Integration Services and click the Next button to navigate to the Connection
Parameters screen shown in Figure 10. This screen prompts you for the database
instance that you are targeting for the conversion.
Clicking Next brings you to the SSIS Parameters screen shown in Figure 11. This is
where you provide the location of your SSIS packages.
Clicking the Next button gets you to the Upgrade Advisor Settings screen. In this
screen, you can verify that the SSIS package location is correct. You should also make a
note of the locations of the Upgrade Advisor log and report files.
Clicking Next starts the Upgrade Advisor analysis process. It reports on the progress of
the analysis and will indicate the status of the upgrade, as shown in Figure 12.
Clicking the Launch Report button displays the View Report screen shown in Figure 13.
After addressing the Upgrade Advisor warnings and errors, the next step is to install
SQL Server 2012.
Select Integration Services to install the Integration Services service and to run
packages outside the design environment.
SQL Server Data Tools to install the tools for designing packages
Data Quality Client to install the Data Quality Services (DQS) client objects.
Note that this feature isn’t required by SSIS 2012, but provides data scrubbing,
cleansing, and transformations that are core to many ETL solutions.
For more information on SSIS 2012 installations, see Install Integration Services
(http://technet.microsoft.com/en-us/library/ms143731(SQL.110).aspx).
Figure 15 is a screenshot of SSMS 2012 with references to both the legacy SSIS service
and the SSIS 2012 server.
The SSIS 2012 server leverages the project deployment model, which is new to SSIS
2012. This will be covered later in the “Convert to Project Deployment Model” section
in this chapter.
In-Place Upgrade
To upgrade in place, first navigate to the SQL Server Installation Center screen, select
Installation, and then select the Upgrade from SQL Server 2005, SQL Server 2008 or SQL
Server 2008 R2 option. This option will upgrade all of your existing SQL Server 2005,
2008, or 2008 R2 components and does not allow you to selectively upgrade SQL
Server components.
Also note that you cannot use an in-place upgrade to perform the following actions:
Move from a 32-bit to a 64-bit version of SQL Server or from a 64-bit version to
a 32-bit version.
Move from one localized version of SQL Server to another localized version.
The server configuration step is the only SSIS-specific option within the in-place
upgrade process. It will prompt you for the account name and password for the SQL
Server Integration Services 11.0 service. This is the legacy SSIS service that existed in
SQL Server 2005, 2008, and 2008 R2. For more information on this service, see
Administration (Integration Services) (http://technet.microsoft.com/en-
us/library/ms141799(SQL.105).aspx) in SQL Server 2008 R2 Books Online.
Side-by-Side Upgrade
A side-by-side upgrade requires you to select the SQL Server 2012 features shown in
Figure 14. You will need to provide a new instance name. Note that an instance name is
optional for new installations.
Other areas that you need to consider with a side-by-side upgrade involve:
Managing SSIS packages. You will not be able to mix and match SQL Server Data
Tools with different versions of the SQL Server database. This means that the
SQL Server package formats (i.e., 2005, 2008, and 2012) must be stored in the
SQL Server msdb database of the same version and must be accessed by the
same version of SSMS.
Running packages. The SQL Server 2012 version of dtexec will convert SQL
Server 2005 and SQL Server 2008 packages to the SQL Server 2012 package
version prior to executing.
It is natural for existing SSIS shops to be risk-adverse and delay the upgrading of
packages to the most recent version. However, given the strong tools and wizards in
SSIS 2012, it is highly recommended that SSIS packages be upgraded to the SSIS 2012
format. This is especially true for SQL Server 2008 and SQL Server 2008 R2 since any
differences are handled by the upgrade wizard.
SQL Server 2005 may be more difficult given the script task migration from Visual
Studio for Applications (VSA) to Visual Studio Tools for Applications (VSTA) and the
changes in Lookup transformations. However, SSIS shops also do not want to be in the
position where their packages are in a discontinued format, which is the case for DTS in
SQL Server 2012. For more information on converting to VSTA, see Migrate Scripts to
VSTA (http://technet.microsoft.com/en-us/library/bb522527(SQL.110).aspx) in SQL
Server 2012 Books Online.
New Installations
New installations require you to select the SQL Server 2012 features previously shown
in Figure 14. You will also need to upgrade existing SSIS packages to SSIS 2012. As part
of this process, make sure that all of your package configurations are moved to this
new instance of SQL Server, and that these package configurations reference the
correct files, directories and database connections.
After the install completes, the next step is to upgrade your SSIS packages.
Figure 16 below shows all the SSIS-related files for our upgrade sample.
The first step is to open the Visual Studio 2010 Shell. This can be found in:
The Visual Studio 2010 Program Group (Start, All Programs, Microsoft Visual
Studio 2010, Microsoft Visual Studio 2010)
The SQL Server 2012 program group (Start, All Programs, SQL Server 2012, SQL
Server Data Tools)
Figure 17: Selecting Open Project in the Visual Studio 2010 Shell
The next step is to select the SSIS project, as shown in Figure 18.
The first page, shown in Figure 19, is the Visual Studio Conversion Wizard welcome
page.
Click the Next button to start the conversion. The wizard then gives you the option of
creating a backup of the existing project prior to conversion, as shown in Figure 20. It is
highly recommended that you back up your existing packages and supporting files.
You will optionally see a page containing a security warning, as shown in Figure 22. This
will be shown if the SSIS files are not stored within SQL Server or are not under source
control. Click the OK button to begin the conversion.
The Visual Studio Conversion Wizard converts the project (.dtproj) and solution (.sln)
files to Visual Studio 2010 format. The Upgradelog.xml file, shown in Figure 23,
contains the results of the conversion.
Now that the Visual Studio files have been converted, the SSIS conversion wizard starts
and displays the welcome page shown in Figure 24. Clicking the Next button starts the
package upgrade.
Figure 24: Viewing the SSIS Package Upgrade Wizard’s welcome page
The next page, shown in Figure 25, allows you to select the packages to be upgraded.
You can change the name of each as well as provide the password if one exists. Notice
In the Select Package Management Options page, you set the package upgrade
options. Your options include:
Updating connection strings so that they use new provider names (default)
Clicking the Next button gets you to the Summary page shown in Figure 26. In this
page, you can review all of your upgrade options prior to starting the upgrade. You can
click the Back button to change one or more upgrade options, or you can click the
Finish button to start the upgrade process.
Upon completion, the wizard presents you with summary report of activity, as shown in
Figure 27. Clicking the Report button opens a window that displays the results of the
upgrade. You can also choose to save the report to a file or the clipboard.
When you click Report, all messages (informational, warning, and error) generated by
the upgrade wizard are displayed within the report viewer, as shown in Figure 28.
DTSX package format change. The wizard automatically upgraded the package
to SSIS 2012’s new package format. This new format makes it easier: to read the
XML package file, to work with source control and diff/merge software and to
share transforms between data flows.
Script migration. The wizard automatically upgraded the Script tasks. Note that
this is displayed as a warning but should not be viewed as one since the scripts
will continue to work after the upgrade without user modification.
This next example demonstrates how you can upgrade packages stored on the server.
In this example, the sample packages are stored within the MSDB database in the
AWDW directory. Figure 30 shows how you can highlight the directory and select the
Upgrade Packages option from its context menu.
When the welcome screen is displayed, click the Next button to go to the Select Source
Location screen. Selecting the AWDW directory and clicking the Next button gets you
Now that the packages have been upgraded, the next step is to test the converted
packages within SSIS 2012. Figure 31 is a modified screenshot of the upgraded master
package.
One useful feature for SSIS 2012 is that an “Expression Adorner” exists for every task
and connection that leverages expressions. All connections and Execute Package tasks
within the sample master package have expressions. The arrows in Figure 31 point to
the expression indicator for one task and connection. This did not exist in previous
versions and is a useful addition for SSIS developers.
Notice that the package ran successfully without any post-upgrade changes. Also
notice how the solution is being tagged as a package deployment model. As stated
previously, it is worth looking into the project deployment model’s capabilities and
running the Integration Services Project Conversion Wizard to convert from the
Finally, don’t forget about your package configurations. Make sure that:
Figure 32 shows the directory after the upgrade completes. Note that the project and
solution files have been converted to Visual Studio 2010. Also note that the original
solution, project, and packages have been safely backed up to the Backup directory.
Figure 32: SSIS project files after the package upgrade wizard completes
The last screenshot in this section demonstrates SSIS 2012’s enhanced usability for
developers. Figure 33 is a screenshot of the data flow for one of the converted
execution packages. Note that the data flow has been modified; the source has been
disconnected from other transforms.
Figure 33 shows how you can work with a transform (in this case, Derived Column) even
though it is not connected to an upstream transform. This may seem like a minor point,
but it is a great example of an SSIS 2012 usability feature. Previous versions would not
let you open a transform that did not have upstream transform input feed.
In summary, the SSIS Package Upgrade Wizard walks you through a series of input
screens before upgrading your packages to SSIS 2012. This wizard is thorough and the
majority of packages will run post upgrade without changes to the code. Note that
package configuration values will need to be changed.
This is covered, along with other best practices, in the MSDN article "5 Tips for a
Smooth SSIS Upgrade to SQL Server 2012" (http://msdn.microsoft.com/en-
us/library/hh667275.aspx).
Now that the packages have been upgraded and successfully tested, you can look to
convert to SSIS 2012’s project deployment model.
Selecting this option starts the wizard. Its Introduction screen is shown in Figure 35.
Select the packages targeted for conversion, and click the Next button to navigate to
the Update Execute Package Task page shown in Figure 37.
The wizard identifies all configuration parameters and their type, and ensures that the
external references exist. In this example, these are the environment variable and XML
configuration file. You have the option of adding and deleting configurations from the
list. You also have the option of removing the configurations from the packages. Select
that option since you are changing over to the SSIS 2012 project model, which removes
the need for the environment variable and XML file configurations.
The next step is to change the scope of all master package configurations from
Package to Project level. Note that all of the execution packages “Parent package”
configurations are converted to package-level parameters. The administrator will be
able to use SSMS or T-SQL to easily configure configuration values once the project
and packages are deployed to the SSIS catalog. You will see how these are configured
when you review the Execute Package Task Editor page later in this section.
Click the Next button to navigate to the Configure Parameters screen shown in Figure
40.
On the Configure Parameters page, you can change the settings for each configuration
value. Clicking the ellipsis (…) button will result in the Set Parameters pop-up window
shown in Figure 41.
Confirm the selections made in prior screens before clicking the Convert button, which
starts the upgrade process. The wizard will display the Results screen shown in Figure
43, which provides the conversion results as each package is converted. When
complete, it displays a pop-up window that reminds you that the project will need to
be saved for the upgrade changes to be applied.
Click OK to remove the pop-up window and then click Close to complete the wizard.
Now that the wizard has completed, let’s view what is different for the project
deployment model, starting with the project parameters. Highlight Project.params, and
select Open to navigate to the project parameters window shown in Figure 44.
Notice that you can set the value, add a description, and set the Sensitive and Required
flags. Setting the Required flag will ensure that the parameter value is provided at
runtime. This is a great addition since it eliminates a common SSIS issue with prior
versions: running in production with values set in development or test.
Setting the Sensitive attribute to true allows sensitive information to be set at the
parameter level. When this occurs, all logging and UI screens will not display sensitive
information within the parameter. The scenario for setting the sensitive attribute is
when connection strings contain sensitive information, such as usernames and
passwords.
The final step is to delete the InpDtsxDirectoryName project parameter. This parameter
was used for dynamically configuring the DTSX package filename referenced in the
master package’s Execute Package task. This is no longer required when you set your
package type reference type to Project Reference.
Notice how the reference type is now Project Reference, as opposed to External
Reference. This is possible because the project is self-contained, which eliminates the
potential issue of setting and referencing an invalid directory and file.
The SSIS 2012 Execute Package Task Editor now contains parameter bindings. This
allows the parameters to be defined and set from the parent package. Selecting
Parameter bindings in the left pane navigates you to the parameter bindings’ values
shown in Figure 46.
Notice that SSIS 2012 now sets the child package values from the parent. Previous
versions of SSIS worked in the other direction–that is, the execute package would use
“parent package” configurations to initialize its values. Also note that you can use the
project-level variables to initialize the child package variable.
This isn’t required, but it does eliminate a level of indirection. The initial model was for
the package configuration to load a master package variable, which in turn was used to
load the execution package variable. Put another way, rather than the
$Project::InpCnSrc parameter loading the inpCnSrc variable, which is then bound as a
parameter, you can directly bind $Project::InpCnSrc.
It should be noted that execution package connection string configuration can also be
implemented using SSIS 2012 shared data connections. For more information on
shared connection managers, see What’s new (Integration Services)
(http://msdn.microsoft.com/en-us/library/bb522534(v=sql.110).aspx) in SQL Server
2012 Books Online.
Notice how the master package executed successfully after the conversion. Also notice
that file connections are no longer required since the reference type has been changed
to Project Reference, which was shown in Figure 47.
Now that you have finished the conversion, the next step is to deploy the project,
which is out of the scope of this upgrade guide chapter. For more information on
project deployments, see Deployment Projects and Packages
(http://msdn.microsoft.com/en-us/library/hh213290(v=sql.110).aspx) in SQL Server
2012 Books Online. For more information on the SSIS 2012 server, see Integration
Services (SSIS) Server (http://msdn.microsoft.com/en-
us/library/gg471508(v=sql.110).aspx) in SQL Server 2012 Books Online.
Additional References
The following resources provide additional information on upgrading to SSIS 2012 as
well as on the SSIS 2012 feature set and new capabilities:
With the release of SQL Server 2012, SSRS has been updated with significant new
features and ease-of-use improvements. Customers currently using SSRS 2005, SSRS
2008, or SSRS 2008 R2 need to determine the best approach to upgrading their
existing reports and/or their existing environment to SSRS 2012. The options available
for upgrading depend on how your SSRS 2005, SSRS 2008, or SSRS 2008 R2
environment is currently deployed and what level of availability and upgrade testing
you need.
For more information about deploying topologies in SSRS native mode, see Planning a
Deployment Topology (http://msdn.microsoft.com/en-
us/library/ms157293(v=sql.110).aspx).
For more information about deploying SSRS scale-out architecture, see Reporting
Services Scale-Out Architecture
(http://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/06/05/reporting-services-
scale-out-architecture.aspx) on SQLCAT.
Note that in this chapter, we refer to SQL Server 2005 with Service Pack (SP4) simply as
“SQL Server 2005” to simplify the text and readability.
It is generally recommended that you upgrade each edition of SSRS 2005, SSRS 2008,
or SSRS 2008 R2 to the same edition of SSRS 2012. However, certain cross-edition
upgrades are supported. Specifically, you can upgrade the Standard Edition of SSRS
2005, SSRS 2008, or SSRS 2008 R2 to the Enterprise Edition of SSRS 2012 (as well as to
the Standard Edition of SSRS 2012).
If you upgrade the Standard Edition of SSRS 2005, SSRS 2008, or SSRS 2008 R2 to the
Business Intelligence or Enterprise Editions of SSRS 2012, you will be able to use some
new features, such as data-driven subscriptions, custom security extensions, scale-out
capabilities, alerting, and Power View. For information about the new features, see the
"Reporting Services" section in Features Supported by the Editions of SQL Server 2012
(http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx#reporting).
For complete information about version and edition upgrade paths, see Chapter 1,
“Upgrade Planning and Deployment,” and Supported Version and Edition Upgrades
(http://msdn.microsoft.com/en-us/library/ms143393(v=SQL.110).aspx) in SQL Server
2012 Books Online.
Note: This document does not discuss the integration of new features in
conjunction with an upgrade of a database instance to SQL Server 2012.
Upgrade Considerations
When upgrading from SSRS 2005, SSRS 2008, or SSRS 2008 R2 to SSRS 2012, you
should consider the following possible issues.
SSRS is installed as a default instance. If the report server database resides within the
default instance of SQL Server on the same server, the relational engine and the report
server must be upgraded together if you are performing an in-place upgrade. In this
case, the SQL Server 2012 Setup program upgrades the relational engine first and then
upgrades the report server components. When the report server database is upgraded,
the Setup program modifies the table structures to reflect the schema needed for SSRS
2012. Most (if not all) schema changes occur when the upgraded Report Server service
starts up and runs its auto-upgrade functionality.
SQL Server 2012 Upgrade Technical Guide 388
You can upgrade the Reporting Services component without upgrading the
relational engine. If the report server database resides within a named instance of SQL
Server (2008 SP2 or later) on the same server or resides on a remote server, you can
upgrade the Reporting Services component without upgrading the relational engine. In
this case, on startup of the upgraded Report Server service, the auto-upgrade feature
modifies the table structures of the report server database to reflect the schema
needed for SSRS 2012. The SQL Server 2012 Report Server service will continue to
connect to the SQL Server (2008 SP2 or later) relational engine, with the new database
schema in place.
SSRS includes client and server components. If you upgrade an SSRS 2005
installation to SSRS 2012 (i.e., upgrade the server components), you should also
upgrade the client components used by all report developers. Although it is possible to
use the prior version of Report Designer with an SSRS 2012 server, report developers
might see a disparity between report preview in Report Designer and how the report is
rendered at runtime. Note, however, that once you upgrade Report Designer on a
given client, you can no longer use it to publish reports to an SSRS 2005 server. Report
namespace differences prevent publishing to the prior version of the report server, but
you can still use Report Designer from SSRS 2012 to deploy to SQL Server 2008 or later
by setting the TargetServerVersion property.
If you have the client components of SSRS 2005, SSRS 2008, or SSRS 2008 R2
installed on a report server, upgrading the server to SSRS 2012 will remove them.
If you need the previous SSRS 2005, SSRS 2008, or SSRS 2008 R2 client components,
you can reinstall them after the upgrade is complete.
If you need to upgrade a scale-out deployment, you must upgrade each SSRS
2005, SSRS 2008, or SSRS 2008 R2 report server in the scale-out deployment. You
can upgrade the servers in any order, but you should stop all the report servers until all
the upgrades are complete. To stop an SSRS 2005 report server, simply stop Microsoft
Internet Information Services (IIS) and the Reporting Services Windows service. To stop
an SSRS 2008 or SSRS 2008 R2 report server, you should use Reporting Services
Configuration Manager to stop the report server instance. When the first report server
is upgraded, the shared report server database will be upgraded. After finishing the
upgrades, simply restart the Reporting Services Windows service on each report server.
Here are some general upgrade notes and best practices you should understand before
building your upgrade plan for SSRS:
Before upgrading SQL Server, enable Windows Authentication for SQL Server
Agent and verify the default configuration. (For example, verify that the SQL
Server Agent service account is a member of the SQL Server sysadmin group.)
Before upgrading from one edition of SQL Server to another, verify that the
functionality you are currently using is supported in the edition to which you are
upgrading. For more information, see the section for your component in
Features Supported by the Editions of SQL Server 2012
(http://technet.microsoft.com/en-us/library/cc645993(SQL.110).aspx) in SQL
Server 2012 Books Online.
The upgrade will be blocked if the Windows Installer service is not running.
To upgrade SQL Server 2005 to SQL Server 2012 on a computer that is running
Windows Server 2008, you must be running SQL Server 2005 Service Pack 4
(SP4).
In-Place Upgrade
With an in-place upgrade, SSRS 2005, SSRS 2008, or SSRS 2008 R2 is removed and
replaced by SSRS 2012. During the upgrade process, the SSRS databases are upgraded,
and users will not be able to access SSRS 2005, SSRS 2008, or SSRS 2008 R2 reports.
After the in-place upgrade is complete, only SSRS 2012 will remain. With an in-place
upgrade, you test SSRS 2012 after removing the previous SSRS version.
With a side-by-side upgrade, you install an instance of SSRS 2012 alongside SSRS 2005,
SSRS 2008, or SSRS 2008 R2, which remains until uninstalled. During the upgrade
process, users can continue to access the SSRS 2005, SSRS 2008, or SSRS 2008 R2
reports (unaffected by the upgrade process), but performance might be slower. After
SSRS 2012 is fully tested, you can uninstall your previous SSRS version.
Note: With a side-by-side upgrade, you can either use a copy of the existing report
server database for the new installation or redeploy reports and re-create server
settings on a new server. For more information about this process, see Migrate a
Reporting Services Native Mode Installation (http://technet.microsoft.com/en-
us/library/ms143724(v=sql.110).aspx) in SQL Server 2012 Books Online.
Important: The side-by-side upgrade option provides for greater availability during
the upgrade process, simplifies rollback (if it is required), and results in simpler
testing scenarios because both versions are available at the same time.
Table 1 shows which upgrade options can be applied to the SSRS 2005, SSRS 2008, and
SSRS 2008 R2 configurations described earlier in this chapter. Note that you can use
these options regardless of which edition of SSRS 2005, SSRS 2008, or SSRS 2008 R2 is
in place.
Table 1: Upgrade Options for SSRS 2005, SSRS 2008, and SSRS 2008 R2
Preparing to Upgrade
Before beginning an in-place upgrade of SSRS, take steps to ensure that a failed
upgrade can be rolled back. Although the in-place upgrade process has been designed
and tested to handle almost all situations, unforeseen problems might occur and result
in a failed upgrade. In extreme cases, a failed upgrade might even result in an unusable
SSRS 2005, SSRS 2008, or SSRS 2008 R2 installation. Thus, planning for a failed upgrade
process is critical.
For detailed, step-by-step instructions on how to prepare for an upgrade, see Section
Modifying the configuration files is necessary only if you are adding or configuring
advanced settings. Configuration settings are specified as either XML elements or
attributes. If you understand XML and configuration files, you can use a text or code
editor to modify user-definable settings. For more information about how to modify a
configuration file or to learn more about how the report server reads new and updated
configuration settings, see Modify a Reporting Services Configuration File
(RSreportserver.config) (http://technet.microsoft.com/en-
us/library/bb630448(v=sql.110).aspx) in SQL Server 2012 Books Online.
Note: To review a list of which settings were deleted or moved, see Breaking
Changes in SQL Server Reporting Services in SQL Server 2012
(http://technet.microsoft.com/en-us/library/ms143380(SQL.110).aspx) in SQL Server
2012 Books Online.
Deprecated Features
This section describes SSRS features that have been deprecated and will not be
supported in future releases.
Semantic modeling language (SMDL) report models are being deprecated. Although
you can you continue to use existing SMDL report models as data sources in SQL
Server 2012 Reporting Services reports, you should consider updating your reports to
remove their dependency on them.
Discontinued Functionality
When this guide was being written, there were no discontinued features in SSRS 2012.
Before you upgrade, see Discontinued Functionality to SQL Server Reporting Services in
SQL Server 2012 (http://msdn.microsoft.com/en-us/library/ms144231(v=sql.110).aspx)
in SQL Server 2012 Books Online for any last-minute changes.
Breaking Changes
Breaking changes in SSRS are those that might break applications, scripts, or
functionalities that are based on earlier versions of SQL Server. You might encounter
these issues when you upgrade or in custom scripts or reports. SQL Server 2012
Upgrade Advisor identifies many breaking changes. Chapter 1, “Upgrade Planning and
Deployment,” and Use Upgrade Advisor to Prepare for Upgrades
(http://msdn.microsoft.com/en-us/library/ms144256(v=sql.110).aspx) in SQL Server
2012 Books Online describe how to use this tool to find and fix problems before the
upgrade.
Behavior Changes
There are a number of behavior changes in this release that might require corrective
action after the upgrade is complete. In this section, we look at fundamental changes
to this release functionality that might affect how you work.
View Items Permission Will Not Download Shared Datasets (SharePoint Mode)
In SSRS 2012, users with the SharePoint permission of View Items can no longer
download the contents of Reporting Services shared data sets like they did in previous
SSRS versions. This behavior change is now consistent with the View Items permissions
for reports, data sources, and models.
For complete information about the behavior changes in SSRS 2012, see Behavior
Changes in SQL Server Reporting Services in SQL Server 2012
(http://technet.microsoft.com/en-us/library/ms143200(SQL.110).aspx) in SQL Server
2012 Books Online.
For complete information about updating report projects and definitions, see Section
14.2.7 “Updating Report Projects and Definitions for Use in BI Development Studio” in
Chapter 14 of the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
In the SQL Server 2012 version of BIDS, you can work with SQL Server 2012, SQL Server
2008, or SQL Server 2008 R2 versions of report definitions and Report Server projects.
You can edit, preview, and deploy any version of the reports.
Upgrade Tools
SQL Server 2012 Upgrade Advisor helps you prepare for upgrades to SQL Server 2012.
Upgrade Advisor analyzes installed components from earlier versions of SQL Server and
then generates a report that identifies issues to fix either before or after you upgrade.
For information about how to install and run Upgrade Advisor, see Chapter 1, "Upgrade
Planning and Deployment."
64-Bit Considerations
Cross-platform upgrades are not supported. You cannot upgrade a 32-bit instance of
SQL Server to native 64-bit. However, you can upgrade a 32-bit instance of SQL Server
to Windows On Windows 64 (WOW64), the 32-bit subsystem on a 64-bit server. You
can also back up or detach databases from a 32-bit instance of SQL Server and then
restore or attach them to a 64-bit instance of SQL Server if the databases are not
published in replication. In this case, you must also re-create any logins and other user
objects in the master, msdb, and model system databases.
Review the most important upgrade issues, whether detected by Upgrade Advisor or
not. For a comprehensive list of backward-compatibility issues, breaking changes, and
For a complete list of the SSRS upgrade issues that Upgrade Advisor detects, see
“Reporting Services Upgrade Issues” in the SQL Server 2012 Upgrade Advisor Help file.
For more information about known issues and workarounds, see Section 14.2.10
“Known Issues and Workarounds” in Chapter 14 of the SQL Server 2008 R2 Upgrade
Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
2. Use the System Configuration Checker (SCC) to scan the report server for any
conditions that might prevent a successful installation of SQL Server 2012. For
more information, see Check Parameters for the System Configuration Checker
(http://msdn.microsoft.com/en-us/library/ms143753(v=sql.110).aspx) in SQL
Server 2012 Books Online.
3. Review security best practices and guidance for SQL Server. For more
information, see Security Considerations for a SQL Server Installation
(http://msdn.microsoft.com/en-us/library/ms144228(v=sql.110).aspx) in SQL
Server 2012 Books Online and Chapter 5, “Database Security,” in this guide.
4. Run Upgrade Advisor on the report server to determine any issues that might
prevent you from successfully upgrading.
5. Back up your symmetric key. For details, see Back Up and Restore Reporting
Services Encryption Keys (SSRS Native Mode) (http://msdn.microsoft.com/en-
us/library/ms157275(v=sql.110).aspx) in SQL Server 2012 Books Online.
6. Back up your report server databases. For details, see Moving the Report Server
Databases to Another Computer (http://msdn.microsoft.com/en-
us/library/ms156421(v=sql.110).aspx) in SQL Server 2012 Books Online.
a. Rsreportserver.config
b. Rswebapplication.config
c. Rssvrpolicy.config
d. Rsmgrpolicy.config
e. Reportingservicesservice.exe.config
f. Web.config (for both the report server and Report Manager ASP.NET
applications)
Before you upgrade a production environment, always run a test upgrade in a pre-
production environment that has the same configuration as your production
environment. To view a list of considerations for upgrading SSRS, see Upgrade and
Migrate Reporting Services (http://msdn.microsoft.com/en-
us/library/ms143747(v=sql.110).aspx) in SQL Server 2012 Books Online.
In-Place Upgrade
If you are performing an in-place upgrade of an SSRS 2005 installation to SSRS 2012,
you need to know the following: If SSRS 2005 is installed as a default instance and the
report server database resides within the default instance of SQL Server 2005 on the
same server, the relational engine and the report server must be upgraded together.
You cannot upgrade the Reporting Services component without upgrading the
relational engine. If the report server database resides within a named instance of SQL
Server on the same server or resides on a remote server (SQL Server 2005), you must
upgrade the Database Engine instance hosting the remote catalog first and then
upgrade the Reporting Services component.
Here are the steps for upgrading SSRS 2005 to SSRS 2012 (you follow the same steps
for an in-place upgrade from SSRS 2008 or SSRS 2008 R2 to SSRS 2012):
1. Insert the SQL Server installation media. From the root folder, double-click
Setup.exe. To install from a network share, navigate to the root folder on the
share, and then double-click Setup.exe.
2. If the server operating system that hosts the SSRS instance you want to upgrade
does not meet the minimum requirements for SQL Server 2012, Setup will block
the setup and pop up a message specifying the minimum requirements (see
Figure 1). Click OK, install the minimum requirements, and then restart Setup.
3. When the prerequisites are installed, the Installation Wizard lets you go forward
and launch the SQL Server Installation Center. To upgrade an existing instance of
SQL Server, click the Upgrade from SQL Server 2005, SQL Server 2008, or SQL
Server 2008 R2 option on the installation page. Figure 2 shows the upgrade
selection screen.
4. The Setup Support Rules process will check all the rules concerning the setup
files. If any rule reports a failure, you must correct the problem, which you can
do without closing Setup. After fixing the problem, you need to rerun the Setup
Support Rules process by clicking the Re-run button. Click Next to continue.
5. On the Product Key page, click a radio button to indicate whether you are
upgrading to a free edition of SQL Server or whether you have a PID key for a
production version of the product.
6. On the License Terms page, read the license agreement, and then select the
check box to accept the licensing terms and conditions. To continue, click Next.
To end Setup, click Cancel.
7. The Product Updates window lets Setup install the latest updates. Click Next to
look for the latest updates and include them in the installation process.
8. The Setup Support Rules process again checks for issues that might prevent the
proper installation of the Setup support files. If any rule reports a failure, you
must correct the problem, which you can do without closing Setup. After fixing
the problem, you need to rerun the Setup Support Rules process by clicking the
Re-run button. Click Next to continue.
10. On the Select Features page, the features to upgrade will be pre-selected. A
description for each component group appears in the right-hand pane after you
select the feature name. Note that you cannot change the features to be
upgraded, and you cannot add features during the upgrade operation. To add
features to an upgraded instance of SQL Server 2012 after the upgrade
operation is complete, see Add Features to an Instance of SQL Server 2012
(Setup) (http://msdn.microsoft.com/en-us/library/cc281940(v=sql.110).aspx) in
SQL Server 2012 Books Online. Figure 4 shows the Select Features screen. Click
Next to continue.
11. In the Instance Configuration page, you are prompted to specify the name and
instance ID for the instance of SQL Server. The instance ID becomes part of the
installation path. This is used to identify installation directories and registry keys
for your instance of SQL Server. This is the case for default instances and named
instances. For a default instance, the instance name and instance ID would be
MSSQLSERVER. To use a non-default instance ID, specify a different value in the
Instance ID text box. Click Next to continue.
12. The Disk Space Requirements page calculates the required disk space for the
features you specify and then compares the required disk space to the available
disk space on the computer where Setup is running. Click Next to continue.
13. In the Service Accounts tab on the Server Configuration page, you can specify
the login accounts for the SQL Server services. The actual services that are
configured on this page depend on the features installed. Click Next to continue.
Note: The workflow for the remainder of this topic depends on the features
you have specified for your installation. You might not see all of the pages,
depending on your selections.
15. On the Error and Usage Reporting page, specify the information you would like
to send to Microsoft that will help to improve SQL Server. By default, options for
error reporting and feature usage are enabled.
16. The Setup Support Rules process will check one more set of rules to validate
your computer configuration with the SQL Server features you have specified
before the upgrade operation begins. If some rule failed, you should install the
needed component or apply the corrective action. For example, if Microsoft .NET
Framework 3.5 SP1 is not installed, the Setup Support Rules process will prompt
you to install the feature, depending on the operating system used.
17. The Ready to Upgrade page displays a tree view of upgrade options that were
specified during Setup. To continue, click Install. During the upgrade, the
Upgrade Progress page provides a status bar so that you can monitor the
progress as Setup proceeds.
18. After installation, the Complete page (see Figure 5) provides a link to the
summary log file for the installation and other important notes. For information
about Setup log files, see View and Read SQL Server Setup Log Files
(http://msdn.microsoft.com/en-us/library/ms143702(v=sql.110).aspx) in SQL
Server 2012 Books Online. To complete the installation process, click Close.
For more information about upgrading to SQL Server 2012, see Upgrade to SQL Server
2012 using the Installation Wizard (Setup) (http://msdn.microsoft.com/en-
us/library/ms144267(v=sql.110).aspx) in SQL Server 2012 Books Online.
Side-by-Side Upgrade
You can upgrade SSRS 2005 installations to SSRS 2012 by using the side-by-side
upgrade method. You can perform a side-by-side upgrade on a single server (the
existing report server) or by using two servers (to take advantage of new hardware, for
example).
When you perform the upgrade on a single server, you install a new instance of SSRS
2012 alongside the existing SSRS 2005 installation and then manually move report
server content, report definitions, and other configuration information to the new
instance. When you perform the upgrade by using two servers, you install SSRS 2012
on the new server (as the default instance or as a named instance) and then perform
the same manual movement of report server content, report definitions, and
configuration information.
The first step for a side-by-side upgrade is to install (but not configure) SSRS 2012. The
following points should be considered when planning a single-server or a two-server
upgrade process:
If an additional server is available and will serve as the new SSRS 2012 report
server, you can install SSRS 2012 as the default instance or as a named instance
on the new server. After the upgrade (and testing) is complete, you can
decommission the old report server or reuse it for other purposes.
For information about installing SQL Server 2012, see Install SQL Server 2012 from the
Installation Wizard (Setup) (http://msdn.microsoft.com/en-
us/library/ms143219(v=sql.110).aspx).
For complete information about installing the new instance, see Section 14.3.2.1
“Installing the New Instance” in Chapter 14 of the SQL Server 2008 R2 Upgrade
Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
For complete information about configuring the new instance, see Section 14.3.2.2
“Configuring the New Instance” in Chapter 14 of the SQL Server 2008 R2 Upgrade
Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
1. The schema is upgraded automatically after setup and service startup or when
you select a SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2 report
server database in the Reporting Services Configuration tool. In addition, the
Report Server service checks the database version at startup. If the report server
is connected to a database that is an earlier version, the report server will update
the database during startup.
Note: Published reports and compiled report snapshots are updated on first
use. For more information, see Upgrade Reports
(http://msdn.microsoft.com/en-us/library/ms143674(v=sql.110).aspx) in SQL
Server 2012 Books Online.
2. Use the Report Manager URL option to configure a URL to access Report
Manager. You can use the default values provided or specify different values.
You can use any names for Report Manager URLs except virtual directory names
already in use. Thus, because the original instance of SSRS 2005 is still installed
and running, you should not name the virtual directories ReportServer or
Reports (the default names for the virtual directories created when SSRS 2005,
SSRS 2008, or SSRS 2008 R2 is installed). Click Apply before changing to another
section to save the changes.
3. After the database connection has been established, use the Encryption Keys
option to restore the symmetric encryption key extracted and saved as part of
the pre-upgrade planning process. Select Restore, and provide the filename and
password used with the rskeymgmt utility to extract and save the key from the
SSRS 2005 instance. Figure 7 shows this option being used to restore a
symmetric encryption key.
Note: If the symmetric encryption key has not yet been extracted from SSRS
2005, simply do so by using the rskeymgmt utility (found in the
<Drive:>\Program Files\Microsoft SQL Server\90\Tools\Binn\ directory if
running 32 bit or <Drive:>\Program Files(x86)\Microsoft SQL
Server\90\Tools\Binn\ if running x64). If you cannot restore the encryption
key for some reason, you will have to use the Delete option to delete existing
encrypted content. Note that, in this case, you will have to manually recreate
any encrypted content (such as existing data source credentials) after the
upgrade.
4. Use the configuration tool’s Email Settings and Execution Account options to
establish other extended configuration settings for SSRS 2012. Use these options
to set these extended options for the new instance.
5. After you use the configuration tool to complete the configuration of the new
instance, the new instance should be ready for use. Start the Report Manager
interface by using a URL referring to the newly configured virtual directory for
the Report Manager application. For example, if the virtual directory is named
Reports_SQL2012, you can use the URL http://MachineName/Reports_SQL2012
to launch the new version of the Report Manager application. When opened, the
report folders and contents (data sources, reports, and other report item files)
available within SSRS 2005 should be present and available within SSRS 2012.
In-Place Upgrade
When upgrading an installation of SSRS 2008 in place to SSRS 2012, the upgrade
process handles all aspects of the upgrade, automatically updating report server
content, report definitions, and component configurations. Note, however, that this
upgrade does not automatically handle updates to client workstations and computers
that have the Report Designer or management tools installed. You will have to upgrade
those workstations and computers after you upgrade the report server.
You can upgrade the Reporting Services component without upgrading the relational
engine. If the report server database resides within a named instance of SQL Server
2008 SP2 on the same server or resides on a remote server, you can upgrade the
Reporting Services component without upgrading the relational engine. In this case, on
startup of the upgraded Report Server service, the auto-upgrade feature modifies the
table structures of the report server database to reflect the schema needed for SSRS
2012. The SQL Server 2012 Report Server service will continue to connect to the SQL
Server 2008 SP2 relational engine, with the new database schema in place. If a SQL
Server 2005 Database Engine instance is hosting the report server database, you cannot
upgrade the Reporting Services component without upgrading the relational engine. If
the report server database resides within a named instance of SQL Server on the same
server or resides on a remote server (SQL Server 2005), you must upgrade the Database
Engine instance hosting the report server database first and then upgrade the
Reporting Services component.
Note: The minimum product level requirements to upgrade SQL Server 2008 to SQL
Server 2012 is SQL Server 2008 Service Pack 2 (SP2) either remote catalog or default
instance.
Upgrading from SSRS 2008 to SSRS 2012 via the Setup application is identical to
upgrading from SSRS 2005 via the Setup application. For detailed steps, see
“Upgrading via the Setup Application” in the “Upgrading from SQL Server 2005” section
earlier in this chapter.
After you have installed the new SSRS 2012 instance, you should use the Reporting
Services Configuration tool to configure it. Start the tool from the Configuration Tools
group within the Microsoft SQL Server 2012 Start menu group.
The steps for configuring the new instance are the same as in an SSRS 2005 upgrade.
You can find those steps in “Configuring the New Instance” in the “Upgrading from SQL
Server 2005” section earlier in this chapter.
In-Place Upgrade
When upgrading an installation of SSRS 2008 R2 in place to SSRS 2012, the upgrade
process handles all aspects of the upgrade, automatically updating report server
content, report definitions, and component configurations. Note, however, that this
upgrade does not automatically handle updates to client workstations and computers
that have the Report Designer or management tools installed. You will have to upgrade
those workstations and computers after you upgrade the report server.
You can upgrade the Reporting Services component without upgrading the relational
engine. If the report server database resides within a named instance of SQL Server
2008 SP2 on the same server or resides on a remote server, you can upgrade the
Reporting Services component without upgrading the relational engine. In this case, on
startup of the upgraded Report Server service, the auto-upgrade feature modifies the
table structures of the report server database to reflect the schema needed for SSRS
2012. The SQL Server 2012 Report Server service will continue to connect to the SQL
Upgrading from SSRS 2008 R2 to SSRS 2012 via the Setup application is identical to
upgrading from SSRS 2005 via the Setup application. For detailed steps, see
“Upgrading via the Setup Application” in the “Upgrading from SQL Server 2005” section
earlier in this chapter.
Side-by-Side Upgrade
Upgrading from SSRS 2008 R2 to SSRS 2012 via the side-by-side method is identical to
doing a side-by-side upgrade from SSRS 2005. For detailed steps, see “Side-by-Side
Upgrade” in the “Upgrading from SQL Server 2005” section earlier in this chapter.
The steps and options for installing the new instance are the same as in an SSRS 2005
upgrade. You can find those steps in the “Installing the New Instance” section under
“Upgrading from SQL Server 2005.”
After you have installed the new SSRS 2012 instance, you should use the Reporting
Services Configuration tool to configure it. Start the tool from the Configuration Tools
group within the Microsoft SQL Server 2012 Start menu group.
The steps for configuring the new instance are the same as in an SSRS 2005 upgrade.
You can find those steps in “Configuring the New Instance” in the “Upgrading from SQL
Server 2005” section earlier in this chapter.
Each execution of Setup will generate a new time-stamped log folder. For example, if
you start the SQL Server Installation Center page, it gets its own time-stamped log
folder, and each Setup action invoked from that page gets its own as well, so you will
probably see several time-stamped log folders in this directory. The time-stamped log
folder name format is YYYMMDD_hhmmss.
You can find detailed Setup logs at the following location: <drive>:\Program
Files\Microsoft SQL Server\110\Setup Bootstrap\LOG\.
When looking for errors in the detail log, search for the following phrases:
Watson bucket
Error:
2. Component update
3. User-requested action
Each of these phases will generate detail and summary logs, with additional log files
being generated as appropriate. Setup is called at least three times per user-requested
Setup action.
Detail_GlobalRules.txt
Detail_ComponentUpdate.txt
Detail.txt
Datastore files contain a snapshot of the state of all configuration objects being tracked
by the Setup process and are useful for troubleshooting configuration errors. XML file
dumps are created for datastore objects for each execution phase. They are saved in
their own log subfolder under the time-stamped log folder, as follows:
Datastore_GlobalRules
Datastore_ComponentUpdate
Datastore
For more information, see View and Read SQL Server Setup Log Files
(http://msdn.microsoft.com/en-us/library/ms143702(v=sql.110).aspx) in SQL Server
2012 Books Online.
Post-Upgrade Tasks
After upgrading to SSRS 2012 from SSRS 2005, SSRS 2008, or SSRS 2008 R2, it is
important to ensure that the upgrade ran successfully and to configure SSRS 2012:
2. Review the configuration settings by selecting each of the items in the left pane
of the tool. If any of the settings seem incorrect or are missing, update the
settings and save the changes.
3. Ensure that the report server is behaving as expected by running a sample set of
the reports deployed to the server. Start Report Manager by using the correct
URL (for example, http://locahost/Reports for an upgraded default instance or
http://localhost/Reportsnew for a newly installed and configured named
instance). At a minimum, you should select and execute reports to verify that the
following report server features and capabilities (if used) are working correctly:
Custom rendering and delivery extensions. You should fully test any
custom rendering and delivery extensions to ensure that each is working
correctly. Remember, you must recompile all custom extensions created
for SSRS 2000 or SSRS 2005 to use the Common Language Runtime (CLR)
provided with Visual Studio 2008.
4. SSRS 2005, SSRS 2008, and SSRS 2008 R2 come with an ad hoc reporting tool
called Report Builder. If you want to use this feature, you need to change the
existing security role definitions to provide end-user access to Report Builder.
Consider updating the existing role definitions as Table 2 shows.
Existing
Role
Definition Suggested Changes
Browser Add View Models to grant permission to view published Report Builder
models.
Content Add Manage Models, View Models, and Consume Reports to grant full
Manager permission over models and to provide the ability to create and modify
reports in Report Builder.
Publisher Add Manage Models to grant permission to create, view, and delete Report
Builder models.
System Add Execute Report Definitions to run reports using Report Builder.
Administrator
System User Add Execute Report Definitions to run reports using Report Builder.
For more information about manually move existing files, see Section 14.7.1 “Moving
Reports Between SSRS 2000 and SSRS 2005, or SSRS 2005 and SSRS 2008 R2” in
Chapter 14 of the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
Moving Reports Between SSRS 2008, SSRS 2008 R2, and SSRS 2012
A report definition file includes a reference to the RDL namespace that specifies the
version of the report definition schema that is used to validate the .rdl file. In the SQL
Server 2012 version of BIDS, you can work with both SQL Server 2012 and SQL Server
2008 versions of report definitions and Report Server projects. You can edit, preview,
and deploy any version of the reports.
If you open, update, and then save a SQL Server 2008 report definition, it is saved as a
SQL Server 2008 report definition unless you added features that are new in SQL Server
2012. In such a case, the report definition is saved as a SQL Server 2012 report
definition to ensure that the definition is valid and the report will run. For more
information, see Deployment and Version Support in SQL Server Data Tools (SSRS)
(http://msdn.microsoft.com/en-us/library/ee635898(v=sql.110).aspx) in SQL Server
2012 Books Online.
When you open an .rdl file in Report Designer in BIDS that was created for the SQL
Server 2005 namespace, Report Designer automatically creates a backup file and
upgrades the report to the current namespace. If you save the upgraded report
definition, you have saved the converted .rdl file. As soon as you save it, you cannot
open it in earlier versions of Report Designer. This is the only way you can upgrade
these versions of report definition files.
If you deployed and used any custom extensions or custom assemblies for reports with
SSRS 2005, you need to redeploy the extensions or assemblies for use with SSRS 2012,
as explained in Section 14.7.3 “Deploying Custom Extensions and Assemblies” in
Chapter 14 of the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
For more information, see Section 14.7.4 “Verifying Configuration Files” in Chapter 14
of the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
For more information, see Section 14.7.5 “Uninstalling SSRS 2000, SSRS 2005, or SSRS
2008” in Chapter 14 of the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
Conclusion
The key to a successful SSRS upgrade is a detailed, well-thought-out upgrade plan,
including a review of possible upgrade issues and a rollback strategy in case of a failed
upgrade. In planning for a rollback, you should include backups of at least the
following elements:
Use Upgrade Advisor to help discover blocking issues related to SSRS. And determine
the appropriate upgrade method for your organization and configuration. This chapter
discusses several advantages and disadvantages of using each method for upgrading
SSRS. For example, the side-by-side method is easy to roll back because your original
instance remains intact, whereas an in-place upgrade might be faster, but you would
have to restore the previous instance in case of a failed upgrade.
By following the preparation guidance and upgrade steps in this chapter, you should
have a smooth transition to SSRS 2012.
Additional References
For an up-to-date collection of additional references for upgrading SQL Server 2012,
see the following links:
The data mining success story continues in SSAS 2008 and SSAS 2008 R2. Using the
foundation that SSAS 2005 laid, Microsoft enhanced data mining in SSAS 2008, adding
new features and improving existing functionality. In SSAS 2008 R2 and SSAS 2012,
Microsoft focused on other parts of the BI suite, especially on the Business Intelligence
Semantics Model (BISM), and therefore data mining does not differ from SSAS 2008.
There are behavior and even breaking changes that you need to consider before
upgrading SQL Server 2005, 2008, or 2008 R2 to SQL Server 2012. There is a new
developer’s tool, SQL Server Data Tools (SSDT), that replaces Business Intelligence
Development Studio (BIDS). You can install SSAS 2012 in Tabular or Multidimensional
mode; data mining is included in Multidimensional mode only. In addition to covering
those changes, this chapter discusses the key steps you must take to prepare for and
perform a successful upgrade—as well as important post-upgrade tasks. We have also
collected references to the most essential data mining upgrade resources, including the
following:
For details about data mining functionality in SSAS 2012, see Data Mining (SSAS)
(http://msdn.microsoft.com/en-us/library/bb510516(SQL.110).aspx) in SQL
Server 2012 Books Online.
For additional SQL Server data mining information, see the Data Mining forum
(http://social.msdn.microsoft.com/Forums/en-US/sqldatamining/threads).
EE = Enterprise Edition, available in SQL Server 2005, 2008, 2008 R2, and 2012
SE = Standard Edition, available in SQL Server 2005, 2008, 2008 R2, and 2012
WE = Web Edition, available in SQL Server 2008, 2008 R2, and 2012
SSE = SQL Server Express Edition and Express with Tools, available in SQL Server
2005, 2008, 2008 R2, and 2012
SSEA = SQL Server Express Edition with Advanced Services, available in SQL
Server 2005, 2008, 2008 R2, and 2012
In addition to the editions just mentioned, Microsoft offers the Developer Edition and
the Enterprise Evaluation Edition. They have the same functionality as the Enterprise
Edition, but the licensing is different. Data mining features are supported on quite
granular level in SQL Server 2005, 2008, and 2008 R2, as Table 1 shows. Cells with a
light gray background show editions and features available in SQL Server 2008 and SQL
Server 2008 R2 only.
As you can see, in SQL Server 2008 R2, many features are supported in the Enterprise
and Datacenter Editions only. Beside those two editions, Standard is the only edition
that supports data mining.
Microsoft simplified licensing for SQL Server 2012. There are fewer editions, with the
three major ones being the Standard, Business Intelligence, and Enterprise Editions.
Basic data mining starts with the Standard Edition, and all data mining features are
available in the Business Intelligence and Enterprise Editions. Table 2 shows details of
data mining features supported by the different editions of SQL Server 2012.
Please note that if you are planning to downgrade an edition when migrating from SQL
Server 2008 R2 to SQL Server 2012—for example, downgrading from the Enterprise
Edition to the Business Intelligence Edition—you are going to lose some data mining
functionality. Edition downgrading is not a supported in-place upgrade path, so you
would have to migrate your mining models using other means, as we describe later in
this chapter. Because SQL Server 2012 brings quite a few data mining enhancements
compared to SQL Server 2005, rebuilding your 2005 forecasting data mining models is
probably the best strategy. Additional validation of the 2005 predictive model is
Preparing to Upgrade
After you select the SQL Server 2012 edition that suits your needs, you need to
investigate which features are deprecated in SQL Server 2008 R2. These features will
not affect your upgrade, but you will need to update your models to stop using them
before your next upgrade. You also need to know what functionality cannot be
upgraded because is it discontinued or because it has changed in SQL Server 2012. And
you also need to be aware of some behavior changes between data mining in SQL
Server 2005, 2008, 2008 R2, and 2012; otherwise, you could get unexpected results.
Let’s look at each of these categories of changes. This section also notes potential
issues with data mining models. For a complete reference of SSAS changes in SQL
Server 2012, see SQL Server Database Engine Backward Compatibility
(http://msdn.microsoft.com/en-us/library/ms143532(SQL.110).aspx) in SQL Server 2012
Books Online.
Deprecated Features
SSAS 2000 supports the XML markup language called Predictive Model Markup
Language (PMML) 1.0. PMML is a standard language to describe data mining models.
However, the language is incomplete from the standards point of view, although some
specific extensions have been added. In contrast, SSAS 2012 supports standard PMML
2.1 and deprecates SSAS 2000 PMML extensions, meaning that you should not use
them. Note that this is probably not a big issue because you use PMML directly only if
you export your SSAS 2000 mining models to PMML. You can create a mining model in
SSAS 2012 from PMML and store it in an SSAS 2012 database. If you export it from
SSAS 2012, standard PMML will be generated. Some of the most important SQL Server
2000 extensions to PMML 1.0 include:
The Discretized, Ordered, and Cyclical model variables besides the simple
Categorical and Continuous model variables.
All model variables can have a missing state described, even those with a
continuous domain.
For a complete specification of SQL Server 2000 Data Mining functionality and
extensions, see OLE DB for Data Mining Specification 1.0
(http://www.microsoft.com/downloads/en/details.aspx?DisplayLang=en&FamilyID=010
05f92-dba1-4fa4-8ba0-af6a19d30217). For a complete list of deprecated features in
SSAS 2012, see Deprecated Analysis Services Functionality in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143346(SQL.110).aspx) in SQL Server 2012
Books Online.
Discontinued Functionality
There’s only a short list of discontinued data mining functionality from SSAS 2005 to
SSAS 2008, SSAS 2008 R2, and SSAS 2012:
In SSAS 2012, the OLE DB provider does not support the Mining Execution Location
and Mining Location properties. Although you can specify the Mining Execution
Location property in a connection string, SSAS 2012 ignores the setting. If you need to
upgrade your mining models from SQL Server 2000, please note that a direct upgrade
path to 2012 is not supported anymore. You should upgrade to SQL Server 2005, 2008,
or 2008 R2 first. Because a direct upgrade path is not supported, note that the
following is discontinued as well:
Decision Support Objects (DSO) library, which provides compatibility with SSAS
databases
You can find the complete list of SSAS 2012 discontinued functionality in Discontinued
Analysis Services Functionality in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143229(SQL.110).aspx) in SQL Server 2012 Books Online.
ODBC data sources are not supported in SSAS 2012. If you are using ODBC data
sources, you need to change them to OLE DB providers.
DSOs are not installed by default when you install SQL Server 2012.
You can use Visual Basic for Applications (VBA) functions in your Data Mining
Extensions (DMX) statements. However, VBA functions handle NULL values
differently in SSAS 2012. In SSAS 2005, VBA functions return 0 or an empty
string when NULL or empty values are used as arguments. In SQL Server 2012,
VBA functions return NULL.
For information about some of these breaking changes, see Breaking Changes to
Analysis Services Features in SQL Server 2012 (http://msdn.microsoft.com/en-
us/library/ms143742(SQL.110).aspx) in SQL Server 2012 Books Online.
Behavior Changes
There are no specific behavior changes in the mining models when you upgrade them
from SSAS 2005, 2008, or 2008 R2 to SSAS 2012. To confirm this information, see
Behavior Changes to Analysis Services Features in SQL Server 2012
(http://msdn.microsoft.com/en-us/library/ms143682(SQL.110).aspx) in SQL Server 2012
Books Online.
Chapter 1, “Upgrade Planning and Deployment,” in this guide covers how to install and
use Upgrade Advisor, so we won’t repeat that information here. But to illustrate how to
use Upgrade Advisor related to data mining models, we created a simple SSAS
database on both SSAS 2005 and SSAS 2008 R2 that contain a couple of mining
models and other necessary objects, without OLAP dimensions and cubes. For our
examples, we used the SSAS 2005 AdventureWorksDW sample database.
Figure 1: Selecting the Analysis Services component in the SQL Server Upgrade Advisor
Analysis Wizard
Then we selected the 2005 instance and ran the analysis. After the analysis was finished,
we launched the Upgrade Advisor Report Viewer. As the results in Figure 2 shows, there
were no unresolved issues. This is what we expected because the differences between
the data mining models in SQL Server 2005, 2008, 2008 R2, and SQL Server 2012 are
minor.
You can also expect to have no unresolved issues found in your SSAS 2005 data mining
models when you run Upgrade Advisor. (Similarly, there should be no unresolved issues
found in SSAS 2008 and 2008 R2 models.) However, this does not mean that you
should just upgrade the 2005 models. You should also perform post-upgrade tasks. As
we will show you later in this chapter, it makes sense to revise the 2005 predictive and
forecasting models after upgrading to SSAS 2012.
All objects in the SSAS 2005 database that need to be upgraded for data mining
models in our case include a data source, a data source view, and four mining
structures with seven mining models, as shown in Figure 5.
Figure 5: SSAS 2005 database with all objects that need to be upgraded
Figure 6: SSDT 2012’s Visual Studio Conversion Wizard launches when you open a
BIDS 2005 project
If you want to perform an in-place upgrade, run SQL Server Setup and select the
Upgrade from SQL Server 2005, SQL Server 2008 or SQL Server 2008 R2 link from the
Installation tab of the SQL Server Installation Center, as shown in Figure 7.
Because the upgrading process was already described in previous chapters, we are not
showing all the details here. Just be sure to select the correct SSAS 2005 instance. The
upgraded instance will be in Multidimensional and Data Mining mode; there is no in-
place upgrade to SSAS 2012 Tabular mode available from SQL Server Setup. Note that
after the upgrade, SQL Server 2005 tools such as SQL Server Management Studio
(SSMS) are still left on the computer. However, you cannot use SSMS 2005 to connect
to a SSAS 2012 database, as shown in Figure 8. Naturally, you should be able to
connect to the upgraded instance with SSMS 2012.
Figure 8: Message when you try to connect to an SSAS 2012 instance with SSMS 2005
Side-by-Side Upgrade
For a side-by-side upgrade, you have plenty of options for migrating your mining
models from SSAS 2005 to SSAS 2012:
You can back up the SSAS 2005 database and restore it on SSAS 2012.
With SSMS, you can create an XMLA script for creating the complete database
or any object in the database and then execute the script on SSAS 2012.
You can open the SSAS 2005 project in SSDT 2012 and deploy it on SSAS 2012.
You can reverse-engineer an SSAS 2005 database in SSDT 2012 to create a 2012
project and then deploy the project on SSAS 2012.
You can also quickly import SSAS 2005 data mining models to an SSAS 2012 database
by using the EXPORT and IMPORT DMX commands. However, note that SSAS 2012
supports data mining only if it is installed in Multidimensional and Data Mining mode.
SSAS 2012 in Tabular mode does not support data mining at all, and you cannot
migrate your mining models to an SSAS 2012 Tabular instance.
Chapter 16, “Analysis Services,” covers the options for migrating a complete SSAS
database. So in this section, we focus on the data-mining-specific migration options.
With the EXPORT DMX command, you can export a complete mining structure, one or
more mining models, or a model or structure with dependencies. Exporting with
dependencies means that all objects needed to process the structure, such as the data
source and the data source view, are included in the backup (.abf) file. Here are some
examples of EXPORT commands executed on our sample SSAS 2005 database:
-- Exporting complete structure
EXPORT MINING STRUCTURE [TM2005]
TO 'C:\Upgrade2012WP\TM2005_Structure.abf';
-- Exporting a single model
EXPORT MINING MODEL [TM2005_DT]
TO 'C:\Upgrade2012WP\TM2005_Model.abf';
-- Exporting a model with dependencies
EXPORT MINING MODEL [AR2005]
TO 'C:\Upgrade2012WP\AR2005_Model_Dependencies.abf'
WITH DEPENDENCIES;
If you already have the destination SSAS 2012 database and you need to import only a
mining structure, import it from the backup file with the complete structure, as follows:
Note that if you import from a file with only the mining model, the associated structure
is created as well. Therefore, you cannot have a structure with the same name in the
destination SSAS database. The following command shows an example of importing a
mining model:
This command imports from the file to which you exported the TM2005_DT model. And
as we just noted, the TM2005 structure cannot exist in the destination database
because it is recreated there during the import. If you executed the second import, the
third one fails. If there is no TM2005 structure in the destination database, then the
third import succeeds. After a successful third import, the TM2005 structure contains
only one model, TM2005_DT.
After the import, you should try to process the complete database to check whether all
dependent objects were imported correctly.
Post-Upgrade Tasks
After your upgrade from SSAS 2005 to SSAS 2012, you should check the accuracy and
the robustness of your predictive models before deciding which one to deploy in
production.
Lift Chart
A Lift Chart is the most popular way to view the accuracy of predictive models. For a Lift
Chart, you need to split your data into training and test sets. You use the training set to
train the models and then try to predict the target variable in the test set. Because you
In the chart, notice that there is a total of six curves and lines. The four curves represent
the predictive models, and the two lines represent the Ideal Model and the Random
Guess. The X axis represents the percentage of the overall population (all cases), and
the Y axis represents the percentage of the target population (bike buyers). From the
Ideal Model line (the topmost line) you can see that approximately 50 percent of
Adventure Works customers buy bikes. If you could predict with 100 percent
probability which customer is going to buy a bike and which is not, you would need to
target 50 percent of the population only to get all bike buyers. The lower line is the
Random Guess line. If you would pick out cases of the population randomly, you would
need 100 percent of the cases for 100 percent of bike buyers. Likewise, you would need
Data mining models give better results in terms of percentage of bike buyers than the
Random Guess line but worse results than the Ideal Model line. From the Lift Chart, you
can measure the lift of the mining models from the Random Guess line, which is where
the name Lift Chart comes from. Of course, a model predicts the outcome with less
than 100 percent probability in all ranges of the population; therefore, to get 100
percent of bike buyers, you still need 100 percent of the population. Data mining
models give you interesting results somewhere between zero and 100 percent of the
population. For example, if you take the highest curve, the one right below the Ideal
Model line, you can see that if you select 70 percent of the population based on this
model, you would get nearly 90 percent of bike buyers. From the Mining Legend
window, you can see that this is the Decision Trees curve. In terms of accuracy of
predictions from the demo data used for analysis, the Decision Trees algorithm
generates the best predictions, the Neural Network algorithm generates the second
best, the Naïve Bayes algorithm generates the third best, and the Clustering algorithm
generates the fourth best. In this example, if you checked the Lift Chart in SSAS 2005,
you probably decided to deploy the Decision Trees model into production.
Cross-Validation
A Lift Chart is useful, but it does not tell you how reliable your predictive models are.
You do not know whether they behave the same using different data—that is, how
robust the predictions are with different data sets. In SSAS 2012, you can test the
reliability of predictive models by using cross-validation. With cross-validation, you
partition your training data set into many smaller sections. SSAS creates multiple
models on the cross-sections, using one section at a time as test data and other
sections as training data, and then trains the models and creates many different
accuracy measures across partitions. If the measures across various partitions differ a
lot, the model is not robust on different training/test set combinations.
Figure 10 shows the cross-validation settings you can specify as well as the cross-
validation results of predictive models.
Fold Count. With this setting, you define how many partitions you want to
create in your training data. In Figure 10, three partitions are created. When
partition 1 is used as the test data, the model is trained on partitions 2 and 3.
When partition 2 is used as the test data, the model is trained on partitions 1
and 3. When partition 3 is used as the test data, the model is trained on
partitions 1 and 2.
Max Cases. You can define the maximum number of cases to use for cross-
validation. Cases are taken randomly from each partition. Our example uses
9,000 cases, which means that each partition will hold 3,000 cases.
Target State. You can check overall predictions by leaving this field empty, or
you can check predictions for a single state that you are interested in. In our
example, we are interested in bike buyers (state 1).
The cross-validation report below the settings shows many different measures to help
you check the reliability of your models. For example, the classifications True Positive,
False Positive, True Negative, and False Negative count cases in partitions where the
predicted probability is greater than your accuracy threshold and the predicted state
matches the target state.
You can see in Figure 10 that the True Positive classification of Decision Trees does not
give you very consistent results across partitions. The third partition has approximately
25 percent less True Positive scores than the first two partitions. The True Positive
classification counts cases predicted as positive (bike buyers, in the example) that are
actually positive. In addition, the standard deviation of this measure is quite high.
However, when checking the Neural Network model, which Figure 11 shows, you can
see that it is more consistent for the True Positive classification, which means that this
model is more robust on different data sets than the Decision Trees model.
Model Filtering
In SSAS 2005, you have to create a different mining structure if you want to use just a
subset of data for an additional mining model. In SSAS 2008, 2008 R2, and 2012, you
can filter a specific model to use only a subset of data for training. For example, using
the same structure, you can create a model trained on the complete training set,
another one trained only on the female population subset, and the third one trained
only on the male population subset. You can then compare the performance of the
models trained on the complete population with those trained on the various subsets.
If you used different structures for subsets of training data in SSAS 2005, you should
consider consolidating those structures into one structure in SSAS 2012 so that you can
compare the performance of the models in a single Lift Chart or with a single cross-
validation. To learn more about model filtering, see Filters for Mining Models (Analysis
Services - Data Mining) (http://msdn.microsoft.com/en-
us/library/bb895167(SQL.110).aspx) in SQL Server 2012 Books Online.
How can you measure the quality of forecasted values with the Time Series algorithm
when you do not have the actual data yet? Waiting until the data is available is likely
not practical because by that time, you might already have made wrong decisions
based on your forecasting model. There is a better way to measure the performance of
the Time Series model. Using a specific number of periods from the past, you can try to
forecast present values. If the model performs well for forecasting present values,
probability is good that it will perform well for forecasting future values.
You control the creation of historical models by using two algorithm parameters:
HISTORICAL_MODEL_COUNT and HISTORICAL_MODEL_GAP. The first one controls the
number of historical models that will be built, and the second one controls the number
of time slices between historical models.
The reason for this instability is that SSAS 2005 Time Series use a single algorithm,
Auto-Regression Trees with Cross-Prediction (ARTXP); this algorithm provides good
short-term forecasts only. SSAS notes this instability in long-term forecasts and simply
stops forecasting.
In SSAS 2008, 2008 R2, and 2012, you can use a blend of two different Time Series
algorithms for forecasting. Besides ARTXP, SSAS 2012 provides the Auto-Regressive
Integrated Moving Average (ARIMA) algorithm, which is much better for long-term
forecasts. After you upgrade your Time Series models to SSAS 2012, you should refine
the blend of ARTXP and ARIMA in your models by changing the FORECAST_METHOD
and PREDICTION_SMOOTHING algorithm parameters. The first parameter uses an
automatic method to determine the mixture of the algorithms. The second one
(available only in Enterprise Edition) lets you define the blend manually.
Figure 14 shows the forecast for the R-250 model for sales amount in Europe. As you
can see, forecasts quickly stabilize and even long-term forecasts never achieve
impossible values, such as values lower than zero. However, it appears that the
historical forecasts are unstable. This is because we used only forecasts for two points
in the past (the HISTORICAL_MODEL_GAP parameter), and thus only ARTXP method
was used.
To learn more about Time Series algorithm parameters, see Microsoft Time Series
Algorithm (http://msdn.microsoft.com/en-us/library/ms174923(SQL.110).aspx) in SQL
Server 2012 Books Online.
Migration from SSAS 2008 and 2008 R2 to SSAS 2012 should succeed without
problems and without the need for any additional post-upgrade tasks. This is valid for
any kind of upgrade you use: in-place or side-by-side. In addition, you can use any of
the following methods for a side-by-side upgrade:
You can back up the SSAS 2008 or 2008 R2 database and restore it on SSAS
2012.
You can open the SSAS 2008 or 2008 R2 project in SSDT 2012 and deploy it on
SSAS 2012.
For example, Figure 15 shows the Backup Database window started from SSMS 2008 R2
in order to back up the 2008 R2 version of the database.
In Figure 16, you can see the restore window started in SSMS 2012.
Conclusion
There are many good reasons to upgrade your data mining models to SQL Server 2012.
If you are using SSAS 2005, you probably already measure the accuracy of your
predictive models, but you might decide to deploy a different model based on
reliability. In addition, you can get much better long-term forecasting with the Time
Series algorithm in SSAS 2012. Finally, you can consolidate multiple mining structures
into one if you need to compare mining models trained on only a subset of the
structure data. If you are upgrading from SSAS 2008 or 2008 R2, you do not gain any
new data mining features. However, you will probably want to consolidate all SSAS
databases on a single version, so upgrading your data mining models makes sense.
For upgrading your data mining models, a side-by-side migration is preferred to an in-
place upgrade. The most important reason is that with a side-by-side installation, you
leave your original models intact. However, if you do not have enough hardware power,
you can perform an in-place upgrade. With thorough testing and planning, your
upgrade can go smoothly whether your mining models are in SSAS 2005, 2008, or 2008
R2.
This chapter covers the following Microsoft products as they relate to upgrading to
SQL Server 2012:
For information about Lync Server 2010, see the TechNet Library document
collection at Microsoft Lync Server 2010 (http://technet.microsoft.com/en-
us/library/gg398616.aspx).
For information about Lync Server 2010 and SQL Server 2008, see Configure SQL
Server for Lync Server 2010 (http://technet.microsoft.com/en-
us/library/gg425848.aspx).
For information about upgrading OCS 2007 or OCS 2007 R2 to Lync Server 2010,
download the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
For information about using OCS 2007 with SQL Server 2008 R2, download the
SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
As of this writing, the latest features of SharePoint 2010 that function together with
Microsoft Office are available only through data server features released with SQL
Server 2008 R2.
Note: Upgrading SQL Server beneath SharePoint is not supported in most cases.
Instead, you should use a database migration approach.
For more information about how to use SQL Server 2008 R2 with Windows SharePoint
Services, see SQL Server Integration with SharePoint (http://technet.microsoft.com/en-
us/library/ee210689.aspx) in SQL Server 2008 R2 Books Online.
For more information on upgrading SharePoint 2007 to SQL Server 2008 R2, download
the SQL Server 2008 R2 Upgrade Technical Reference Guide
(http://download.microsoft.com/download/3/0/D/30DB8D46-8ACF-442A-99A2-
0F4CE74AE14D/SQL_Server_2008_R2_Upgrade_Technical_Reference_Guide.docx).
Two System Center products are especially relevant for SQL Server 2012: Operations
Manager (SCOM) and Data Protection Manager (DPM).
At the time of this publication, Microsoft System Center 2012 is at the Release
Candidate phase. The current System Center 2010 (SCOM) Management Pack
for SQL Server 2008 R2 is compatible with SQL Server 2012.
Data Protection Manager 2012 will support SQL Server 2012 in a subsequent
service pack release.
Each current Dynamics product supports SQL Server 2012 but has very specific
requirements for Windows versions, SQL Server version, product service/feature packs,
and so on.
Generally, you should upgrade a Dynamics application’s database server to SQL Server
2012 only after you follow specific guidance from your Dynamics Technical Account
Manager and by reviewing information found on the different Dynamics support web
sites. If you are a registered Dynamics user, you can find this information at Microsoft
Dynamics Customers and Partners (https://mbs.microsoft.com/partnersource).
Conclusion
As with any upgrade, planning is important for moving to any of these latest product
versions.
Additional References
For an up-to-date collection of additional references for upgrading any of these
Microsoft applications, especially in association with SQL Server, see Upgrade to SQL
Server 2012 (http://msdn.microsoft.com/en-us/library/bb677622(v=sql.110).aspx) and
Windows Server 2008 R2 Overview (http://www.microsoft.com/en-us/server-
cloud/windows-server/2008-r2-overview.aspx).
Table 1: Supported Paths for an In-Place Upgrade to SQL Server 2012 from SQL Server
2005, SQL Server 2008, or SQL Server 2008 R2
SQL Server 2005 SP4 Enterprise Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
SQL Server 2005 SP4 Developer Microsoft SQL Server 2012 Developer
SQL Server 2005 SP4 Standard Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
SQL Server 2005 SP4 Workgroup Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
Microsoft SQL Server 2012 Web
SQL Server 2005 SP4 Express, Microsoft SQL Server 2012 Enterprise
SQL Server 2005 SP4 Express with Tools, and Microsoft SQL Server 2012 Business Intelligence
SQL Server 2005 SP4 Express with Advanced Services Microsoft SQL Server 2012 Standard
Microsoft SQL Server 2012 Web
Microsoft SQL Server 2012 Express
SQL Server 2008 SP2 Enterprise Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
SQL Server 2008 SP2 Developer Microsoft SQL Server 2012 Developer
SQL Server 2008 SP2 Standard Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
SQL Server 2008 SP2 Web Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
Microsoft SQL Server 2012 Web
SQL Server 2008 SP2 Workgroup Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
Microsoft SQL Server 2012 Web
SQL Server 2008 SP2 Express, Microsoft SQL Server 2012 Enterprise
SQL Server 2008 SP2 Express with Tools, and Microsoft SQL Server 2012 Business Intelligence
SQL Server 2008 SP2 Express with Advanced Services Microsoft SQL Server 2012 Standard
Microsoft SQL Server 2012 Web
Microsoft SQL Server 2012 Express
SQL Server 2008 R2 SP1 Datacenter Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
SQL Server 2008 R2 SP1 Enterprise Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
SQL Server 2008 R2 SP1 Developer Microsoft SQL Server 2012 Developer
SQL Server 2008 R2 SP1 Standard Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
SQL Server 2008 R2 SP1 Web Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
Microsoft SQL Server 2012 Web
SQL Server 2008 R2 SP1 Workgroup Microsoft SQL Server 2012 Enterprise
Microsoft SQL Server 2012 Business Intelligence
Microsoft SQL Server 2012 Standard
Microsoft SQL Server 2012 Web
SQL Server 2008 R2 SP1 Express, Microsoft SQL Server 2012 Enterprise
SQL Server 2008 R2 SP1 Express with Tools, and Microsoft SQL Server 2012 Business Intelligence
SQL Server 2008 R2 SP1 Express with Advanced Microsoft SQL Server 2012 Standard
Services Microsoft SQL Server 2012 Web
Microsoft SQL Server 2012 Express
Are you rating it high because of having good examples, excellent screenshots,
clear writing, or another reason?
Are you rating it low because of poor examples, fuzzy screenshots, or unclear
writing?
This feedback will help us improve the quality of white papers we release.
Send feedback.