Alex Kirpichny

Alexandr Kirpichny

Chief Product Officer, Ispirer Systems

As the world of data management evolves, organizations are often looking for more cost-effective, scalable and flexible database solutions. For those currently using SQL Server and considering a migration to PostgreSQL, the process may seem daunting. However, there is good news: with the right approach and the power of automation, this transition can be smoother and more efficient than you might think.

In this article, we'll explore the intricacies of SQL Server to PostgreSQL migration process using automated solutions. We'll go over the benefits of automation, discuss the key considerations for a successful migration, and walk you through the steps that will ensure a seamless transfer of your database. By the end of this guide, you'll know how to leverage the power of automated tools to simplify your migration from SQL Server to PostgreSQL while avoiding potential pitfalls. So let's embark on the database transformation journey together and unlock the potential of PostgreSQL for your business.

Why PostgreSQL?

If you're considering migrating your database away from SQL Server, PostgreSQL is a database system that should be on your radar. Here are several compelling reasons why PostgreSQL database might be the best option for your migration:

  • Open Source and Cost-Effective. PostgreSQL's open-source nature means no licensing costs, making it a budget-friendly choice for organizations looking to migrate SQL Server to PostgreSQL.
  • Extensive Ecosystem. PostgreSQL ecosystem offers a variety of extensions and tools to customize and tailor the database to meet specific needs, making it versatile and adaptable.
  • Advanced Features. PostgreSQL boasts advanced features like JSON and XML support, full-text search, and geospatial capabilities, enabling the development of modern and feature-rich applications.
  • The best option for moving to a cloud. PostgreSQL is often favored for cloud migrations due to its open-source nature, SQL standards compliance, and cost-effectiveness. Its active community support, advanced features, and compatibility with major cloud platforms, along with a mature ecosystem, make it a strong choice for scalable and reliable cloud database solutions.
  • Community and Support. With an active and supportive community, PostgreSQL users have access to valuable resources and can find professional support options, ensuring they receive assistance when needed.

What is the first step for migration?

In this regard, we won't be breaking new ground – beginning the migration process calls for a thorough examination of the source system. This step is crucial as it allows us to assess the entire project and establish the order in which we'll carry it out. Equally important is pinpointing any redundant code or unused features during this analysis phase. It's advisable to remove these elements before migrating to cut down on expenses.

To streamline the analysis phase, we recommend using the Assessment Wizard, which is available for free. This tool connects directly to your original SQL Server database and generates advanced reports. The reports contain valuable information such as the number of objects (tables, stored procedures, functions, triggers, views, etc.), the volume of data, details about the SQL code and the frequency of various constructs in the code. What is more, these reports provide information about the expected conversion level of Ispirer Toolkit, suggesting a number of manual adjustments. In case of a huge number of complex code structures the tool provides info on the required number of customizations to increase the automation rate. Using this report not only reduces analysis time, but also ensures that no important details are overlooked.

Once we've grasped the project's scope and intricacies, the next step is to decide how to execute it: with the help of an in-house team, leveraging dedicated tools, or by opting for a migration service. In addition, it should be emphasized that the task of the database migration process can be divided into two main components: data migration and SQL conversion. The importance of each part depends on the volume of SQL code and data and is usually assessed on a case-by-case basis. However, it's usually the case that code conversion requires more resources and is the most challenging. Therefore, it's important not to underestimate the complexity of code conversion.

How to migrate SQL Server to PostgreSQL?

If your team is proficient in converting SQL Server schema to PostgreSQL and has the capacity for a migration project, this option is often ideal. In practice, however, such a scenario is rare. At the other end of the spectrum is the turnkey service, which eliminates most migration challenges. However, it has one drawback: the cost may exceed your budget. The third option proves to be the happy medium: using automation tools that enable your team to meet reasonable deadlines while staying within budget.

Automation is a key strategy for both data migration and SQL transformation. To migrate data it's often the only practical approach. Even if you prefer not to use existing tools, you will most likely need to develop your own application or at least a script that will fulfill the data migration process.

As for SQL, some tend to underestimate the potential of automation, possibly because of past experiences with inferior solutions. While it's unrealistic to expect automatic conversion of stored procedures, functions, triggers, and other objects into perfectly working equivalents, it's certainly possible to significantly reduce manual effort, free developers from mundane tasks, and take advantage of valuable expertise accumulated in SQL migration tools.

SQL Server to PostgreSQL data migration

