Един от начините за създаване на база данни на свързан сървър е просто да преминете към този сървър и да го създадете локално.
Но вероятно ще се почувствате малко измамени, ако го включа като един от „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 и се разпознава само от определени помощни програми.
Следователно може да се наложи да изпълните отделен скрипт, за да създадете таблиците.