View a markdown version of this page

Configuración de conversión de SQL Server a PostgreSQL - AWS Database Migration Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de conversión de SQL Server a PostgreSQL

La siguiente configuración se aplica cuando el origen es Microsoft SQL Server y el destino es Amazon RDS for PostgreSQL o Amazon Aurora PostgreSQL. Puede configurar estos ajustes mediante la operación o la Consola de administración de AWS API. ModifyConversionConfiguration

En este tema se describe la configuración específica de la ruta de conversión de SQL Server a PostgreSQL. Además de estos ajustes, la conversión de esquemas de DMS proporciona ajustes que se aplican a todos los pares de origen y destino, como el nivel de gravedad de los comentarios sobre los elementos de acción en el SQL convertido y la opción de utilizar la IA generativa para la conversión. Para conocer esos ajustes, consulte. Ajustes de conversión habituales

Cuando utilice la API o la AWS CLI, especifique la configuración de la ruta de conversión en los nombres de las secciones MSSQL_TO_POSTGRESQLMSSQL_TO_POSTGRESQL_14, oMSSQL_TO_POSTGRESQL_15. Las tres secciones versionadas aceptan las mismas claves. Para saber qué nombres de sección usa tu proyecto, llama DescribeConversionConfigurationprimero y actualiza solo las secciones presentes en la respuesta.

Cada configuración muestra la Consola de administración de AWS etiqueta seguida del nombre del parámetro de la API y la AWS CLI entre paréntesis. Utilice el nombre del parámetro al configurar los ajustes con la API o la AWS CLI.

Configuración de metadatos

Configuración que controla el modo en que se gestionan los metadatos de origen de SQL Server (nombres de objetos, estructura del esquema y definiciones de índices) durante la conversión.

Trate los nombres de los objetos de la base de datos fuente distinguiendo mayúsculas y minúsculas (CaseSensitivityNames)

Controla cómo se gestionan los nombres de los objetos (tablas, columnas, procedimientos, etc.) durante la conversión.

  • true— Los nombres de los objetos se conservan en sus mayúsculas y minúsculas originales y se incluyen entre identificadores entre comillas dobles (por ejemplo,"MyTable"). Utilícelo cuando la aplicación haga referencia a objetos con nombres que mezclan mayúsculas y minúsculas.

  • false— Los nombres de los objetos se doblan en minúsculas sin comillas (por ejemplo,). mytable Esto coincide con el comportamiento predeterminado de plegado de mayúsculas y minúsculas de PostgreSQL.

Tipo: booleano (|) true false

Valor predeterminado: false

Genera nombres únicos para los índices () UniqueIndexGeneration

Controla si DMS Schema Conversion genera nombres de índice únicos en todo el esquema PostgreSQL de destino. En SQL Server, los índices pueden compartir el mismo nombre en distintas tablas. En PostgreSQL, todos los nombres de índice de un esquema deben ser únicos.

  • true— La conversión de esquemas de DMS genera nombres únicos para todos los índices y añade un sufijo cuando es necesario para evitar colisiones. Úselo cuando su esquema de origen tenga índices con el mismo nombre en tablas diferentes.

  • false— Los nombres de los índices se conservan tal cual de la fuente. Si existe el mismo nombre de índice en varias tablas, es posible que la implementación en PostgreSQL no se realice correctamente y se produzca un error de nombre duplicado.

Tipo: booleano (|) true false

Valor predeterminado: true

Convierte procedimientos en funciones () ConvertProceduresToFunction

Controla si los procedimientos almacenados se convierten en funciones o procedimientos de PostgreSQL.

  • false— Los procedimientos se convierten en objetos de PROCEDURE PostgreSQL (requiere PostgreSQL 11 o posterior).

  • true— Los procedimientos que devuelven un conjunto de resultados se convierten en objetos FUNCTION PostgreSQL. Úselo cuando la aplicación lea un conjunto de resultados de una llamada a un procedimiento o cuando se dirija a PostgreSQL 10 o versiones anteriores.

Tipo: booleano (|) true false

Valor predeterminado: false

Cree rutinas adicionales para gestionar conjuntos de datos abiertos () OpenDatasetsProcedures

Controla cómo se convierten los procedimientos que almacenan la salida de EXEC en una tabla.

  • false— Estos patrones se dejan como elementos de acción.

  • true— La conversión de esquemas DMS crea tablas temporales y un procedimiento adicional para emular este patrón en el objetivo.

Tipo: booleano (|) true false

Valor predeterminado: false

Nombres de esquema () SchemaNameTemplate

Controla cómo se genera el nombre del esquema PostgreSQL de destino a partir de la convención de nomenclatura en dos partes de SQL Server (base de datos + esquema).

Etiqueta de consola API/CLI valor Nombre del esquema de destino generado
DB_SCHEMA DB_SCHEMA database_ schema (por ejemplo,AdventureWorks_dbo). Úselo al migrar varias bases de datos a la misma instancia de PostgreSQL para evitar colisiones de nombres.
BASE DE DATOS DB database (por ejemplo, AdventureWorks).
SCHEMA SCHEMA schema (por ejemplo, dbo). Úselo al migrar una única base de datos y desee nombres de esquema limpios sin un prefijo de base de datos.

Tipo: cadena (enumeración)

