Jika Anda perlu membuat tabel di server tertaut, Anda dapat melakukannya langsung di server jauh, atau Anda dapat melakukannya dengan menjalankan skrip dari server lokal Anda.
Berikut adalah dua cara menggunakan T-SQL untuk membuat tabel di server yang ditautkan.
Kedua metode menggunakan EXECUTE
/EXEC
penyataan. Tetapi masing-masing menggunakan pendekatan yang berbeda.
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';
Dengan mengaktifkan RPC Out, kita dapat melanjutkan dan membuat tabel.
Metode 1
Pendekatan pertama kami adalah menggunakan AT
argumen untuk menentukan server tertaut untuk menjalankan kode. Sintaks ini memungkinkan kita mengirim perintah pass-through ke server yang ditautkan.
Ini seperti ini:
EXEC ('
USE [Pets];
CREATE TABLE [dbo].[Cats](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatName] [varchar](60) NULL
) ON [PRIMARY];
') AT Homer;
Ini membuat tabel bernama Cats
di Pets
database di server tertaut yang disebut Homer
.
Kode ini jelas mengasumsikan bahwa ada database bernama Pets
pada server yang terhubung. Jika tidak ada, Anda harus membuatnya terlebih dahulu.
Nama server tertaut (Homer
dalam hal ini) adalah definisi server tertaut yang ada di server lokal. Itu bukan nama server jarak jauh yang sebenarnya.
Metode 2
Pendekatan kedua kami adalah menjalankan sp_executesql
prosedur tersimpan sistem di server jauh, sambil meneruskan pernyataan T-SQL kami.
Seperti ini:
EXEC Homer.master.dbo.sp_executesql N'
USE [Pets];
CREATE TABLE [dbo].[Dogs](
[DogId] [int] IDENTITY(1,1) NOT NULL,
[DogName] [nvarchar](255) NULL,
[GoodDog] [bit] NULL
) ON [PRIMARY];
';
Jadi meskipun sintaksnya berbeda, hasilnya tetap sama. Selain itu, CREATE TABLE
sintaks tidak berubah, terlepas dari metode yang digunakan untuk mengakses server tertaut.
Meneruskan Pernyataan sebagai Variabel
Anda juga dapat meneruskan CREATE TABLE
pernyataan sebagai variabel ke EXEC
pernyataan.
Ini bisa berguna jika Anda memiliki banyak tabel dan/atau objek lain untuk dibuat.
Berikut ini contoh menggunakan sintaks pertama:
DECLARE @tsql nvarchar(max);
SET @tsql = '
USE [Pets];
CREATE TABLE [dbo].[Cats](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatName] [varchar](60) NULL
) ON [PRIMARY];
CREATE TABLE [dbo].[Dogs](
[DogId] [int] IDENTITY(1,1) NOT NULL,
[DogName] [nvarchar](255) NULL,
[GoodDog] [bit] NULL
) ON [PRIMARY];
';
EXEC (@tsql) AT Homer;
Dan inilah yang setara dengan menggunakan sintaks kedua:
DECLARE @tsql nvarchar(max);
SET @tsql = '
USE [Pets];
CREATE TABLE [dbo].[Cats](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatName] [varchar](60) NULL
) ON [PRIMARY];
CREATE TABLE [dbo].[Dogs](
[DogId] [int] IDENTITY(1,1) NOT NULL,
[DogName] [nvarchar](255) NULL,
[GoodDog] [bit] NULL
) ON [PRIMARY];
';
EXEC Homer.master.dbo.sp_executesql @tsql;