Saya ingin mengubah nama skema tabel Employees
di Database. Dalam tabel Employees
nama skema database saat ini dbo
saya ingin mengubahnya exe
. Bagaimana saya bisa melakukannya?
Contoh:
DARI
dbo.Employees
UNTUK
exe.Employees
Saya mencoba dengan pertanyaan ini:
ALTER SCHEMA exe TRANSFER dbo.Employees
Tapi ini memberi saya kesalahan:
Tidak dapat mengubah skema 'exe', karena tidak ada atau Anda tidak memiliki izin.
Apa yang saya lewatkan?
sql
sql-server
tsql
schema
pemenang
sumber
sumber
create schema
: msdn.microsoft.com/en-US/library/ms189462%28v=sql.90%29.aspxJawaban:
Buat Skema:
Skema ALTER:
sumber
sys.schemas
adalah tabel yang berisi semua skema untuk database. Exec ('...') hanya menjalankan panggilan SQL dinamis, dalam hal ini diperlukan karena perintah CREATE SCHEMA harus menjadi pernyataan pertama dalam kumpulan permintaan dan mengeksekusi ketika SQL dinamis memberi Anda ini.Coba di bawah ini
sumber
set @sql = 'alter schema [' + @newschema + '] transfer [' + @oldschema + '].' + @table
untuk memastikan beberapa kata / karakter khusus tidak menyebabkan kesalahan.Saya selalu harus menggunakan tanda kurung ketika saya menggunakan
ALTER SCHEMA
kueri dalam SQL, atau saya mendapatkan pesan kesalahan.sumber
Melalui SSMS, saya membuat skema baru dengan:
Saya menemukan posting ini untuk mengubah skema, tetapi juga mendapatkan kesalahan izin yang sama ketika mencoba mengubah ke skema baru. Saya memiliki beberapa database yang tercantum dalam SSMS saya, jadi saya hanya mencoba menentukan database dan itu berhasil:
sumber
Kode Anda adalah:
Saya mencoba dengan pertanyaan ini.
Cukup tulis
create schema exe
dan jalankansumber
sumber
Lihat MSDN ...
CREATE SCHEMA
: http://msdn.microsoft.com/en-us/library/ms189462.aspxKemudian
ALTER SCHEMA
: http://msdn.microsoft.com/en-us/library/ms173423.aspxAtau Anda dapat memeriksanya pada ...
Bagaimana cara memindahkan tabel ke skema di T-SQL
sumber
Sangat hati-hati mengganti nama objek dalam sql. Anda dapat menyebabkan dependensi gagal jika Anda tidak sepenuhnya melakukan apa yang Anda lakukan. Setelah mengatakan bahwa ini bekerja dengan mudah (terlalu banyak) untuk mengubah nama hal-hal asalkan Anda memiliki akses yang tepat pada lingkungan:
sumber
exec sp_rename 'dbo.Employees', 'exe.Employees'
Anda akan mendapatkan nama [dbo]. [Exe.Pekerja]Pastikan Anda berada dalam konteks database yang benar di SSMS. Ada kesalahan yang sama dengan Anda, tetapi saya tahu skema tersebut sudah ada. Tidak menyadari bahwa saya berada dalam konteks 'MASTER'. ALTER bekerja setelah saya mengubah konteks ke database saya.
sumber
Jika seseorang mencari versi yang lebih rendah -
Untuk SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employess', @newowner = 'exe'
sumber