Create and configure your destination AlloyDB for PostgreSQL instance
Stay organized with collectionsSave and categorize content based on your preferences.
For heterogeneous SQL Server migrations to AlloyDB for PostgreSQL,
Database Migration Service requires that you first create and configure your
AlloyDB for PostgreSQL destination cluster. Perform the following steps:
Create your destination cluster. Make sure you configure enough compute
and memory resources to cover your migration needs and follow the requirements
listed inknown limitations.
We recommend that you create your destination cluster with settings
specific to thedestination networking methodyou want to use:
Create your destination cluster with public IP enabled forinbound connections. SeeCreate an AlloyDB for PostgreSQL instancein the AlloyDB for PostgreSQL
documentation.
Determine if you can use a PSC-enabled AlloyDB for PostgreSQL instance as your
migration destination. Carefully consider functionality limitations
for PSC-enabled instances. SeePrivate Service Connect limitationsin the AlloyDB for PostgreSQL documentation.
For scenarios where you can use a PSC-enabled AlloyDB for PostgreSQL instance,
create your destination cluster with
Private Service Connect enabled. SeeCreate a PSC-enabled AlloyDB for PostgreSQL instancein the
AlloyDB for PostgreSQL documentation.
You don't have to create a Private Service Connect
endpoint for your destination instance. Database Migration Service
can automatically handle the endpoint creation in the background
when you create the migration job.
This user account must have the same name as your destination database.
For example, if you use Database Migration Service to migrate your data into
a database calledmyapp, then the name of the dedicated
migration user should also bemyapp.
Grant the required permissions to the dedicated migration user account.
Do the following:
Optional: Grant your migration user theCREATEDBpermission for the purposes of testing converted schema.
At a later point in the migration, after youconvert the source schema, you can use Database Migration Service
to test whether converted schema can be applied to a PostgreSQL
database. To perform the test, Database Migration Service creates a temporary
database to avoid impacting your destination database.
If you want totest your converted schema,
grant your migration user theCREATEDBpermission.
Use the following command:
For source databases that contain foreign keys or triggers:
Skip replication for foreign keys and triggers by using theREPLICATIONoption with the dedicated migration
user account. Run the following command:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eDatabase Migration Service facilitates heterogeneous migrations from SQL Server to AlloyDB for PostgreSQL, subject to Pre-GA Offerings Terms.\u003c/p\u003e\n"],["\u003cp\u003ePrior to migration, users must create and configure an AlloyDB for PostgreSQL destination cluster with sufficient resources, considering whether to use public or private IP connectivity.\u003c/p\u003e\n"],["\u003cp\u003eA dedicated migration user account with the same name as the destination database must be created and granted necessary permissions like \u003ccode\u003eCREATE\u003c/code\u003e, \u003ccode\u003eSELECT\u003c/code\u003e, \u003ccode\u003eINSERT\u003c/code\u003e, \u003ccode\u003eUPDATE\u003c/code\u003e, \u003ccode\u003eDELETE\u003c/code\u003e, and \u003ccode\u003eTRUNCATE\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFor databases with foreign keys or triggers, the migration user account should have the \u003ccode\u003eREPLICATION\u003c/code\u003e option enabled to skip their replication during migration.\u003c/p\u003e\n"],["\u003cp\u003eOptionally, granting the \u003ccode\u003eCREATEDB\u003c/code\u003e permission to the migration user enables testing of converted schema using a temporary database.\u003c/p\u003e\n"]]],[],null,["# Create and configure your destination AlloyDB for PostgreSQL instance\n\nFor heterogeneous SQL Server migrations to AlloyDB for PostgreSQL,\nDatabase Migration Service requires that you first create and configure your\nAlloyDB for PostgreSQL destination cluster. Perform the following steps:\n\n1. Create your destination cluster. Make sure you configure enough compute and memory resources to cover your migration needs and follow the requirements listed in [known limitations](/database-migration/docs/sqlserver-to-alloydb/known-limitations). **Note:** If you're migrating from a Cloud SQL for SQL Server instance, create the destination cluster in the same region as your source.\n\n We recommend that you create your destination cluster with settings\n specific to the\n [destination networking method](/database-migration/docs/sqlserver-to-alloydb/networking-methods-destination) you want to use:\n\n2. Create the following entities in your destination cluster:\n - A [database to migrate your data](/alloydb/docs/database-create).\n - A [dedicated migration user account](https://cloud.google.com/alloydb/docs/database-users/about#create).\n\n This user account must have the same name as your destination database.\n For example, if you use Database Migration Service to migrate your data into\n a database called `myapp`, then the name of the dedicated\n migration user should also be `myapp`.\n3. Grant the required permissions to the dedicated migration user account. Do the following:\n 1. [Connect to your AlloyDB for PostgreSQL instance with the `psql` client](/alloydb/docs/connect-psql).\n 2. Run the following commands on your destination database: \n\n ```sql\n GRANT CREATE ON DATABASE DESTINATION_DB_NAME TO \"\u003cvar translate=\"no\"\u003eMIGRATION_USER_ACCOUNT_NAME\u003c/var\u003e\";\n ```\n 3. Optional: Grant your migration user the `CREATEDB`\n permission for the purposes of testing converted schema.\n\n At a later point in the migration, after you\n [convert the source schema](/database-migration/docs/sqlserver-to-alloydb/convert-sql), you can use Database Migration Service\n to test whether converted schema can be applied to a PostgreSQL\n database. To perform the test, Database Migration Service creates a temporary\n database to avoid impacting your destination database.\n If you want to\n [test your converted schema](/database-migration/docs/sqlserver-to-alloydb/work-with-conversion-workspaces#test-apply-to-dest),\n grant your migration user the `CREATEDB` permission.\n Use the following command: \n\n ```sql\n ALTER USER \"\u003cvar translate=\"no\"\u003eMIGRATION_USER_ACCOUNT_NAME\u003c/var\u003e\" WITH CREATEDB;\n ```\n 4. **For source databases that contain foreign keys or triggers** : Skip replication for foreign keys and triggers by using the [`REPLICATION`](https://www.postgresql.org/docs/current/role-attributes.html#id-1.6.9.6.2.1.5.1.1) option with the dedicated migration user account. Run the following command: \n\n ```sql\n ALTER USER \"\u003cvar translate=\"no\"\u003eMIGRATION_USER_ACCOUNT_NAME\u003c/var\u003e\" WITH REPLICATION;\n ```\n\n For more information about how Database Migration Service migrates foreign keys\n and triggers, see\n [Considerations for foreign keys and triggers](/database-migration/docs/sqlserver-to-alloydb/known-limitations#foreign-keys-triggers-considerations).\n\nWhat's next?\n------------\n\n- Learn about destination database network connectivity. See\n [Destination database networking methods](/database-migration/docs/sqlserver-to-alloydb/networking-methods-destination).\n\n- Learn about migration jobs. See [Create a migration job](/database-migration/docs/sqlserver-to-alloydb/create-migration-job)\n\n- To get a complete, step-by-step migration walkthrough, see\n [SQL Server to AlloyDB for PostgreSQL migration guide](/database-migration/docs/sqlserver-to-alloydb/guide)."]]