Babelfish mendukung server tertaut - Amazon Aurora

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

Babelfish mendukung server tertaut

Babelfish for Aurora PostgreSQL mendukung server tertaut dengan menggunakan ekstensi tds_fdw PostgreSQL di versi 3.1.0. Untuk bekerja dengan server yang terhubung, Anda harus menginstal ekstensi tds_fdw. Untuk informasi selengkapnya tentang ekstensi tds_fdw, lihat Bekerja dengan pembungkus data asing yang didukung untuk Amazon Aurora PostgreSQL.

Menginstal ekstensi tds_fdw

Anda dapat menginstal ekstensi tds_fdw menggunakan metode berikut ini.

Menggunakan CREATE EXTENSION dari titik akhir PostgreSQL
  1. Hubungkan ke instans DB PostgreSQL Anda pada basis data Babelfish di port PostgreSQL. Gunakan akun yang memiliki peran rds_superuser.

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=test --dbname=babelfish_db --password
  2. Instal ekstensi tds_fdw. Ini adalah proses instalasi satu kali. Anda tidak perlu menginstal ulang saat klaster DB dimulai ulang.

    babelfish_db=> CREATE EXTENSION tds_fdw; CREATE EXTENSION
Memanggil prosedur tersimpan sp_execute_postgresql dari titik akhir TDS

Babelfish mendukung instalasi ekstensi tds_fdw dengan memanggil prosedur sp_execute_postgresql dari versi 3.3.0. Anda dapat menjalankan pernyataan PostgreSQL dari titik akhir T-SQL tanpa keluar dari port T-SQL. Untuk informasi selengkapnya, lihat Referensi prosedur Babelfish for Aurora PostgreSQL

  1. Hubungkan ke instans DB PostgreSQL Anda pada basis data Babelfish di port T-SQL.

    sqlcmd -S your-DB-instance.aws-region.rds.amazonaws.com -U test -P password
  2. Instal ekstensi tds_fdw.

    1>EXEC sp_execute_postgresql N'CREATE EXTENSION tds_fdw'; 2>go

Fungsionalitas yang didukung

Babelfish mendukung penambahan RDS for SQL Server jarak jauh atau titik akhir Babelfish for Aurora PostgreSQL sebagai server tertaut. Anda juga dapat menambahkan instans SQL Server jarak jauh lainnya sebagai server tertaut. Kemudian, gunakan OPENQUERY() untuk mengambil data dari server tertaut ini. Mulai dari Babelfish versi 3.2.0, nama empat bagian juga didukung.

Prosedur tersimpan dan tampilan katalog berikut didukung untuk menggunakan server tertaut.

Prosedur tersimpan

  • sp_addlinkedserver – Babelfish tidak mendukung parameter @provstr.

  • sp_addlinkedsrvlogin

    • Anda harus memberikan nama pengguna dan kata sandi jarak jauh eksplisit untuk terhubung ke sumber data jarak jauh. Anda tidak dapat terhubung dengan kredensial mandiri pengguna. Babelfish hanya mendukung @useself = false.

    • Babelfish tidak mendukung parameter @locallogin karena mengonfigurasi akses server jarak jauh khusus untuk proses masuk lokal tidak didukung.

  • sp_linkedservers

  • sp_helplinkedsrvlogin

  • sp_dropserver

  • sp_droplinkedsrvlogin – Babelfish tidak mendukung parameter @locallogin karena mengonfigurasi akses server jarak jauh khusus untuk proses masuk lokal tidak didukung.

  • sp_serveroption – Babelfish mendukung opsi server berikut:

    • waktu habis kueri (dari Babelfish versi 3.2.0)

    • waktu habis koneksi (dari Babelfish versi 3.3.0)

  • sp_testlinkedserver (dari Babelfish versi 3.3.0)

  • sp_enum_oledb_providers (dari Babelfish versi 3.3.0)

Tampilan katalog

  • sys.servers

  • sys.linked_logins

Menggunakan enkripsi dalam transit untuk koneksi

Koneksi dari server Babelfish for Aurora PostgreSQL sumber ke server jarak jauh target menggunakan enkripsi dalam transit (TLS/SSL), tergantung konfigurasi basis data server jarak jauh. Jika server jarak jauh tidak dikonfigurasi untuk enkripsi, server Babelfish yang membuat permintaan ke basis data jarak jauh kembali ke tidak terenkripsi.

