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.