sql >> Databáze >  >> RDS >> Database

Omezení propojeného serveru na jediné místní přihlášení (příklad T-SQL)

V tomto článku nakonfiguruji propojený server v SQL Server tak, aby k němu měl přístup pouze jediné místní přihlášení. Za tímto účelem odstraním všechna mapování, která se automaticky vytvoří při vytváření propojeného serveru, a to před přidáním mapování přihlášení pro jediné místní přihlášení.

Nakonfigurujte mapování propojeného serveru a přihlášení

EXEC sp_addlinkedserver 
    @server=N'Homer', 
    @srvproduct=N'', 
    @provider=N'MSOLEDBSQL', 
    @datasrc=N'172.17.0.2',
    @catalog='Music';

EXEC sp_droplinkedsrvlogin 'Homer', NULL;

EXEC sp_addlinkedsrvlogin 
    @rmtsrvname=N'Homer', 
    @useself=N'FALSE', 
    @locallogin='Milhouse', 
    @rmtuser=N'Maggie', 
    @rmtpassword=N'BigStrong#Passw0rd';

Tento příklad vytvoří propojený server s názvem Homer. Poté zruší všechna mapování přihlášení, která jsou automaticky vytvořena, před přidáním přihlášení pro konkrétní místní přihlášení s názvem Milhouse.

Pro naše účely je v tomto příkladu relevantní řádek @locallogin='Milhouse' . Toto je řádek, který určuje, že mapování přihlášení má být vytvořeno pro zadané místní přihlášení (v tomto případě ‚Milhouse‘).

Nyní bude Milhouse jediným místním přihlášením, které se bude moci připojit k propojenému serveru.

Jak to funguje

Když používáte sp_addlinkedserver pro vytvoření propojeného serveru v SQL Server se automaticky vytvoří výchozí mapování mezi všemi přihlášeními na místním serveru a vzdálenými přihlášeními na propojeném serveru. SQL Server používá přihlašovací údaje místního přihlášení při připojování k propojenému serveru jménem přihlašovacího jména.

To je skvělé, pokud tato mapování skutečně chcete – ušetří vás to od jejich explicitního vytváření. Ale pokud to neděláte chcete je, budete muset použít sp_droplinkedsrvlogin k jejich odstranění. To jsem udělal ve výše uvedeném příkladu.

Jakmile zrušíte všechna automaticky vytvořená mapování přihlášení, můžete použít sp_addlinkedsrvlogin pro přidání mapování pro konkrétní místní přihlášení.

Povolení sdílení mapování přihlášení všem místním přihlášením

Můžete jej také nakonfigurovat tak, aby všechna místní přihlášení používala stejné mapování přihlášení (takže to není omezeno například na Milhouse). Místo toho, aby bylo každé místní přihlášení mapováno na odpovídající vzdálené přihlášení, mohou také použít přihlášení, které nakonfigurujete pro propojený server. Chcete-li to provést, jednoduše nastavte @locallogin=NULL . To umožňuje všem místním přihlášením připojit se k propojenému serveru bez ohledu na to, zda mají nebo nemají odpovídající vzdálené přihlášení na propojeném serveru.

Podívejte se, jak fungují přihlášení na propojených serverech, kde najdete příklady různých místních přihlášení, která se pokoušejí o přístup k přihlášení k propojenému serveru v různých scénářích.


  1. Nejlepší způsob, jak VLOŽIT mnoho hodnot do mysqli?

  2. MariaDB SESSION_USER() Vysvětleno

  3. Syntaxe for-loop v SQL Server

  4. Může PostgreSQL indexovat sloupce pole?