Salah satu cara untuk membuat database di server yang ditautkan, adalah dengan melompat ke server itu dan membuatnya secara lokal.
Tetapi Anda mungkin akan merasa sedikit tertipu jika saya memasukkannya sebagai salah satu dari “2 cara” untuk membuat database di server yang ditautkan.
Juga, meskipun opsi itu baik-baik saja jika Anda mampu dan mau melakukannya, artikel ini menunjukkan kepada Anda bagaimana melakukannya dari jarak jauh menggunakan T-SQL, tanpa harus melompat ke server lokal. Selain itu, Anda mungkin menemukan teknik ini lebih cepat daripada melompat ke server lain.
Kedua "2 cara" melibatkan EXECUTE
pernyataan (yang juga dapat disingkat menjadi EXEC
). Kita dapat menggunakan pernyataan ini untuk mengeksekusi kode pada server yang ditautkan, dan itu termasuk membuat database di dalamnya.
Prasyarat
Menjalankan prosedur tersimpan pada server tertaut mengharuskan Anda mengaktifkan RPC Out (jika belum diaktifkan).
Anda dapat memeriksa apakah RPC Out diaktifkan dengan menanyakan sys.servers
tampilan katalog.
Kode berikut mengaktifkan RPC Out pada server tertaut yang disebut Homer
:
EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';
Setelah itu diaktifkan, kita dapat melanjutkan dan membuat database.
Metode 1
Inilah metode pertama untuk membuat database di server tertaut.
EXEC ('CREATE DATABASE Pets') AT Homer;
Dalam contoh ini, saya membuat database bernama Pets
pada server tertaut yang disebut Homer
.
EXECUTE
/EXEC
pernyataan dapat digunakan untuk mengirim perintah pass-through ke server terkait.
Untuk melakukannya, sertakan perintah pass-through dalam tanda kurung setelah EXECUTE
/EXEC
kata kunci, lalu ikuti dengan AT LinkedServerName
, di mana LinkedServerName
adalah nama server tertaut tempat Anda ingin membuat database.
Oleh karena itu, yang perlu kita lakukan hanyalah memasukkan CREATE TABLE
pernyataan sebagai argumen untuk pernyataan ini.
Perhatikan bahwa nama server tertaut adalah nama yang Anda berikan saat membuat server tertaut. Ini bukan nama server sebenarnya dari server jarak jauh.
Metode 2
Metode kedua mirip dengan yang pertama, kecuali dalam hal ini kami meneruskan perintah kami ke sp_executesql
prosedur tersimpan sistem di server jauh.
EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';
Untuk melakukan ini, kita perlu menggunakan nama empat bagian, yang mencakup nama server yang ditautkan. Jika kami tidak melakukan ini, kami akan mengeksekusi sp_executesql
di server lokal kami, bukan di server jauh.
Meneruskan Pernyataan sebagai Variabel
Anda juga dapat meneruskan CREATE DATABASE
pernyataan sebagai variabel ke EXEC
pernyataan.
Seperti ini:
DECLARE @tsql nvarchar(max);
SET @tsql = 'CREATE DATABASE Pets';
EXEC (@tsql) AT Homer;
Meskipun, jika Anda mencoba untuk kemudian beralih ke database dan membuat tabel, Anda mungkin mengalami masalah, bahkan jika Anda menambahkan GO
di tempat-tempat biasa. Ini mungkin karena GO
kata kunci sebenarnya bukan bagian dari T-SQL, dan hanya dikenali oleh utilitas tertentu.
Oleh karena itu, Anda mungkin perlu menjalankan skrip terpisah untuk membuat tabel.