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

2 sposoby tworzenia bazy danych na serwerze połączonym przy użyciu T-SQL

Jednym ze sposobów tworzenia bazy danych na serwerze połączonym jest po prostu przeskoczenie do tego serwera i utworzenie go lokalnie.

Ale prawdopodobnie czulibyście się trochę oszukani, gdybym uwzględnił to jako jeden z „dwóch sposobów” tworzenia bazy danych na połączonym serwerze.

Ponadto, chociaż ta opcja jest w porządku, jeśli jesteś w stanie i chcesz to zrobić, ten artykuł pokazuje, jak to zrobić zdalnie za pomocą T-SQL, bez konieczności przeskakiwania na lokalny serwer. Dodatkowo może się okazać, że ta technika będzie szybsza niż przeskakiwanie na inny serwer.

Oba „dwa sposoby” obejmują EXECUTE instrukcja (która może być również skrócona do EXEC ). Możemy użyć tej instrukcji do wykonania kodu na połączonym serwerze, co obejmuje utworzenie na nim bazy danych.

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 możemy kontynuować i utworzyć bazę danych.

Metoda 1

Oto pierwsza metoda tworzenia bazy danych na połączonym serwerze.

EXEC ('CREATE DATABASE Pets') AT Homer;

W tym przykładzie tworzę bazę danych o nazwie Pets na połączonym serwerze o nazwie Homer .

EXECUTE /EXEC Instrukcja może służyć do wysyłania poleceń tranzytowych do serwerów połączonych.

Aby to zrobić, umieść polecenie przekazujące w nawiasach po EXECUTE /EXEC słowo kluczowe, a następnie wpisz AT LinkedServerName , gdzie LinkedServerName to nazwa połączonego serwera, na którym chcesz utworzyć bazę danych.

Dlatego wszystko, co musimy zrobić, to dołączyć naszą CREATE TABLE oświadczenie jako argument do tego oświadczenia.

Zauważ, że nazwa serwera połączonego to nazwa, którą nadałeś mu podczas tworzenia serwera połączonego. To nie jest rzeczywista nazwa serwera zdalnego.

Metoda 2

Druga metoda jest podobna do pierwszej, z wyjątkiem tego, że przekazujemy nasze polecenie do sp_executesql systemowa procedura składowana na zdalnym serwerze.

EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';

W tym celu musimy użyć czteroczęściowej nazwy, która zawiera nazwę połączonego serwera. Gdybyśmy tego nie zrobili, skończylibyśmy na wykonaniu sp_executesql na naszym serwerze lokalnym zamiast na serwerze zdalnym.

Przekaż oświadczenie jako zmienną

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

Tak:

DECLARE @tsql nvarchar(max);
SET @tsql = 'CREATE DATABASE Pets';
EXEC (@tsql) AT Homer;

Chociaż, jeśli spróbujesz następnie przełączyć się na bazę danych i utworzyć tabele, możesz napotkać problemy, nawet jeśli dodasz GO w zwykłych miejscach. Dzieje się tak prawdopodobnie dlatego, że GO słowo kluczowe nie jest w rzeczywistości częścią T-SQL i jest rozpoznawane tylko przez niektóre narzędzia.

Dlatego może być konieczne uruchomienie oddzielnego skryptu, aby utworzyć tabele.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Wyrażenia regularne w T-SQL

  2. Kolejność wykonania zapytania SQL

  3. Jak utworzyć ograniczenie CHECK w programie SQL Server (przykłady T-SQL)

  4. Musisz zadeklarować zmienną skalarną @Id?

  5. Jak naprawić „Nieprawidłowa nazwa obiektu „OPENJSON”. w SQL Server