全部产品
Search
文档中心

ApsaraDB RDS:Mengelola database menggunakan perintah SQL

更新时间:Aug 12, 2025

Topik ini menjelaskan cara menggunakan perintah SQL untuk membuat dan menghapus database pada instans ApsaraDB RDS for SQL Server. Topik ini juga mencakup penggunaan prosedur tersimpan khusus untuk mengubah nama database serta operasi berisiko tinggi yang dilarang selama pengelolaan database.

Prasyarat

Instans ApsaraDB RDS for SQL Server harus menjalankan SQL Server 2012 atau versi yang lebih baru.

Buat database

Eksekusi pernyataan berikut untuk membuat database:

CREATE DATABASE TestDb
Catatan

Saat membuat database pada instans RDS, sistem secara otomatis menghasilkan jalur file. Jangan tentukan jalur file.

Anda dapat mengeksekusi pernyataan berikut untuk memeriksa informasi jalur file data dan file log dari semua database pada instans SQL Server:

SELECT db_name(database_id), physical_name
FROM sys.master_files;

Hapus database

Eksekusi pernyataan berikut untuk menghapus database:

DROP DATABASE [TestDb]

Jika Anda tidak mencadangkan database sebelum menghapusnya, sistem akan menampilkan pesan kesalahan berikut:

DROP DATABASE [TestDb]
        -------------------------------------------------------------------------------------------------
        Pengingat:
            database Anda [TestDb] tidak memiliki set cadangan.
        -------------------------------------------------------------------------------------------------
Pengguna Login [Test11] telah menghapus database [TestDb].

Ubah nama database

ApsaraDB RDS for SQL Server menyediakan prosedur tersimpan sp_rds_modify_db_name untuk mengubah nama database dengan aman. Prosedur tersimpan ini tidak memerlukan otorisasi tambahan dan dapat dieksekusi oleh akun standar.

Perintah T-SQL

sp_rds_modify_db_name

Instans RDS yang Didukung

  • Seri Ketersediaan Tinggi (HA)

  • Edisi Kluster

  • Seri Dasar

Deskripsi

Prosedur tersimpan ini digunakan untuk mengganti nama database. Setelah Anda mengganti nama database pada instans RDS yang menjalankan Edisi Ketersediaan Tinggi RDS atau Edisi Kluster RDS, sistem secara otomatis membangun ulang konfigurasi replikasi antara instans RDS dan instans sekundernya. Selama proses pembangunan ulang, data instans RDS dicadangkan dan dipulihkan. Jika database menempati banyak penyimpanan, pastikan bahwa penyimpanan yang tersedia pada instans RDS cukup.

Penggunaan

USE db
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO
  • Parameter pertama menentukan nama asli database.

  • Parameter kedua menentukan nama baru database.

Pembatasan modifikasi database

Anda dapat memodifikasi sebagian besar atribut database. Perhatikan poin-poin berikut:

  • Jangan pindahkan database ke jalur file yang tidak valid.

    Sebagai contoh, jika Anda mengeksekusi pernyataan berikut tetapi menentukan jalur file yang tidak valid dalam pernyataan tersebut:

    ALTER DATABASE [TestDb]MODIFY FILE( NAME = N'TestDb', FILENAME = N'E:\KKKK\DDD\DATA\TestDb.mdf' )

    Sistem akan menampilkan pesan kesalahan berikut:

    Msg 50000, Level 16, State 1, Procedure ******, Line 152
    Jalur file [ 
    E:\KKKK\DDD\DATA\TestDb.mdf ] tidak valid, silakan tentukan folder jalur yang benar [ E:\mmm\gggg\ ].
    Msg 3609, Level 16, State 2, Line 2
    Transaksi berakhir di pemicu. Batch telah dibatalkan.
  • Jangan atur model pemulihan ke model selain FULL.

    Sebagai contoh, jika Anda mengeksekusi pernyataan berikut untuk mengatur model pemulihan ke SIMPLE:

    ALTER DATABASE [TestDb]  --[TestDb] adalah nama database.
    SET RECOVERY SIMPLE

    Tindakan ini memutus rantai log database. Sistem mengatur ulang model pemulihan ke FULL, mencegah perubahan ke SIMPLE, dan mengembalikan pesan kesalahan berikut:

    Msg 50000, Level 16, State 1, Procedure ******, Line 46
    Pengguna Login [Test11] tidak dapat mengubah model pemulihan database [TestDb].
    Msg 3609, Level 16, State 2, Line 2
    Transaksi berakhir di pemicu. Batch telah dibatalkan.
    Penting

    Jika log penuh, Anda hanya dapat memotong rantai log untuk penyusutan. Kami merekomendasikan agar Anda tidak mengubah model pemulihan database menjadi SIMPLE. Jika Anda mengubah model pemulihan database menjadi SIMPLE, rantai cadangan instans RDS tempat database tersebut dimiliki terputus, dan semua tugas pemulihan yang dilakukan pada titik waktu ketika rantai cadangan terputus gagal. Untuk mengubah mode pemulihan database menjadi SIMPLE dan memotong rantai log database dalam situasi darurat, Anda harus memahami dan bertanggung jawab atas risiko di atas. Setelah Anda mengeksekusi pernyataan di atas, Anda dapat mengabaikan pesan kesalahan yang ditampilkan, dan rantai log database terputus.

  • Setelah Anda mengatur database ke OFFLINE, jangan langsung menjalankan perintah ONLINE.

    Sebagai contoh, jika Anda mengeksekusi pernyataan berikut untuk mengubah status database dari OFFLINE menjadi ONLINE:

    USE [master]
      GO
      --set offline
      --ALTER DATABASE [TestDb]
      --SET OFFLINE
      --WITH ROLLBACK AFTER 0
      ALTER DATABASE [TestDb]
      SET ONLINE

    Sistem akan menampilkan pesan kesalahan berikut:

    Msg 5011, Level 14, State 9, Line 1
    Pengguna tidak memiliki izin untuk mengubah database 'TestDb', database tidak ada, atau database tidak dalam keadaan yang memungkinkan pemeriksaan akses.
    Msg 5069, Level 16, State 1, Line 1
    Pernyataan ALTER DATABASE gagal.

    Untuk mengubah status database dari OFFLINE ke ONLINE, jalankan prosedur tersimpan sp_rds_set_db_online:

    EXEC sp_rds_set_db_online 'TestDb'

