sql >> Databasteknik >  >> RDS >> Sqlserver

Ta bort en länkad server i SQL Server med T-SQL

Den här artikeln ger ett exempel på hur du använder Transact-SQL för att ta bort en länkad server i SQL Server.

För att ta bort en länkad server, använd sp_dropserver systemlagrad procedur. Detta tar bort en server från listan över kända fjärr- och länkservrar på den lokala instansen av SQL Server. Denna lagrade procedur accepterar två argument:servernamnet och ett valfritt argument för att ta bort eventuella inloggningar som är associerade med servern.

Exempel 1 – Släpp en länkad server och dess inloggningar

Här är ett exempel på hur du släpper en länkad server och alla associerade inloggningar för den länkade servern. I det här fallet kallas den länkade servern "Homer".

EXEC sp_dropserver 'Homer', 'droplogins';

Resultat:

Commands completed successfully.

Som med alla lagrade förfaranden kan du också uttryckligen inkludera argumentnamnen. Detta ändrar dock inte resultatet – den länkade servern släpps tillsammans med dess associerade inloggningar.

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

Resultat:

Commands completed successfully.

Exempel 2 – Släpp en länkad server utan att släppa dess inloggningar

Som nämnts, droplogins argument är valfritt. Du kan också släppa en länkad server så här:

EXEC sp_dropserver 'Homer';

Men om det finns några inloggningar kopplade till den länkade servern får du följande felmeddelande:

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

Vilket innebär att du måste lägga till droplogins argument.

Du får också ett felmeddelande om den länkade servern är konfigurerad som en replikeringsutgivare.

Återigen, du kan uttryckligen inkludera namnen på argumenten om du föredrar:

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

Resultat:

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

Du kommer inte att få ett felmeddelande om det inte finns några inloggningar kopplade till den länkade servern. Till exempel, om du skapar en länkad server utan att använda sp_addlinkedsrvlogin för att lägga till en inloggning kommer du att kunna släppa servern utan att använda droplogins argument. Detta gäller även om en mappning skapades mellan din lokala inloggning och en på fjärrservern.

Så om fjärrservern har en inloggning som heter Marge, och jag kör detta under Marge-inloggningen på lokal server:

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

En mappning skapas mellan Marge på den lokala servern och Marge på den länkade servern. Detta är möjligt eftersom båda inloggningarna delar samma referenser. I det här fallet behöver du inte köra sp_addlinkedsrvlogin för att lägga till Marge som en inloggning för den länkade servern.

Men om det inte finns någon motsvarande inloggning för Marge på den länkade servern (eller om det finns, men referenserna stämmer inte överens), kommer mappningen inte att ske, och Marge kommer inte att kunna komma åt den länkade servern.

Hur som helst kommer att köra följande kod framgångsrikt:

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

Resultat:

Commands completed successfully.

Detta slutförs framgångsrikt för Marge, även när det finns en mappning mellan hennes lokala inloggning och den länkade servern (men inga andra inloggningar för den länkade servern).


  1. Lägg till en kolumn med ett standardvärde till en befintlig tabell i SQL Server

  2. Hur man subtraherar 30 dagar från det aktuella datumet med SQL Server

  3. Hur man skapar en CHECK-begränsning i SQL Server (T-SQL-exempel)

  4. Codds regler i SQL