An overview of SQL Server database migration tools provided by Microsoft

An overview of SQL Server database migration tools provided by Microsoft

An overview of SQL Server database migration tools provided by Microsoft

SQLShack

SQL Server training Español

An overview of the Database Migration Assistant tool provided by Microsoft

March 16, 2018 by Jefferson Elias This article gives the overview of the Database Migration Assistant Tool to access, plan and migrate the SQL Server from an old version. Database migration is part of the DBA job. We can’t avoid it, and there are multiple options that can be taken: From SQL Server to SQL Server From another platform (Oracle Database, MySQL, PosgreSQL…) to SQL Server From SQL Server to another platform (Oracle Database, MySQL, PosgreSQL…) We can also perform a so-called “in-place” migration or a “side-by-side” migration. In the first one, everything will be performed on the same server. We could say that the source for the migration is also the destination of that migration. In the second, source and destination roles are physically separated. This means one server is the source and another server is the destination. Choosing one or the other depends on the migration context and environment, but in my career, we always chose a side-by-side migration because the OS and the server had to be upgraded or changed. You will definitely opt for a side-by-side migration when you want to migrate an Oracle database on Linux to a SQL Server on Windows so as a SQL Server on Windows to a SQL Server on Linux. To help DBAs in this task that can be quite risky, Microsoft provides a bunch of tools that we will review in present article. You will find below a non-exhaustive list of these tools. Database Migration Guide Microsoft Assement and Planning Toolkit a.k.a MAP Database Migration Assistant a.k.a. DMA Database Experimentation Assistant a.k.a DEA SQL Server Migration Assistant a k a SSMA For SQL MySQL For Oracle For Access … … Let’s review some of these tools…

Database Migration Guide

Database Migration Guide is at first a website that will help you in a database migration. You can follow this link to get to the tool. Here is how it looks like: It’s organized as follows: First, there is a part to create a migration guide manual adapted to your migration context Then, there is a case studies section and also a partner tools sections. We will focus on the first part and click on “Start Here” button. It opens a form where we will first select a source data type with most commonly used ones: The “other options” are at the moment this article has been written: PostgreSQL SAP ASE Access MongoDB Azure Table Storage Every time we select a source, all destination options will be displayed (either on-premise or in the Azure cloud). Once the source and destination RDBMS are defined, we’ll get to a summary of what has to be considered and how we can do it using. For instance, if we select SQL Server as source, we will have two options: SQL Server or Azure If we click on “SQL Server”, we will be redirected to a page that will sum up the work that has to be done: If you want to get more details about this kind of migration, you can go to this page. If you don’t know where to start, it’s the appropriate tool to use.

Microsoft Assessment and Planning Toolkit a k a MAP

This tool has been designed by Microsoft to help DBAs to perform common tasks that has to be done when we want to migrate: Inventory the existing system Check for breaking changes and mandatory code adaptations before being able to migrate etc This tool has been well covered by an article entitled “How to use Microsoft Assessment and Planning Toolkit for SQL Server” written by Musab Umair and we won’t discuss it further, here.

Database Migration Assistant a k a DMA