Untuk menegakkan enkripsi koneksi

  • Jika server tertaut target adalah instans RDS for SQL Server, tetapkan rds.force_ssl = on untuk instans SQL Server target. Untuk informasi selengkapnya tentang konfigurasi SSL/TLS untuk RDS for SQL Server, lihat Menggunakan SSL dengan instans DB Microsoft SQL Server

  • Jika server tertaut target adalah klaster Babelfish for Aurora PostgreSQL, atur babelfishpg_tsql.tds_ssl_encrypt = on dan ssl = on untuk server target. Untuk informasi selengkapnya tentang SSL/TLS, lihat Pengaturan SSL Babelfish dan koneksi klien.

Menambahkan Babelfish sebagai server tertaut dari SQL Server

Babelfish for Aurora PostgreSQL dapat ditambahkan sebagai server tertaut dari SQL Server. Pada basis data SQL Server, Anda dapat menambahkan Babelfish sebagai server tertaut menggunakan penyedia Microsoft OLE DB untuk ODBC : MSDASQL.

Ada dua cara untuk mengonfigurasi Babelfish sebagai server tertaut dari SQL Server menggunakan penyedia MSDASQL:

  • Menyediakan string koneksi ODBC sebagai string penyedia.

  • Sediakan DSN Sistem dari sumber data ODBC selagi menambahkan server tertaut.

Batasan

  • OPENQUERY () hanya berfungsi untuk SELECT dan tidak berfungsi untuk DML.

  • Nama objek empat bagian hanya berfungsi untuk membaca dan tidak berfungsi untuk memodifikasi tabel jarak jauh. UPDATE dapat mereferensikan tabel jarak jauh dalam klausa FROM tanpa memodifikasinya.

  • Menjalankan prosedur tersimpan terhadap server tertaut Babelfish tidak didukung.

  • Peningkatan versi mayor Babelfish mungkin tidak berfungsi jika ada objek yang bergantung pada OPENQUERY() atau objek yang direferensikan melalui nama empat bagian. Anda harus memastikan bahwa objek apa pun yang mereferensikan OPENQUERY() atau nama empat bagian dihapus sebelum peningkatan versi mayor.

  • Jenis data berikut tidak berfungsi seperti yang diharapkan terhadap server Babelfish jarak jauh: nvarchar(max), varchar(max), varbinary(max), binary(max), dan time. Sebaiknya gunakan fungsi CAST untuk mengonversinya ke tipe data yang didukung.

Contoh

Dalam contoh berikut, instans Babelfish for Aurora PostgreSQL menghubungkan ke instans RDS for SQL Server di cloud.

EXEC master.dbo.sp_addlinkedserver @server=N'rds_sqlserver', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'myserver.CB2XKFSFFMY7.US-WEST-2.RDS.AMAZONAWS.COM'; EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'rds_sqlserver',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='password';

Saat server tertaut sudah terpasang, Anda dapat menggunakan T-SQL OPENQUERY() atau penamaan empat bagian standar untuk mereferensikan tabel, tampilan, atau objek lain yang didukung, di server jarak jauh:

SELECT * FROM OPENQUERY(rds_sqlserver, 'SELECT * FROM TestDB.dbo.t1'); SELECT * FROM rds_sqlserver.TestDB.dbo.t1;

Untuk menghapus server tertaut dan semua kredensial masuk terkait:

EXEC master.dbo.sp_dropserver @server=N'rds_sqlserver', @droplogins=N'droplogins';

Pemecahan Masalah

Anda dapat menggunakan grup keamanan yang sama untuk server sumber dan jarak jauh untuk memungkinkan keduanya berkomunikasi satu sama lain. Grup keamanan hanya boleh mengizinkan lalu lintas masuk pada port TDS (1433 secara default) dan IP sumber dalam grup keamanan dapat diatur sebagai ID grup keamanan itu sendiri. Untuk informasi selengkapnya tentang cara mengatur aturan untuk menghubungkan ke satu instans dari instans yang lain dengan grup keamanan yang sama, lihat Aturan untuk menghubungkan ke satu instans dari sebuah instans dengan grup keamanan yang sama.

Jika akses tidak dikonfigurasi dengan benar, pesan kesalahan yang mirip dengan contoh berikut akan muncul saat Anda mencoba menjalankan kueri server jarak jauh.

TDS client library error: DB #: 20009, DB Msg: Unable to connect: server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 110, OS Msg: Connection timed out, Level: 9