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

Přidat přihlášení k propojenému serveru na SQL Server (příklad T-SQL)

V tomto článku vytvořím přihlášení pro propojený server v SQL Server. V tomto případě používám Transact-SQL (na rozdíl od použití GUI, jako je SSMS).

Chcete-li vytvořit přihlášení pro propojený server, použijte sp_addlinkedsrvlogin systémová uložená procedura.

Syntaxe

Syntaxe vypadá takto:

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'   
     [ , [ @useself = ] { 'TRUE' | 'FALSE' | NULL } ]   
     [ , [ @locallogin = ] 'locallogin' ]   
     [ , [ @rmtuser = ] 'rmtuser' ]   
     [ , [ @rmtpassword = ] 'rmtpassword' ]

Následující příklad ukazuje, jak to funguje. Podrobnější vysvětlení každého argumentu naleznete v oficiální dokumentaci společnosti Microsoft.

Příklad 1 – Přidání přihlašovacího jména pro propojený server

Zde je příklad přidání přihlášení k serveru SQL s názvem Maggie pro propojený server s názvem Homer:

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

Po vytvoření propojeného serveru to spusťte na místním serveru. Budete potřebovat odpovídající přihlášení se stejnými přihlašovacími údaji na skutečném vzdáleném serveru.

Příklad 2 – Zahrnout propojený server

Pro úplnost je to zde znovu, ale tentokrát nejprve vytvořím propojený server:

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

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

Pokud má skutečný (vzdálený) propojený server přihlašovací údaje se stejnými pověřeními, bude se místní server moci přihlásit k propojenému serveru.

Příklad 3 – Přidejte přihlašovací jméno/uživatele na vzdálený server

Jak již bylo zmíněno, musíte se ujistit, že na vzdáleném serveru existuje odpovídající přihlášení. Budete také muset zajistit, aby se toto přihlášení mapovalo na uživatele databáze s příslušnými oprávněními.

Takže v tomto případě bychom mohli vytvořit přihlášení na vzdáleném serveru tak, že přeskočíme na vzdálený server a spustíme toto:

CREATE LOGIN Maggie
    WITH PASSWORD = 'BigStrong#Passw0rd';

USE Music;
CREATE USER Maggie FOR LOGIN Maggie;

GRANT SELECT ON DATABASE::Music TO Maggie; 

Tím se vytvoří přihlašovací jméno s názvem Maggie a odpovídající uživatel databáze s názvem Maggie. Uděluje také SELECT oprávnění pro Maggie pro hudební databázi.

Nyní, když jsem to udělal, budou všechny distribuované dotazy pomocí tohoto přihlášení omezeny na hudební databázi.

Alternativa k použití GRANT SELECT ON DATABASE , je přidat uživatele do db_datareader pevná databázová role nebo možná vlastní role.

Pokud jste propojený server vytvořili před vytvořením přihlášení a databázových uživatelů na vzdáleném serveru, možná budete muset propojený server zrušit a vytvořit jej znovu. Pokud ano, můžete to zahodit takto:

EXEC sp_dropserver 'Homer', 'droplogins';

Po zrušení můžete znovu vytvořit propojený server a jeho přidružené přihlášení.

Opravdu potřebuji přihlášení k propojenému serveru?

Je možné, že ani nemusíte přidávat přihlašovací údaje jako ve výše uvedeném příkladu.

Při prvním vytvoření propojeného serveru na serveru SQL 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á pověření místního přihlášení při připojování k propojenému serveru jménem přihlášení.

Pokud tedy vaše místní přihlášení má odpovídající přihlášení na propojeném serveru, se stejnými přihlašovacími údaji a má příslušná oprávnění, můžete jít. Není třeba přidávat přihlašovací údaje pro propojený server.

Přesto můžete mít další důvody pro přidání samostatného přihlášení, jako je jeho přidání pro jiné uživatele.

Můžete také chtít vytvořit mapování přihlášení pro jednoho místního uživatele, v takovém případě můžete použít @locallogin argument k určení místního přihlášení, které má být mapováno.

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. Pochopení skupiny dostupnosti Always ON mezi instancemi SQL Serveru na bázi Linuxu. Část 1

  2. Jak vypustit nebo odstranit všechny spouštěče z databáze na serveru SQL

  3. ORA-01017 Tipy pro řešení chyb Oracle

  4. DO a DONT pro indexy