What is it? With Database Migration Assistant, you will be able to assess, plan and effectively upgrade older versions of SQL Server, starting SQL Server 2005, to a more recent version, from on-premise to Microsoft’s cloud. It can be downloaded following this link. Let’s review its installation process. Installation Click on next button. Read the terms and accept them then click on Next button. Then you must agree the privacy policy and finally click on the Install button. If the installation is successful, you will get following pane. You can choose to either launch Database Migration Assistant or not when you click on the “Finish” button. Using Database Migration Assistant Here is how the interface looks like at startup: Let’s try it out and click on the “+” button on the left hand sidebar pointed out by the “Get started here” area. A form will appear letting us choose between an assessment and a migration task. No matter the chosen option, we can see that a project name is absolutely necessary: Using Database Migration Assistant to plan a migration Let’s first choose the assessment project type and try to plan a SQL Server to SQL Server migration. One every parameter is set; we can push the “create” button. Once this button has been clicked, the tool will ask us more and more questions, starting with the target environment. We have following choices: As I don’t have any SQL Server 2016 or 2017 available at the moment, let’s choose SQL Server 2014. By default, there is an option that will give advices on the new features that we would add benefits to the current situation. Once we set everything as we want, we can click on the next button to provide information about the source database(s). Here is the screen where we provide source servers. We are directly on a form to add a new source where we can specify connection properties like server name, authentication type or connection properties like encryption usage. Notice the “SQL Server permissions” section on the screen that tells you what permissions are mandatory for the login used for connection. Once you provided correct credentials with appropriate permissions and clicked on the connect button, you will be shown a list of databases existing on the source server instance. You can select one or more databases and click on the “Add” button to actually add them as source databases for migration process. These databases will be analyzed to check if they can be migrated as is to the destination version of SQL Server. For instance: Once we added all the databases, we get a summary with database names and sizes and we can click on a “Start assessment” button. We will have to wait a moment before getting back the results of this assessment in Database Migration Assistant. While waiting, we can notice that the report will either show compatibility issues or feature recommendations and that we will be able to look for a particular database. These filters can be found on the left part of the report pane: Once everything is done, we see that an assessment report is divided in multiple parts: First, there is an icon that visually tells you directly if the database can be migrated (orange rectangle in following screen capture). Then, we see that the tool will run an assessment task for each compatibility level option from current one to the one corresponding to destination’s SQL Server version (zone rounded in purple on following screen capture). Furthermore, for each compatibility level, we will see what the tool discovers in terms of breaking changes, behavior changes and depreciated features and we can click on each discovery to get a full explanation of the discoveries, and which objects are impacted (rounded in green in following screen capture). Finally, we can see there are three actions in Database Migration Assistant that we can perform: Restart the assessment Delete assessment results Export assessment report (to JSON or CSV) Using Database Migration Assistant to migrate databases and logins Click on the “Plus” button on the left sidebar and create a new project, but this time, for migration purpose. Once clicked on the “Create” button, we will be directed to a form where we will first specify source and target server connection details. Once done, we can click on “Next” button. Once again, notice the “SQL Server permissions” text area that tells you exactly the permissions that are needed for the tool to run as expected. If the provided credentials are correct and DMA can connect to source and destination server instances, we are asked to provide the list of databases that we have to migrate. Actually, following screen will reveal how Database Migration Assistant will actually do the migration: using backup-restore technique. Thus, we need to provide a set of parameters inherent to this technique: Destination shared folder path for backup files Destination path for data files Destination path for transaction logs These parameters will be used for all the databases selected in the tree panel on the left. We can specify different values for these parameters when clicking on a particular database in tree hierarchy We can see that, in the middle of the screen, there is an option that tells DMA to perform the backup, then copy backup files to a location that the service account under which SQL Server is running on destination server can read. If we click on that checkbox, here is what is added to the view: Once we selected the databases to migrate and set parameters for backup-restore migration, we are invited to tell DMA which logins have to be kept. Database Migration Assistant will check for already existing logins and tell whether these logins are ready to be move, already exists or if there is a problem for them to be transferred. Once we are ready, we can click on the “Start Migration Button”. If the migration is successful, you will be happy to get following view with 0 failed operations: For each object considered, we can check logging information in a “migration details” column. If anything went wrong (with warning or error), we will be able to look at a more in-depth log: My opinion on the Database Migration Assistant This tool is user-friendly in more than one way. It provides valuable information for planning a migration and I would recommend using it. It can be used to perform migrations for small databases in small businesses or for non-IT people. However, as an IT professional, I don’t give a lot of credits to this tool as a professional migration tool that could be used in the environments I’m used to (24/7 with databases with database sizes over 100 Gb). Moreover, it won’t copy SQL Server Agent Jobs and settings, it won’t copy Linked Servers, it won’t copy Service Broker Endpoints… It’s however a good starting point for Microsoft as it’s quite a recent tool and it will evolve over time…

Database Experimentation Assistant a k a DEA

