Jedním ze způsobů, jak vytvořit databázi na propojeném serveru, je jednoduše přejít na tento server a vytvořit jej lokálně.
Ale pravděpodobně byste se cítili trochu podvedeni, kdybych to uvedl jako jeden ze „2 způsobů“ vytvoření databáze na propojeném serveru.
I když je tato možnost v pořádku, pokud jste schopni a ochotni to udělat, tento článek vám ukáže, jak to udělat vzdáleně pomocí T-SQL, aniž byste museli přeskakovat na místní server. Navíc může být tato technika rychlejší než přeskakování na jiný server.
Oba „2 způsoby“ zahrnují EXECUTE
příkaz (který lze také zkrátit na EXEC
). Tento příkaz můžeme použít ke spuštění kódu na propojeném serveru, včetně vytvoření databáze na něm.
Předpoklad
Provádění uložených procedur na propojeném serveru vyžaduje povolení výstupu RPC (pokud již není povoleno).
Můžete zkontrolovat, zda je povolen RPC Out dotazem na sys.servers
zobrazení katalogu.
Následující kód umožňuje RPC Out na propojeném serveru s názvem Homer
:
EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';
Jakmile to bude povoleno, můžeme pokračovat a vytvořit databázi.
Metoda 1
Zde je první metoda pro vytvoření databáze na propojeném serveru.
EXEC ('CREATE DATABASE Pets') AT Homer;
V tomto příkladu vytvořím databázi s názvem Pets
na propojeném serveru s názvem Homer
.
EXECUTE
/EXEC
příkaz lze použít k odesílání průchozích příkazů na propojené servery.
Chcete-li to provést, vložte příkaz pass-through do závorek za EXECUTE
/EXEC
klíčové slovo a poté na něj zadejte AT LinkedServerName
, kde LinkedServerName
je název propojeného serveru, na kterém chcete vytvořit databázi.
Proto vše, co musíme udělat, je zahrnout naši CREATE TABLE
tvrzení jako argument k tomuto tvrzení.
Všimněte si, že název propojeného serveru je název, který jste mu zadali při vytváření propojeného serveru. Není to skutečný název vzdáleného serveru.
Metoda 2
Druhá metoda je podobná první, s tím rozdílem, že v tomto případě předáme náš příkaz do sp_executesql
procedura uložená systémem na vzdáleném serveru.
EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';
Abychom to mohli provést, musíme použít čtyřdílný název, který obsahuje název propojeného serveru. Pokud bychom to neudělali, skončili bychom spuštěním sp_executesql
na našem místním serveru namísto vzdáleného serveru.
Předat výpis jako proměnnou
Můžete také předat CREATE DATABASE
příkaz jako proměnná do EXEC
prohlášení.
Takhle:
DECLARE @tsql nvarchar(max);
SET @tsql = 'CREATE DATABASE Pets';
EXEC (@tsql) AT Homer;
Pokud se však pokusíte přepnout do databáze a vytvořit tabulky, můžete narazit na problémy, i když přidáte GO
na obvyklých místech. Je to pravděpodobně proto, že GO
klíčové slovo není ve skutečnosti součástí T-SQL a je rozpoznáno pouze některými nástroji.
Proto může být nutné spustit samostatný skript k vytvoření tabulek.