View a markdown version of this page

SQL Server ke pengaturan konversi PostgreSQL - AWS Database Migration Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

SQL Server ke pengaturan konversi PostgreSQL

Pengaturan berikut berlaku ketika sumbernya adalah Microsoft SQL Server dan targetnya adalah Amazon RDS for PostgreSQL atau Amazon Aurora PostgreSQL. Anda dapat mengonfigurasi pengaturan ini menggunakan Konsol Manajemen AWS atau operasi ModifyConversionConfigurationAPI.

Topik ini mencakup pengaturan khusus untuk jalur konversi SQL Server ke PostgreSQL. Selain pengaturan ini, Konversi Skema DMS menyediakan pengaturan yang berlaku untuk semua pasangan sumber dan target, seperti tingkat keparahan untuk komentar item tindakan di SQL yang dikonversi dan opsi untuk menggunakan AI generatif untuk konversi. Untuk pengaturan tersebut, lihatPengaturan konversi umum.

Saat Anda menggunakan API atau AWS CLI, tentukan pengaturan jalur konversi di bawah nama bagianMSSQL_TO_POSTGRESQL,MSSQL_TO_POSTGRESQL_14, atau. MSSQL_TO_POSTGRESQL_15 Ketiga bagian berversi menerima kunci yang sama. Untuk menemukan nama bagian mana yang digunakan proyek Anda, panggil DescribeConversionConfigurationdulu dan perbarui hanya bagian yang ada dalam respons.

Setiap pengaturan menunjukkan Konsol Manajemen AWS label diikuti oleh API dan nama parameter AWS CLI dalam tanda kurung. Gunakan nama parameter saat mengonfigurasi pengaturan dengan API atau AWS CLI.

Pengaturan metadata

Pengaturan yang mengontrol bagaimana metadata SQL Server sumber — nama objek, struktur skema, dan definisi indeks — ditangani selama konversi.

Perlakukan nama objek database sumber sebagai case sensitive (CaseSensitivityNames)

Mengontrol bagaimana nama objek (tabel, kolom, prosedur, dan sebagainya) ditangani selama konversi.

  • true— Nama objek dipertahankan dalam kasus aslinya dan dibungkus dengan pengidentifikasi tanda kutip ganda (misalnya,"MyTable"). Gunakan ini saat aplikasi Anda mereferensikan objek menggunakan nama kasus campuran.

  • false— Nama objek dilipat ke huruf kecil tanpa mengutip (misalnya,mytable). Ini cocok dengan perilaku pelipatan kasus PostgreSQL default.

Jenis: Boolean (true|false)

Default: false

Hasilkan nama unik untuk indeks () UniqueIndexGeneration

Mengontrol apakah Konversi Skema DMS menghasilkan nama indeks unik di seluruh skema PostgreSQL target. Di SQL Server, indeks dapat berbagi nama yang sama di berbagai tabel. Dalam PostgreSQL, semua nama indeks dalam skema harus unik.

  • true— Konversi Skema DMS menghasilkan nama unik untuk semua indeks, menambahkan akhiran jika diperlukan untuk menghindari tabrakan. Gunakan ini ketika skema sumber Anda memiliki indeks dengan nama yang sama pada tabel yang berbeda.

  • false— Nama indeks dipertahankan apa adanya dari sumbernya. Jika nama indeks yang sama ada di beberapa tabel, penerapan ke PostgreSQL mungkin gagal dengan kesalahan nama duplikat.

Jenis: Boolean (true|false)

Default: true

Konversi prosedur ke fungsi (ConvertProceduresToFunction)

Mengontrol apakah prosedur tersimpan dikonversi ke fungsi atau prosedur PostgreSQL.

  • false— Prosedur dikonversi ke objek PostgreSQL (membutuhkan PROCEDURE PostgreSQL 11 atau yang lebih baru).

  • true— Prosedur yang mengembalikan set hasil dikonversi ke objek PostgreSQLFUNCTION. Gunakan ini saat aplikasi Anda membaca set hasil dari panggilan prosedur, atau saat menargetkan PostgreSQL 10 atau yang lebih lama.

Jenis: Boolean (true|false)

Default: false

Buat rutinitas tambahan untuk menangani kumpulan data terbuka () OpenDatasetsProcedures

Mengontrol bagaimana prosedur yang menyimpan output EXEC ke dalam tabel dikonversi.

  • false— Pola-pola ini dibiarkan sebagai item tindakan.

  • true— Konversi Skema DMS membuat tabel sementara dan prosedur tambahan untuk meniru pola ini pada target.

Jenis: Boolean (true|false)

Default: false

Nama skema () SchemaNameTemplate

Mengontrol bagaimana nama skema PostgreSQL target dihasilkan dari konvensi penamaan dua bagian SQL Server (skema database +).

Label konsol API/CLI nilai Nama skema target yang dihasilkan
SKEMA DB_ DB_SCHEMA database_ schema (misalnya,AdventureWorks_dbo). Gunakan saat memigrasikan beberapa database ke instance PostgreSQL yang sama untuk menghindari tabrakan nama.
DB DB database (sebagai contoh, AdventureWorks).
SCHEMA SCHEMA schema (sebagai contoh, dbo). Gunakan saat memigrasi satu database dan Anda ingin membersihkan nama skema tanpa awalan database.

Jenis: String (enum)

