Wednesday, October 31, 2012

Database Migration from SQL Server 2000 to 2008/2008 R2/2012

1.    Background:
The purpose of this article is to lay out the structure for database migration from SQL 2000/2005 to SQL 2008/R2/2012. This article describes migration process in a simpler way for database only which includes pre and post migration steps also.

2.    What is Upgrade?
Upgrade is an automated process in which the upgrade tool, called Setup, moves an old instance of SQL Server to a new instance while maintaining the data and metadata of the old instance. At the end of the upgrade, the old instance is no longer available and the new instance has the same name as the old instance.

3.    What is Migration?
Migration is a manual process in which the DBA installs a new instance of SQL Server and copies the metadata and data from an old instance of SQL Server to the new instance. Migration provides access to two instances of the system, letting you verify and compare the two systems. During migration, both the old and new systems remain online until migration to the new instance is complete. At the end of the migration, all applications are directed to access the new instance and the old instance is manually removed.

4.    High Level Architecture:


5.    Before Migration

5.1 What to Migrate
This step includes surveying environment to determine SQL Server components that will be migrating and then the best technical option(s) can be determined. Here we are planning to migrate SQL Server database.

  5.2 Upgrade prerequisites
1) Verify that SQL Server 2008/R2/2012 environment meets hardware and software requirements. 
2)  Ensure that SQL Server 2008/R2/2012 environment is capable of supporting future needs from a user and transaction perspective. (using SQL Server 2008 Upgrade Advisor to determine potential issues)
3)   Set up an environment to test the migration process as well as front-end applications and dependent (upstream and downstream) systems' functionality.

   5.3 SQL Server 2012 Upgrade Advisor
Perhaps the most important tool of the several tools typically used for upgrade planning is Upgrade Advisor. Upgrade Advisor smoothes the transition to SQL Server 2012 by predicting issues in your legacy instances of SQL Server 2000 and SQL Server 2005. It analyzes objects and code within legacy instances and produces reports detailing upgrade issues, if there are any, organized by SQL Server component. The resulting reports show detected issues and provide guidance about how to fix the issues or work around them. The reports are stored on disk, and you can review them by using Upgrade Advisor or export them to Microsoft Excel for further analysis.
In addition to analyzing data and database objects, Upgrade Advisor can analyze Transact-SQL scripts and SQL Server Profiler/SQL Trace traces. Upgrade Advisor examines SQL code for syntax that is no longer valid in SQL Server 2008/R2/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.
5.4 Requirements for running Upgrade Advisor 2012 are as follows:
1)    Windows Vista SP1, or SP2, Windows 7 and Windows Server 2008 R2.
2)  Windows Installer beginning with version 4.5. You can install Windows Installer from the Windows Installer Web site.
3) Microsoft .NET Framework 4. .NET Framework 4 is available on the SQL Server 2012 product media, and from the .NET Framework 4 download page.
4)  SQL Server 2000 Decision Support Objects (DSO) if analyzing SSAS (you can use SQL Server 2000 Setup to install DSO)
5)   SQL Server 2000 client components if analyzing DTS (you can use SQL Server 2000 Setup to install the SQL Server 2000 client components)
6)  Pentium III-compatible processor or a later version, with a processor speed of at least 500 MHz
7)  Available Disk Space should be 15MB.

Whether you choose an in-place upgrade or a side-by-side upgrade, run Upgrade Advisor on your legacy systems. You can run Upgrade Advisor from a local or remote server, and you can execute it from the Command Prompt window by using a configuration file name as an input parameter.
Note: You can run the SQL Server 2008/2012 Upgrade Advisor only against instances of SQL Server 2000 and SQL Server 2005. You cannot run it against instances of SQL Server 2008/2012 or on SQL Server 7.0.

Upgrade Advisor is a separate download. The most recent downloadable version is available as part of the below link:

5.  Key SQL Server 2012 migration considerations

Here are additional technical considerations that are keys to the migration:
1) Execute DBCC CHECKDB to validate that the previous environment (SQL Server 2000 or 2005) is free of corruption prior to the upgrade. 

2) Issue final backups and ensure a rollback plan is in place to continue business operations in case an unforeseen problem is encountered. 

3) Develop enterprise standards for SQL Server 2005 configurations, operations (security, maintenance, etc.) and development. 

4)   Archive unneeded data and perform data cleansing for the migrated data. 

5) Ensure all code is operating accurately prior to migration so that migration is the blame for broken code. 

6) Perform database maintenance such as UPDATE STATISTICS, DBCC CHECKDB and index rebuilds post upgrade. 

7) Validate that the SQL Server 2000/2005 configurations and database compatibility modes are accurate post upgrade.

6. What are the reasons for Migration to SQL Server 2008/R2/2012?
There are several reasons to migrate to SQL Server 2008/R2/2012 of which are involves server level improvements that are not performance related. SQL Server 2008/2012 offers certain reliability and availability improvements, such as the following:

