Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

2 Cara Membuat Tabel di Server Tertaut menggunakan T-SQL

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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan prosedur tersimpan SQL Server dari Python (pyodbc)

  2. LINQ ke SQL Ambil tanpa Loncat Penyebab Beberapa Pernyataan SQL

  3. Mengapa kueri Microsoft SQL Server 2012 membutuhkan waktu beberapa menit dari JDBC 4.0 tetapi detik di Management Studio?

  4. Excel 32-bit dan SQL Server 64-bit

  5. Bagaimana Memulai dengan SQL Server di Azure