sql >> Databáze >  >> RDS >> Sqlserver

Odeberte propojený server v SQL Server pomocí T-SQL

Tento článek poskytuje příklad použití Transact-SQL k odebrání propojeného serveru v SQL Server.

Chcete-li odebrat propojený server, použijte sp_dropserver uložená procedura systému. Tím se server odebere ze seznamu známých vzdálených a propojených serverů na místní instanci serveru SQL Server. Tato uložená procedura přijímá dva argumenty:název serveru a volitelný argument pro odstranění všech přihlášení spojených se serverem.

Příklad 1 – Zrušte propojený server a jeho přihlášení

Zde je příklad zrušení propojeného serveru a všech přidružených přihlášení pro tento propojený server. V tomto případě se propojený server nazývá „Homer“.

EXEC sp_dropserver 'Homer', 'droplogins';

Výsledek:

Commands completed successfully.

Stejně jako u jakékoli uložené procedury můžete také explicitně zahrnout názvy argumentů. To však nemění výsledek – propojený server je zrušen spolu s přidruženými přihlášeními.

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

Výsledek:

Commands completed successfully.

Příklad 2 – Zrušte propojený server bez zrušení jeho přihlášení

Jak již bylo zmíněno, droplogins argumenty jsou nepovinné. Propojený server můžete také zrušit takto:

EXEC sp_dropserver 'Homer';

Pokud jsou však k propojenému serveru přidružena nějaká přihlášení, zobrazí se následující chyba:

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

To znamená, že budete muset přidat droplogins argument.

Chyba se zobrazí také v případě, že je propojený server nakonfigurován jako vydavatel replikace.

Opět můžete explicitně uvést názvy argumentů, pokud chcete:

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

Výsledek:

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

Pokud k propojenému serveru nejsou přidružena žádná přihlášení, nezobrazí se chyba. Pokud například vytvoříte propojený server bez použití sp_addlinkedsrvlogin pro přidání přihlašovacích údajů budete moci server zrušit bez použití droplogins argument. To platí i v případě, že bylo vytvořeno mapování mezi vaším místním přihlášením a přihlášením na vzdáleném serveru.

Takže pokud má vzdálený server přihlašovací jméno s názvem Marge a spustím to pod přihlašovacím jménem Marge na místním server:

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

Vytvoří se mapování mezi Marge na místním serveru a Marge na propojeném serveru. To je možné, protože obě přihlášení sdílejí stejné přihlašovací údaje. V tomto případě není nutné spouštět sp_addlinkedsrvlogin přidat Marge jako přihlašovací jméno pro propojený server.

Pokud však na propojeném serveru neexistuje odpovídající přihlášení pro Marge (nebo pokud existuje, ale přihlašovací údaje se neshodují), mapování neproběhne a Marge nebude mít přístup k propojenému serveru.

Ať tak či onak, spuštění následujícího kódu bude úspěšné:

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

Výsledek:

Commands completed successfully.

To se pro Marge úspěšně dokončí, i když existuje mapování mezi jejím místním přihlášením a propojeným serverem (ale žádná jiná přihlášení pro propojený server).


  1. Předcházení problémům s výkonem při trhání kolenem

  2. Zastaralé:mysql_connect()

  3. Přehled úkolů Nejnovější služba monitorování databáze – Spotlight Cloud

  4. Co je databáze Greenplum? Úvod do databáze velkých dat