Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

2 sposoby tworzenia tabeli na serwerze połączonym za pomocą T-SQL

Jeśli potrzebujesz utworzyć tabelę na serwerze połączonym, możesz to zrobić bezpośrednio na serwerze zdalnym lub możesz to zrobić, uruchamiając skrypt z serwera lokalnego.

Oto dwa sposoby wykorzystania T-SQL do utworzenia tabeli na połączonym serwerze.

Obie metody używają EXECUTE /EXEC oświadczenie. Ale każdy stosuje inne podejście.

Warunek wstępny

Wykonywanie procedur składowanych na serwerze połączonym wymaga włączenia wyjścia RPC (jeśli nie jest jeszcze włączone).

Możesz sprawdzić, czy wyjście RPC jest włączone, wysyłając zapytanie do sys.servers widok katalogu.

Poniższy kod włącza wyjście RPC na połączonym serwerze o nazwie Homer :

EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';

Po włączeniu RPC Out możemy śmiało tworzyć tabele.

Metoda 1

Naszym pierwszym podejściem jest użycie AT argument, aby określić połączony serwer, dla którego ma zostać uruchomiony kod. Ta składnia pozwala nam wysyłać polecenia tranzytu do połączonych serwerów.

To wygląda tak:

EXEC ('
    USE  [Pets];
    CREATE TABLE [dbo].[Cats](
        [CatId] [int] IDENTITY(1,1) NOT NULL,
        [CatName] [varchar](60) NULL
    ) ON [PRIMARY];
') AT Homer;

Tworzy to tabelę o nazwie Cats w Pets baza danych na połączonym serwerze o nazwie Homer .

Ten kod oczywiście zakłada, że ​​istnieje baza danych o nazwie Pets na połączonym serwerze. Jeśli nie, musisz go najpierw utworzyć.

Nazwa połączonego serwera (Homer w tym przypadku) jest istniejącą definicją serwera połączonego na serwerze lokalnym. To nie jest nazwa rzeczywistego serwera zdalnego.

Metoda 2

Naszym drugim podejściem jest wykonanie sp_executesql systemowa procedura składowana na zdalnym serwerze, podczas przekazywania naszej instrukcji T-SQL.

Tak:

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];
    ';

Więc nawet jeśli składnia jest inna, wynik jest taki sam. Dodatkowo CREATE TABLE składnia nie zmienia się, niezależnie od metody użytej do uzyskania dostępu do połączonego serwera.

Przekaż oświadczenie jako zmienną

Możesz również przekazać CREATE TABLE instrukcja jako zmienna do EXEC oświadczenie.

Może to być przydatne, jeśli masz dużo tabel i/lub innych obiektów do stworzenia.

Oto przykład z użyciem pierwszej składni:

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;

A oto odpowiednik przy użyciu drugiej składni:

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. Zaktualizuj profil poczty bazy danych w programie SQL Server (T-SQL)

  2. Jak zaimportować plik JSON do tabeli serwera SQL?

  3. SQL Server Konwertuj Varchar na Datetime

  4. Sprawdź, czy plik istnieje, czy nie na serwerze sql?

  5. Losowy rekord z tabeli bazy danych (T-SQL)