Valor predeterminado: DB_SCHEMA

Configuración del código SQL

Configuración que controla el modo en que se gestiona el código de SQL Server (identificadores, parámetros, tipos de datos y funciones no compatibles) durante la conversión.

Mantenga los nombres de los objetos en mayúsculas y minúsculas () AvoidCastingToLowerCase

Controla si la conversión de esquemas de DMS añade LOWER() conversiones automáticas en torno a los identificadores del código convertido.

  • false— La conversión de esquemas de DMS añade versiones LOWER() cuando es necesario para normalizar las comparaciones de casos.

  • true— No se añaden LOWER() moldes automáticos. Úselo cuando su base de datos PostgreSQL utilice la extensión o una intercalación que no distinga mayúsculas de minúsculas para gestionar citext las comparaciones de forma nativa.

Tipo: booleano (|) true false

Valor predeterminado: false

nota

Esta configuración no tiene ningún efecto cuando UseCitextForAllStringDatatypes está habilitada. Cuando se asignan todos los tipos de cadenasCITEXT, la comparación que no distingue entre mayúsculas y minúsculas es gestionada de forma nativa por el propio tipo, por lo que no se generan LOWER() conversiones independientemente de esta configuración.

Conserve los nombres de los parámetros originales () KeepOriginalParameterManes

Controla si los nombres de los parámetros originales de T-SQL las rutinas se conservan en la firma de rutina de PostgreSQL convertida.

  • false— Se puede cambiar el nombre de los parámetros para evitar conflictos con las palabras reservadas o las convenciones de nomenclatura de PostgreSQL.

  • true— Los nombres originales de los parámetros se mantienen textualmente. Úselo cuando la aplicación llame a rutinas mediante la sintaxis de parámetros con nombre asignado (por ejemplo,my_proc(param_name => value)).

Tipo: booleano (|) true false

Valor predeterminado: false

nota

El nombre del parámetro de la API es KeepOriginalParameterManes (termina en Manes, no en nombres). Use esta ortografía exacta cuando llame a la API o a la AWS CLI. El uso no KeepOriginalParameterNames funcionará.

Utilice CITEXT para todos los tipos de datos de cadenas () UseCitextForAllStringDatatypes

Controla el tipo de datos de destino para todas las columnas y parámetros de caracteres.

  • false— Los tipos de caracteres (CHAR,VARCHAR,NCHAR,NVARCHAR) se asignan a los tipos de PostgreSQL correspondientes.

  • true— Todos los tipos de caracteres están mapeados a CITEXT (texto que no distingue mayúsculas de minúsculas). Úselo cuando migre desde una intercalación de SQL Server que no distinga mayúsculas de minúsculas y desee conservar ese comportamiento en PostgreSQL sin modificar las consultas.

Tipo: booleano (|) true false

Valor predeterminado: false

nota

Cuando esta configuración está habilitada, la conversión de esquemas de DMS se agrega automáticamente CREATE EXTENSION IF NOT EXISTS citext; a los scripts de esquema convertidos (tanto al aplicarlos al destino como al guardarlos en un archivo). Sin embargo, el citext módulo debe estar disponible en la base de datos PostgreSQL de destino antes de aplicar el esquema convertido.

Cuando UseCitextForAllStringDatatypes está habilitada, la opción Mantener los nombres de los objetos en mayúsculas y minúsculas (AvoidCastingToLowerCase) no tiene ningún efecto, ya que CITEXT gestiona la comparación que no distingue entre mayúsculas y minúsculas de forma nativa.

Convierte los objetos integrados no compatibles en objetos auxiliares () ConvUnsupportedBuiltinsToStubs

Controla lo que ocurre cuando la conversión de esquemas de DMS encuentra una función T-SQL integrada que no tiene un equivalente directo en PostgreSQL.

  • false— La función no compatible se deja como elemento de acción en el informe de evaluación. El objeto convertido se marca como objeto que requiere revisión manual.

  • true— La función no compatible se sustituye por una función auxiliar que tiene la misma firma pero genera un error de tiempo de ejecución. El objeto convertido se compila correctamente, lo que permite implementar y probar el resto del esquema antes de abordar los códigos auxiliares individuales. Las funciones auxiliares generan el problema de migración 7822.

Tipo: booleano (|) true false

Valor predeterminado: false

Cree objetos auxiliares en un esquema separado () CreateStubsInSeparateSchema

Controla dónde se colocan los objetos auxiliares cuando ConvUnsupportedBuiltinsToStubs está activado.

  • false— Los objetos auxiliares se crean en el mismo esquema que los objetos de llamada.

  • true— Los objetos auxiliares se colocan en un aws_sqlserver_stub esquema específico en el destino. Úselo para mantener el código auxiliar aislado de los objetos de la aplicación convertidos.

Tipo: booleano (|) true false

Valor predeterminado: false

Ejemplo: configurar SQL Server con los ajustes de PostgreSQL

El siguiente ejemplo establece SchemaNameTemplateConvertProceduresToFunction, y. UseCitextForAllStringDatatypes Aplica la misma configuración a cada nombre de sección que utilice tu proyecto (comprueba DescribeConversionConfigurationprimero el resultado).

{ "MSSQL_TO_POSTGRESQL_15": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL_14": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true } }