Kesalahan umum

Kesalahan saat memodifikasi nama database RDS SQL Server dengan perintah SQL asli ALTER DATABASE atau antarmuka grafis SSMS?

Deskripsi masalah

Anda menerima kesalahan saat mencoba mengganti nama database ApsaraDB RDS for SQL Server menggunakan perintah SQL asli ALTER DATABASE atau antarmuka pengguna grafis (GUI) SQL Server Management Studio (SSMS). Pesan kesalahan berikut dikembalikan:

  • Kesalahan dari Perintah SQL Asli ALTER DATABASE

    Msg 5011, Level 14, State 2, Line 4
    Pengguna tidak memiliki izin untuk mengubah database 'jmdb01', database tidak ada, atau database tidak dalam keadaan yang memungkinkan pemeriksaan akses.

    image

  • Kesalahan dari GUI SSMS: tidak dapat mengganti nama db_name.

    image

Penyebab

  • Secara default, akun pengguna di ApsaraDB RDS for SQL Server, termasuk akun standar dan akun istimewa, hanya diberikan izin CREATE DATABASE pada database master. Izin ini tidak cukup untuk mengganti nama database. Akibatnya, Anda tidak dapat langsung mengganti nama database menggunakan SQL asli atau GUI SSMS.

  • (Tidak direkomendasikan) Anda dapat mengaktifkan izin administrator sistem (SA) untuk mengganti nama database. Kemudian, Anda dapat menggunakan akun dengan izin SA untuk secara manual memberikan izin yang diperlukan kepada akun standar atau akun istimewa. Izin tersebut dijelaskan sebagai berikut:

    • Akun yang hanya memiliki izin CREATE DATABASE pada database master tidak dapat mengganti nama database apa pun.

    • Akun dengan izin tingkat instans CREATE ANY DATABASE dapat mengganti nama database yang dimilikinya. Catatan: Pengguna harus menjadi pemilik database, bukan hanya anggota peran db_owner. Untuk informasi lebih lanjut, lihat Modifikasi Properti Database (Informasi Lanjutan: db_owner).

    • Akun dengan izin tingkat instans ALTER ANY DATABASE dapat mengganti nama database apa pun yang memiliki izin ALTER.

Solusi

Gunakan prosedur tersimpan sp_rds_modify_db_name yang disediakan oleh ApsaraDB RDS for SQL Server untuk mengganti nama database dengan aman. Prosedur ini tidak memerlukan otorisasi tambahan dan dapat dieksekusi oleh akun standar.

Perintah T-SQL

sp_rds_modify_db_name

Instans RDS yang Didukung

  • Seri Ketersediaan Tinggi (HA)

  • Edisi Kluster

  • Seri Dasar

Deskripsi

Prosedur tersimpan ini digunakan untuk mengganti nama database. Setelah Anda mengganti nama database pada instans RDS yang menjalankan Edisi Ketersediaan Tinggi RDS atau Edisi Kluster RDS, sistem secara otomatis membangun ulang konfigurasi replikasi antara instans RDS dan instans sekundernya. Selama proses pembangunan ulang, data instans RDS dicadangkan dan dipulihkan. Jika database menempati banyak penyimpanan, pastikan bahwa penyimpanan yang tersedia pada instans RDS cukup.

Penggunaan

USE db
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO
  • Parameter pertama menentukan nama asli database.

  • Parameter kedua menentukan nama baru database.

Referensi