Database
 sql >> Baza danych >  >> RDS >> Database

Ogranicz serwer połączony do pojedynczego logowania lokalnego (przykład T-SQL)

W tym artykule konfiguruję połączony serwer w SQL Server tak, aby dostęp do niego miał tylko jeden lokalny login. Aby to zrobić, usuwam wszelkie mapowania, które są tworzone automatycznie podczas tworzenia połączonego serwera, przed dodaniem mapowania logowania dla pojedynczego logowania lokalnego.

Skonfiguruj połączony serwer i mapowanie logowania

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

Ten przykład tworzy połączony serwer o nazwie Homer. Następnie usuwa wszystkie mapowania logowania, które są tworzone automatycznie, przed dodaniem loginu dla konkretnego loginu lokalnego o nazwie Milhouse.

Dla naszych celów odpowiedni wiersz w tym przykładzie to @locallogin='Milhouse' . Jest to linia, która określa, że ​​mapowanie logowania ma zostać utworzone dla określonego logowania lokalnego (w tym przypadku „Milhouse”).

Teraz Milhouse będzie jedynym lokalnym loginem, który będzie mógł połączyć się z połączonym serwerem.

Jak to działa

Gdy używasz sp_addlinkedserver aby utworzyć połączony serwer w SQL Server, automatycznie tworzone jest domyślne mapowanie między wszystkimi loginami na serwerze lokalnym a zdalnymi loginami na serwerze linked. SQL Server używa danych logowania lokalnego podczas łączenia się z połączonym serwerem w imieniu logowania.

Jest to świetne, jeśli naprawdę chcesz tych mapowań – oszczędza ci to jawnego ich tworzenia. Ale jeśli nie chcesz je, musisz użyć sp_droplinkedsrvlogin aby je usunąć. Tak właśnie zrobiłem w powyższym przykładzie.

Gdy usuniesz wszystkie automatycznie utworzone mapowania logowania, możesz użyć sp_addlinkedsrvlogin aby dodać mapowanie dla określonego logowania lokalnego.

Zezwalanie wszystkim lokalnym loginom na udostępnianie mapowania logowania

Możesz również skonfigurować go tak, aby wszystkie lokalne logowania używały tego samego mapowania logowania (aby nie ograniczać się tylko do Milhouse, na przykład). Ponadto, zamiast odwzorowania każdego lokalnego logowania na odpowiadające mu zdalne logowanie, mogą oni używać loginu skonfigurowanego dla połączonego serwera. Aby to zrobić, po prostu ustaw @locallogin=NULL . Pozwala to wszystkim lokalnym loginom połączyć się z połączonym serwerem, niezależnie od tego, czy mają odpowiedni zdalny login na połączonym serwerze.

Zobacz Jak działają logowanie na połączonych serwerach, aby zapoznać się z przykładami różnych lokalnych loginów próbujących uzyskać dostęp do połączonego serwera w różnych scenariuszach.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Naucz się podstawowej analizy danych za pomocą funkcji okna SQL

  2. Zatrzask APPEND_ONLY_STORAGE_INSERT_POINT

  3. Analizowanie danych QuickBooks w Dundas BI

  4. Korzystanie z ODBC z Salesforce i OneLogin Single Sign On (SSO)

  5. Elastyczne i łatwe w zarządzaniu projekty zestawień materiałowych (BOM)