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

Премахнете свързан сървър в SQL Server с помощта на T-SQL

Тази статия предоставя пример за използване на Transact-SQL за премахване на свързан сървър в SQL Server.

За да премахнете свързан сървър, използвайте sp_dropserver системна съхранена процедура. Това премахва сървър от списъка с известни отдалечени и свързани сървъри на локалния екземпляр на SQL Server. Тази съхранена процедура приема два аргумента:името на сървъра и незадължителен аргумент за премахване на всички данни за влизане, свързани със сървъра.

Пример 1 – Изхвърлете свързан сървър и неговите данни за влизане

Ето пример за премахване на свързан сървър и всички свързани данни за влизане за този свързан сървър. В този случай свързаният сървър се нарича „Homer“.

EXEC sp_dropserver 'Homer', 'droplogins';

Резултат:

Commands completed successfully.

Както при всяка съхранена процедура, можете също изрично да включите имената на аргументите. Това обаче не променя резултата - свързаният сървър се изтрива заедно със свързаните с него данни за вход.

EXEC sp_dropserver 
  @server = 'Homer', 
  @droplogins = 'droplogins';

Резултат:

Commands completed successfully.

Пример 2 – Изхвърлете свързан сървър, без да изтривате входните му данни

Както споменахме, droplogins аргументите не са задължителни. Можете също да пуснете свързан сървър по следния начин:

EXEC sp_dropserver 'Homer';

Ако обаче има някакви данни за влизане, свързани със свързания сървър, ще получите следната грешка:

Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 56
There are still remote logins or linked logins for the server 'Homer'.

Което означава, че ще трябва да добавите droplogins аргумент.

Ще получите и грешка, ако свързаният сървър е конфигуриран като издател на репликация.

Отново можете да включите изрично имената на аргументите, ако предпочитате:

EXEC sp_dropserver 
  @server = 'Homer', 
  @droplogins = NULL;

Резултат:

Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 56
There are still remote logins or linked logins for the server 'Homer'.

Няма да получите грешка, ако няма данни за влизане, свързани със свързания сървър. Например, ако създадете свързан сървър, без да използвате sp_addlinkedsrvlogin за да добавите вход, ще можете да пуснете сървъра, без да използвате droplogins аргумент. Това е вярно дори ако е създадено съпоставяне между вашето локално влизане и такова на отдалечения сървър.

Така че, ако отдалеченият сървър има потребителско име, наречено Marge, и аз стартирам това под името Marge на локалния сървър:

EXEC sp_addlinkedserver 
    @server=N'Homer', 
    @srvproduct=N'', 
    @provider=N'MSOLEDBSQL', 
    @datasrc=N'172.17.0.3,1433';

Създава се съпоставяне между Marge на локалния сървър и Marge на свързания сървър. Това е възможно, защото и двата входа споделят едни и същи идентификационни данни. В този случай няма нужда да изпълнявате sp_addlinkedsrvlogin за да добавите Marge като потребителско име за свързания сървър.

Въпреки това, ако няма съответното вход за Marge на свързания сървър (или ако има, но идентификационните данни не съвпадат), съпоставянето няма да се случи и Marge няма да има достъп до свързания сървър.

Така или иначе, изпълнението на следния код ще бъде успешно:

EXEC sp_dropserver 
  @server = 'Homer', 
  @droplogins = NULL;

Резултат:

Commands completed successfully.

Това завършва успешно за Мардж, дори когато има съпоставяне между нейното локално влизане и свързания сървър (но няма други данни за влизане за свързания сървър).


  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 - SQL Server / TSQL урок, част 119

  2. Защо логическите показания за прозоречни агрегатни функции са толкова високи?

  3. Какво означава exec sp_reset_connection в Sql Server Profiler?

  4. Как SCHEMA_ID() работи в SQL Server

  5. DATEFROMPARTS() Примери в SQL Server (T-SQL)