sql >> Databáze >  >> RDS >> Sqlserver

2 způsoby, jak vytvořit databázi na propojeném serveru pomocí T-SQL

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.


  1. Jak zjistit, zda je vypočítaný sloupec deterministický na serveru SQL Server

  2. Případová studie upgradu hardwaru databázového serveru SQL Server

  3. Jak Coalesce() funguje v SQLite

  4. Obnovení zálohy databáze v OpenCart 1.5