Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengatasi perbedaan kepemilikan objek setelah peningkatan
Babelfish versi 4.6 dan yang lebih baru, dan 5.2 dan yang lebih baru menyertakan perubahan pada penanganan kepemilikan objek melalui titik akhir TDS. Saat Anda membuat objek baru melalui titik akhir TDS, objek ini sekarang dimiliki oleh pemilik skema, bukan pengguna saat ini. Perubahan kepemilikan ini dapat memengaruhi perilaku izin untuk objek baru dibandingkan dengan objek yang ada saat Anda memutakhirkan dari versi yang lebih awal dari 4.6 atau 5.2.
Untuk mengatasi perbedaan kepemilikan ini, Babelfish menyediakan fungsinya. sys.generate_alter_ownership_statements() Fungsi ini menghasilkan pernyataan SQL yang menyelaraskan kepemilikan objek dengan kepemilikan skema.
Waspadai batasan berikut saat menangani kepemilikan objek:
-
Pengguna dengan izin CREATE yang diberikan melalui titik akhir PostgreSQL tidak dapat membuat objek melalui titik akhir TDS dalam skema tersebut.
-
Memodifikasi izin pada objek T-SQL melalui titik akhir PostgreSQL tidak disarankan dan dapat menyebabkan perilaku T-SQL yang salah.
-
Izin akses mungkin berbeda antara objek lama dan baru karena ketidakcocokan kepemilikannya. Misalnya, pertimbangkan skema yang dimiliki oleh
sch_ownyang mencakup objek yang dimiliki olehdbo. Dalam hal ini, objek yang dimiliki olehdboyang dibuat sebelum upgrade mungkin memiliki izin akses yang berbeda dibandingkan dengan objek yang dimiliki olehsch_ownyang dibuat setelah upgrade. Ini dapat mempengaruhi operasi seperti SELECT dan INSERT.
Jika cluster DB Anda menyertakan objek yang dibuat dalam versi Babelfish lebih awal dari 4.6 atau 5.2, pertimbangkan untuk menyelaraskan kepemilikannya.
Untuk mengatasi perbedaan kepemilikan objek
-
Connect ke
babelfish_dbdatabase di cluster DB Anda menggunakan titik akhir PostgreSQL. -
Jalankan perintah berikut:
SELECT * from sys.generate_alter_ownership_statements();Ini menghasilkan daftar pernyataan SQL dimaksudkan untuk membakukan kepemilikan di antara objek.
-
Jalankan pernyataan yang dihasilkan pada lingkungan pengujian terlebih dahulu untuk memvalidasi efeknya sebelum diterapkan pada lingkungan produksi Anda.
Kami menyarankan Anda mengeksekusi pernyataan ini untuk mencapai model kepemilikan objek yang konsisten di seluruh database Anda.