This tool allows a DBA to take the activity from source server and run it against destination server in order to check for performance issues, queries that have incompatibility errors, queries with degraded behavior or plans. It can be download on following page. A dedicated article will be online in following weeks.

SQL Server Migration Assistant a k a SSMA

SQL Server Migration assistant has the same purpose as Database Migration Assistant except that it’s designed for migrating data from a particular RDBMS that is not SQL Server. There are multiple versions of SSMA, one for Oracle, one for MySQL, one for DB2… It can be download on following page. A dedicated article will be online in the following weeks. Next articles in this series: Migrating an Oracle Database to SQL Server with Microsoft Data Migration Assistant – Installation Process and Short Overview A concrete example of migration between an Oracle Database and SQL Server using Microsoft Data Migration Assistant
Author Recent Posts Jefferson EliasLiving in Belgium, I obtained a master degree in Computer Sciences in 2011 at the University of Liege.

I'm one of the rare guys out there who started to work as a DBA immediately after his graduation. So, I work at the university hospital of Liege since 2011. Initially involved in Oracle Database administration (which are still under my charge), I had the opportunity to learn and manage SQL Server instances in 2013. Since 2013, I've learned a lot about SQL Server in administration and development.

I like the job of DBA because you need to have a general knowledge in every field of IT. That's the reason why I won't stop learning (and share) the products of my learnings.

View all posts by Jefferson Elias Latest posts by Jefferson Elias (see all) How to perform a performance test against a SQL Server instance - September 14, 2018 Concurrency problems – theory and experimentation in SQL Server - July 24, 2018 How to link two SQL Server instances with Kerberos - July 5, 2018

Related posts

Migrating SQL workloads to Microsoft Azure: Assessment and Migration Tools Migrating SQL workloads to Microsoft Azure: Guidance and Assessment Tools AWS RDS SQL Server Migration using AWS Database migration service Top SQL Server Books Migrating an Oracle Database to SQL Server with Microsoft Data Migration Assistant – Installation Process and Short Overview 29,790 Views

Follow us

Popular

SQL Convert Date functions and formats SQL Variables: Basics and usage SQL PARTITION BY Clause overview Different ways to SQL delete duplicate rows from a SQL Table How to UPDATE from a SELECT statement in SQL Server SQL Server functions for converting a String to a Date SELECT INTO TEMP TABLE statement in SQL Server SQL WHILE loop with simple examples How to backup and restore MySQL databases using the mysqldump command CASE statement in SQL Overview of SQL RANK functions Understanding the SQL MERGE statement INSERT INTO SELECT statement overview and examples SQL multiple joins for beginners with examples Understanding the SQL Decimal data type DELETE CASCADE and UPDATE CASCADE in SQL Server foreign key SQL Not Equal Operator introduction and examples SQL CROSS JOIN with examples The Table Variable in SQL Server SQL Server table hints – WITH (NOLOCK) best practices

Trending

SQL Server Transaction Log Backup, Truncate and Shrink Operations Six different methods to copy tables between databases in SQL Server How to implement error handling in SQL Server Working with the SQL Server command line (sqlcmd) Methods to avoid the SQL divide by zero error Query optimization techniques in SQL Server: tips and tricks How to create and configure a linked server in SQL Server Management Studio SQL replace: How to replace ASCII special characters in SQL Server How to identify slow running queries in SQL Server SQL varchar data type deep dive How to implement array-like functionality in SQL Server All about locking in SQL Server SQL Server stored procedures for beginners Database table partitioning in SQL Server How to drop temp tables in SQL Server How to determine free space and file size for SQL Server databases Using PowerShell to split a string into an array KILL SPID command in SQL Server How to install SQL Server Express edition SQL Union overview, usage and examples

Solutions

