Един от начините за създаване на база данни на свързан сървър е просто да преминете към този сървър и да го създадете локално.
Но вероятно ще се почувствате малко измамени, ако го включа като един от „2 начина“ за създаване на база данни на свързан сървър.
Освен това, докато тази опция е добра, ако сте в състояние и желаете да го направите, тази статия ви показва как да го направите дистанционно с помощта на T-SQL, без да се налага да прескачате до локалния сървър. Освен това може да откриете тази техника по-бързо, отколкото да прескочите към другия сървър.
И двата „2 начина“ включват EXECUTE
оператор (който също може да бъде съкратен до EXEC
). Можем да използваме този израз, за да изпълним код на свързания сървър и това включва създаване на база данни на него.
Предварително условие
Изпълнението на съхранени процедури на свързан сървър изисква да активирате RPC Out (ако вече не е активиран).
Можете да проверите дали RPC Out е активиран, като потърсите sys.servers
изглед на каталог.
Следният код активира RPC Out на свързан сървър, наречен Homer
:
EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';
След като това е активирано, можем да продължим и да създадем базата данни.
Метод 1
Ето първия метод за създаване на база данни на свързания сървър.
EXEC ('CREATE DATABASE Pets') AT Homer;
В този пример създавам база данни, наречена Pets
на свързан сървър, наречен Homer
.
EXECUTE
/EXEC
изразът може да се използва за изпращане на команди за преминаване към свързани сървъри.
За да направите това, включете команда за преминаване в скоби след EXECUTE
/EXEC
ключова дума, след това последвайте това с AT LinkedServerName
, където LinkedServerName
е името на свързания сървър, на който искате да създадете базата данни.
Следователно всичко, което трябва да направим, е да включим нашия CREATE TABLE
изявление като аргумент на това твърдение.
Имайте предвид, че името на свързания сървър е името, което сте му дали, когато сте създали свързания сървър. Това не е действителното име на сървъра на отдалечения сървър.
Метод 2
Вторият метод е подобен на първия, освен че в този случай предаваме нашата команда на sp_executesql
системна съхранена процедура на отдалечения сървър.
EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';
За да направим това, трябва да използваме името от четири части, което включва името на свързания сървър. Ако не направихме това, щяхме да изпълним sp_executesql
на нашия локален сървър вместо на отдалечения сървър.
Предаване на изявлението като променлива
Можете също да подадете CREATE DATABASE
израз като променлива към EXEC
изявление.
Като това:
DECLARE @tsql nvarchar(max);
SET @tsql = 'CREATE DATABASE Pets';
EXEC (@tsql) AT Homer;
Въпреки това, ако се опитате да превключите към базата данни и да създадете таблиците, може да срещнете проблеми, дори ако добавите GO
на обичайните места. Това вероятно е защото GO
ключовата дума всъщност не е част от T-SQL и се разпознава само от определени помощни програми.
Следователно може да се наложи да изпълните отделен скрипт, за да създадете таблиците.