sql >> Database >  >> RDS >> Database

Een gekoppelde server beperken tot een enkele lokale aanmelding (T-SQL-voorbeeld)

In dit artikel configureer ik een gekoppelde server in SQL Server zodat slechts een enkele lokale login er toegang toe heeft. Om dit te doen, verwijder ik alle toewijzingen die automatisch worden gemaakt wanneer ik de gekoppelde server maak, voordat ik een login-toewijzing toevoeg voor de enkele lokale login.

Configureer de gekoppelde server en login-toewijzing

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';

In dit voorbeeld wordt een gekoppelde server gemaakt met de naam Homer. Vervolgens verwijdert het alle login-toewijzingen die automatisch worden gemaakt, voordat een login wordt toegevoegd voor een specifieke lokale login genaamd Milhouse.

Voor onze doeleinden is de relevante regel in dit voorbeeld @locallogin='Milhouse' . Dit is de regel die aangeeft dat de login-toewijzing moet worden gemaakt voor de opgegeven lokale login (in dit geval 'Milhouse').

Nu is Milhouse de enige lokale login die verbinding kan maken met de gekoppelde server.

Hoe het werkt

Wanneer u sp_addlinkedserver . gebruikt om een ​​gekoppelde server in SQL Server te maken, wordt automatisch een standaardtoewijzing gemaakt tussen alle aanmeldingen op de lokale server en aanmeldingen op afstand op de gekoppelde server. SQL Server gebruikt de inloggegevens van de lokale login bij het verbinden met de gekoppelde server namens de login.

Dit is geweldig als u deze toewijzingen echt wilt - het voorkomt dat u ze expliciet maakt. Maar als je niet wilt, moet u sp_droplinkedsrvlogin . gebruiken om ze te verwijderen. Dat is wat ik deed in het bovenstaande voorbeeld.

Nadat u alle automatisch gemaakte inlogtoewijzingen heeft verwijderd, kunt u sp_addlinkedsrvlogin gebruiken om een ​​toewijzing toe te voegen voor een specifieke lokale login.

Alle lokale aanmeldingen toestaan ​​om de aanmeldingstoewijzing te delen

Je kunt het ook zo configureren dat alle lokale aanmeldingen dezelfde aanmeldingstoewijzing gebruiken (zodat het niet alleen beperkt is tot bijvoorbeeld Milhouse). Ook kunnen ze, in plaats van dat elke lokale login wordt toegewezen aan een corresponderende externe login, de login gebruiken die u configureert voor de gekoppelde server. Om dit te doen, stelt u eenvoudig @locallogin=NULL . in . Hierdoor kunnen alle lokale aanmeldingen verbinding maken met de gekoppelde server, ongeacht of ze een overeenkomstige externe aanmelding op de gekoppelde server hebben.

Zie Hoe aanmeldingen werken op gekoppelde servers voor voorbeelden van verschillende lokale aanmeldingen die proberen toegang te krijgen tot een gekoppelde serveraanmelding in verschillende scenario's.


  1. Deel 1 – SuiteCRM installeren en de database reverse engineeren?

  2. Entiteitskadercode is traag wanneer Include() vaak wordt gebruikt

  3. DATEPART() Voorbeelden in SQL Server

  4. Het voortschrijdend gemiddelde berekenen in MySQL