The primary challenge in the task of migrating data from SQL Server to PostgreSQL revolves around aligning with the system's available downtime window. If none of the tools you've experimented with can accommodate this requirement, you'll have to resort to replication. While delving deeper into this topic warrants its own dedicated article, we'll provide a brief overview here. During the transfer of archived data, the replicator actively captures any changes occurring in the source database and subsequently transfers them to the target database. In an optimal scenario, this approach can even result in achieving zero downtime.

In fact, replication is not required that often, and if it is possible to provide the necessary amount of downtime, then data transfer would be easier and more reliable. As an example, let's take a look at what our Ispirer Toolkit tool can do. Assuming you have a speedy network, the potential for parallelization, and both source and target databases are configured correctly, you can achieve an impressive speed in migrating data, approximately 40 GB per hour.

SQL Conversion from SQL Server to PostgreSQL

The differences between Transact-SQL and PL/pgSQL are significant and make manually rewriting objects a daunting challenge. Depending on factors such as code complexity and developer experience, average velocity can range from 200 to 500 lines per day. Why the slow pace? Even fixing common syntactical differences requires the utmost attention and precision. If your SQL Server implementation relies heavily on features that differ significantly from those in Postgres – think RESULT SET, custom data types, table functions, or the complicated handling of system objects – finding workable solutions can take a lot of time. Moreover, the inclusion of dynamic SQL makes the conversion process even more complicated.

Migrate SQL Server to PostgreSQL with Ispirer Toolkit

Ispirer Toolkit includes two tools for automated migration: SQLWays Wizard for databases and NglFly Wizard for applications. With their intelligent core, both tools handle migration of legacy programming languages and databases with up to 100% automation. Ispirer Toolkit has a free demo license that allows users to assess the quality of automated migration within 30 days.

Now let’s dive into the process of migrating MSSQL to Postgres using SQLWays Wizard:

Step 1. Launch SQLWays Wizard and select the project directory. In this directory SQLWays Wizard will store information about the current migration process. Also on this page you need to specify the Export Directory.

Step 2. Choose a source database. Select or create a corresponding ODBC Data Source Name (DSN) that will allow you to connect to the database intended for the migration process. You also need to specify the user and password for the connection, which will be tested after clicking the “Next >” button.

Step 3. Specifying a target database. On this page you are to specify the PostgreSQL database, the server and the name of the database itself, as well as the user and password. Also here you need to specify a path to the target database native utilities.

Step 4. Selecting objects. Select all the objects that need to be converted by drag-and-drop from the left column to the right one. SQLWays Wizard automatically converts all the types of SQL objects, including tables, triggers, functions, views, stored procedures, sequences, etc.

Step 5. Specify conversion options. At this step, you can modify the conversion options of DDL and Data. You can specify different options that can be used to optimize the conversion process. In the objects tree, items (database objects) of different levels and types have different available options (e.g. mappings for data types and column names, formats, files, schemas and different types of database objects, etc.).

Step 6. Review the summary page.

Step 7. Run the migration process. SQLWays Wizard runs the process of migration in 2 stages: Conversion and Import. During the conversion phase, the tool extracts information about the objects chosen for this migration process, converts them and generates the appropriate set of files. During the import phase, the tool tries to create all the converted objects and data in the target database.

Step 8. Migration results. On the last page of SQLWays Wizard, on the corresponding tabs you can view the Summary, Export and Import reports and statistics. After clicking the “Finish” button, the migration configuration will be saved for future launches, and the wizard will be closed.

After that, you should check the migration result and fix the errors found. Start looking for them by examining the Export and Import reports. Then check how the code works in the target and compare the results with the execution in the source.

The errors found can be fixed in three ways:

  • changing the settings of Ispirer Toolkit
  • customization of the tool (through adding new conversion rules or modifying the existing ones)
  • manual corrections, which are usually necessary, but are reduced by multiple times owing to Ispirer Toolkit


To conclude, switching from SQL Server to PostgreSQL database is a complicated but rewarding transition that requires careful planning, precise execution, and a thorough understanding of both database systems. As we've found, the key to a successful migration process is careful analysis, strategic selection of tools, and prudent use of automation. While challenges undoubtedly arise, they're surmountable with the right approach. PostgreSQL, with its open source nature, robust ecosystem and advanced features, represents an enticing alternative for organizations seeking cost efficiency, scalability and adaptability for their data management solutions. This transition is more than just a technical change; it's a strategic move toward innovation, efficiency, and future-proofing your data infrastructure. In the dynamic landscape of modern technology, the journey from SQL Server to PostgreSQL promises a world of opportunities for organizations ready to embrace them.

If you would like to make an informed decision about upgrading your SQL Server database using automated conversion tools, we recommend that you contact Ispirer for a free 30-day trial of the Ispirer Toolkit.