1)     SQL Server 2008/2012's database mirroring is more robust and easier to configure and manage. 

2)    Policy-based management can be a tremendous feature for improving the consistency of SQL Server's configuration and ongoing management, especially with compliance or other restrictive requirements. 

3)     A new data auditing feature that provides more granular auditing of SQL Server activity. 

4)    Transparent Data Encryption (TDE) lets you turn on encryption without requiring massive application-level changes and can help meet specific security and compliance requirements. 

5)   The data collector helps make performance management and tuning easier and more centralized. 

6)   The Resource Governor gives administrators central control over CPU and memory allocation, which is useful for servers that host multiple databases and experience significant resource contention between those applications. 

7)    If you manage multiple servers, Server Group management enables you to run T-SQL queries against multiple servers simultaneously from a central management server. This makes server farm management easier and more consistent.

8)      To avail all the new features of the SQL Server 2008/2012.

7. Different ways of Database Migration (SQL Server 2000/2005 to SQL Server 2012)
 There are several ways to migrate the databases from SQL Server 2000/2005 to SQL Server 2008/2012:

        i. Copy database Wizard:  The Copy Database Wizard lets you move or copy databases and their objects easily from one server to another or one instance to another instance, with no server downtime. Using this wizard, you can do the following:
1)     Pick a source and destination server.
2)     Select databases to move or copy.
3)     Specify the file location for the databases.
4)     Create logins on the destination server.
5)     Copy additional supporting objects, jobs, user-defined stored procedures, and error messages.
6)     Schedule when to move or copy the databases.
In addition to copying databases, you can copy associated metadata, for example, logins and objects from the master database that are required by a copied database

       ii. Database Backup and Restore: You can take the backup the database from the previous version and restore it into the new version of SQL Server (SQL Server 2008).

            iii. Detaching and Attaching: To move a database using detach and attach, you should make the following steps:
1)    Detach the database.
2)    Move the database file(s) to the desired location on another server or disk.
3)    Attach the database specifying the new location of the moved file(s):  After detaching, the database will be removed from SQL Server but will be intact within the data and transaction log files that compose the database. You can use these data and transaction log files to attach the database to any instance of SQL Server, including the server from which the database was detached. After attaching, the database will be available in exactly the same state it was in when it was detached.

6. Post Migration testing:
After migration, we need to compare the previous version’s database to migrate database.
Followings are the things that we need to check:

      1)    Check the total no. of tables, stored procedures, views and their names in the migrated database. It should be same as previous versioned database.
       2)     Check the row counts of the tables

Tuesday, October 30, 2012

SSRS- How to set Text Box Orientation in the report

1. Background

This article describes how to set the orientation of text box in a report using SSRS 2008 R2/2012. A text box can be oriented in below directions:
  • Horizontally,
  • Vertically (text reading from top to bottom),
  • Rotated by 270 degrees (text reading from bottom to top).
Proper orientation of text box saves lot of space in the report layout e.g a report having 10 columns with text description in horizontal direction will take more space in the report as compared to same report having those columns in vertical direction or 270 degree direction. We set the orientation on the text box not the text. We need to adjust the width and height of the text box to accommodate the rotated text. Here we are going to use WritingMode property of the text box to set the text box orientation.

This approach is useful in the following conditions:
  •   When report is having lot of columns and due to no. of columns, we are getting horizontal scroll while previewing the report.
  •  When multiple tablixes are using in the same report so to manage the space in report layout, we can change text orientation.
  •    Many times, we need to show data for few columns in vertical/270 degree in the report.

2. Prerequisite

·         We should use SQL Server 2008 R2 or 2012 Server

3. Steps to set the text box orientation in the report:

Below is the sample reseller report showing several columns with horizontal orientation:
                I.        For setting the orientation of text box, go to the click on the column header’s text box e.g ResellerName and press F4 key to get the property window for ResellerName text box:

              II.        Go to WritingMode Property and select Rotate 270:
             III.        Now see the column header ResellerName:
Here we can see the column header showing text from bottom to top:

            IV.        Now we will see how text looks in vertical orientation. For setting vertical orientation, select Number of Employees column header text box and press F4 to see text box property. Set the WritingMode property of this text box to Vertical:
             V.        Now see the text box in report layout:

Note: It is difficult to read the text in vertical direction so using 270 degree orientation is preferable.

            VI.        Set the orientation of all the column header’s text boxes to 270 degree and preview the report.
Here we can see the all the column headers showing text in 270 degree direction (Bottom to Top).
           VII.        If we want to show 270 degree text in centre align then go to the Text Box and click in front of Text and press enter key 2-3 times to align the text :
Here I have pressed “Enter key” 4 times for this text.
         VIII.        Now preview the report:
Here we can see that “Reseller Name” showing centre aligned.

4.   Conclusion

By using the above steps, we can set the orientation of the text box using SQL Server 2008 R2/ 2012.
----------------------------------------------------End of Document---------------------------------------------------