Read a SQL Server transaction logSQL Server database auditing techniquesHow to recover SQL Server data from accidental UPDATE and DELETE operationsHow to quickly search for SQL database data and objectsSynchronize SQL Server databases in different remote sourcesRecover SQL data from a dropped table without backupsHow to restore specific table(s) from a SQL Server database backupRecover deleted SQL data from transaction logsHow to recover SQL Server data from accidental updates without backupsAutomatically compare and synchronize SQL Server dataOpen LDF file and view LDF file contentQuickly convert SQL code to language-specific client codeHow to recover a single table from a SQL Server database backupRecover data lost due to a TRUNCATE operation without backupsHow to recover SQL Server data from accidental DELETE, TRUNCATE and DROP operationsReverting your SQL Server database back to a specific point in timeHow to create SSIS package documentationMigrate a SQL Server database to a newer version of SQL ServerHow to restore a SQL Server database backup to an older version of SQL Server

Categories and tips

►Auditing and compliance (50) Auditing (40) Data classification (1) Data masking (9) Azure (295) Azure Data Studio (46) Backup and restore (108) ►Business Intelligence (482) Analysis Services (SSAS) (47) Biml (10) Data Mining (14) Data Quality Services (4) Data Tools (SSDT) (13) Data Warehouse (16) Excel (20) General (39) Integration Services (SSIS) (125) Master Data Services (6) OLAP cube (15) PowerBI (95) Reporting Services (SSRS) (67) Data science (21) ►Database design (233) Clustering (16) Common Table Expressions (CTE) (11) Concurrency (1) Constraints (8) Data types (11) FILESTREAM (22) General database design (104) Partitioning (13) Relationships and dependencies (12) Temporal tables (12) Views (16) ►Database development (418) Comparison (4) Continuous delivery (CD) (5) Continuous integration (CI) (11) Development (146) Functions (106) Hyper-V (1) Search (10) Source Control (15) SQL unit testing (23) Stored procedures (34) String Concatenation (2) Synonyms (1) Team Explorer (2) Testing (35) Visual Studio (14) DBAtools (35) DevOps (23) DevSecOps (2) Documentation (22) ETL (76) ►Features (213) Adaptive query processing (11) Bulk insert (16) Database mail (10) DBCC (7) Experimentation Assistant (DEA) (3) High Availability (36) Query store (10) Replication (40) Transaction log (59) Transparent Data Encryption (TDE) (21) Importing, exporting (51) Installation, setup and configuration (121) Jobs (42) ►Languages and coding (686) Cursors (9) DDL (9) DML (6) JSON (17) PowerShell (77) Python (37) R (16) SQL commands (196) SQLCMD (7) String functions (21) T-SQL (275) XML (15) Lists (12) Machine learning (37) Maintenance (99) Migration (50) Miscellaneous (1) ►Performance tuning (869) Alerting (8) Always On Availability Groups (82) Buffer Pool Extension (BPE) (9) Columnstore index (9) Deadlocks (16) Execution plans (125) In-Memory OLTP (22) Indexes (79) Latches (5) Locking (10) Monitoring (100) Performance (196) Performance counters (28) Performance Testing (9) Query analysis (121) Reports (20) SSAS monitoring (3) SSIS monitoring (10) SSRS monitoring (4) Wait types (11) ►Professional development (68) Professional development (27) Project management (9) SQL interview questions (32) Recovery (33) Security (84) Server management (24) SQL Azure (271) SQL Server Management Studio (SSMS) (90) SQL Server on Linux (21) ►SQL Server versions (177) SQL Server 2012 (6) SQL Server 2016 (63) SQL Server 2017 (49) SQL Server 2019 (57) SQL Server 2022 (2) ►Technologies (334) AWS (45) AWS RDS (56) Azure Cosmos DB (28) Containers (12) Docker (9) Graph database (13) Kerberos (2) Kubernetes (1) Linux (44) LocalDB (2) MySQL (49) Oracle (10) PolyBase (10) PostgreSQL (36) SharePoint (4) Ubuntu (13) Uncategorized (4) Utilities (21) Helpers and best practices BI performance counters SQL code smells rules SQL Server wait types © 2022 Quest Software Inc. ALL RIGHTS RESERVED. GDPR Terms of Use Privacy
Share:
0 comments

Comments (0)

Leave a Comment

Minimum 10 characters required

* All fields are required. Comments are moderated before appearing.

No comments yet. Be the first to comment!