Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

2 начина за създаване на база данни на свързан сървър с помощта на T-SQL

Един от начините за създаване на база данни на свързан сървър е просто да преминете към този сървър и да го създадете локално.

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

Следователно може да се наложи да изпълните отделен скрипт, за да създадете таблиците.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да стартирате съхранена процедура всеки ден в SQL Server Express Edition?

  2. SQL Server заместете, премахнете всички след определен знак

  3. SQL редове към колони

  4. Добавете отместване на часовата зона към стойност datetime2 в SQL Server (T-SQL)

  5. Как да създадете ограничение CHECK в SQL Server (примери за T-SQL)