Default: DB_SCHEMA

Pengaturan kode SQL

Pengaturan yang mengontrol bagaimana kode SQL Server — pengidentifikasi, parameter, tipe data, dan fungsi yang tidak didukung — ditangani selama konversi.

Simpan nama objek dalam kasus yang sama (AvoidCastingToLowerCase)

Mengontrol apakah Konversi Skema DMS menambahkan LOWER() cast otomatis di sekitar pengidentifikasi dalam kode yang dikonversi.

  • false— Konversi Skema DMS menambahkan LOWER() gips jika diperlukan untuk menormalkan perbandingan kasus.

  • true- Tidak ada LOWER() gips otomatis yang ditambahkan. Gunakan ini ketika database PostgreSQL Anda menggunakan ekstensi atau pemeriksaan citext case-insensitive untuk menangani perbandingan secara native.

Jenis: Boolean (true|false)

Default: false

catatan

Pengaturan ini tidak berpengaruh saat UseCitextForAllStringDatatypes diaktifkan. Ketika semua tipe string dipetakanCITEXT, perbandingan case-insensitive ditangani secara native oleh tipe itu sendiri, jadi tidak ada LOWER() cast yang dihasilkan terlepas dari pengaturan ini.

Simpan nama parameter asli (KeepOriginalParameterManes)

Mengontrol apakah nama parameter asli dari T-SQL rutinitas dipertahankan dalam tanda tangan rutin PostgreSQL yang dikonversi.

  • false— Parameter dapat diganti namanya untuk menghindari konflik dengan kata-kata cadangan PostgreSQL atau konvensi penamaan.

  • true— Nama parameter asli disimpan kata demi kata. Gunakan ini ketika aplikasi Anda memanggil rutinitas menggunakan sintaks parameter bernama (misalnya,my_proc(param_name => value)).

Jenis: Boolean (true|false)

Default: false

catatan

Nama parameter API adalah KeepOriginalParameterManes (diakhiri dengan Surai, bukan Nama). Gunakan ejaan yang tepat ini saat memanggil API atau AWS CLI. Menggunakan tidak KeepOriginalParameterNames akan berhasil.

Gunakan CITEXT untuk semua tipe data string () UseCitextForAllStringDatatypes

Mengontrol tipe data target untuk semua kolom karakter dan parameter.

  • false— Jenis karakter (CHAR,, VARCHARNCHAR,NVARCHAR) dipetakan ke jenis PostgreSQL yang sesuai.

  • true— Semua tipe karakter dipetakan ke CITEXT (teks case-insensitive). Gunakan ini saat bermigrasi dari pemeriksaan SQL Server yang tidak peka huruf besar/kecil dan Anda ingin mempertahankan perilaku itu di PostgreSQL tanpa mengubah kueri.

Jenis: Boolean (true|false)

Default: false

catatan

Ketika pengaturan ini diaktifkan, Konversi Skema DMS secara otomatis menambahkan CREATE EXTENSION IF NOT EXISTS citext; ke skrip skema yang dikonversi (baik saat menerapkan ke target dan saat menyimpan ke file). Namun, citext modul harus tersedia di database PostgreSQL target Anda sebelum Anda menerapkan skema yang dikonversi.

Ketika UseCitextForAllStringDatatypes diaktifkan, nama objek Keep dalam setelan case (AvoidCastingToLowerCase) yang sama tidak berpengaruh, karena CITEXT menangani perbandingan case-insensitive secara native.

Ubah objek bawaan yang tidak didukung menjadi objek rintisan () ConvUnsupportedBuiltinsToStubs

Mengontrol apa yang terjadi ketika Konversi Skema DMS menemukan fungsi T-SQL bawaan yang tidak memiliki ekuivalen PostgreSQL langsung.

  • false— Fungsi yang tidak didukung dibiarkan sebagai item tindakan dalam laporan penilaian. Objek yang dikonversi ditandai sebagai membutuhkan tinjauan manual.

  • true— Fungsi yang tidak didukung diganti dengan fungsi rintisan yang memiliki tanda tangan yang sama tetapi menimbulkan kesalahan runtime. Objek yang dikonversi berhasil dikompilasi, memungkinkan Anda menerapkan dan menguji skema lainnya sebelum menangani masing-masing potongan. Fungsi rintisan menghasilkan masalah migrasi 7822.

Jenis: Boolean (true|false)

Default: false

Buat objek rintisan dalam skema terpisah () CreateStubsInSeparateSchema

Kontrol tempat objek rintisan ditempatkan saat ConvUnsupportedBuiltinsToStubs diaktifkan.

  • false— Objek rintisan dibuat dalam skema yang sama dengan objek pemanggilan.

  • true— Objek rintisan ditempatkan dalam aws_sqlserver_stub skema khusus pada target. Gunakan ini untuk menjaga kode rintisan terisolasi dari objek aplikasi yang dikonversi.

Jenis: Boolean (true|false)

Default: false

Contoh: mengkonfigurasi SQL Server ke pengaturan PostgreSQL

Contoh berikut menetapkanSchemaNameTemplate,ConvertProceduresToFunction, danUseCitextForAllStringDatatypes. Terapkan pengaturan yang sama untuk setiap nama bagian yang digunakan proyek Anda (periksa output DescribeConversionConfigurationterlebih dahulu).

{ "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 } }