В тази статия конфигурирам свързан сървър в SQL Server, така че само едно локално влизане да има достъп до него. За да направя това, изтривам всички съпоставяния, които се създават автоматично, когато създам свързания сървър, преди да добавя съпоставяне за вход за единичния локален вход.
Конфигуриране на свързания сървър и карта за влизане
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';
Този пример създава свързан сървър, наречен Homer. След това премахва всички съпоставяния за вход, които се създават автоматично, преди да добави потребителско име за конкретно локално влизане, наречено Milhouse.
За нашите цели съответният ред в този пример е @locallogin='Milhouse'
. Това е редът, който указва, че съпоставянето за вход трябва да бъде създадено за посоченото локално влизане (в този случай „Milhouse“).
Сега Milhouse ще бъде единственото локално влизане, което може да се свърже със свързания сървър.
Как работи
Когато използвате sp_addlinkedserver
за да създадете свързан сървър в SQL Server, автоматично се създава съпоставяне по подразбиране между всички входове на локалния сървър и отдалечени входове на свързания сървър. SQL Server използва идентификационните данни на локалния вход, когато се свързва към свързания сървър от името на данните за вход.
Това е чудесно, ако наистина искате тези съпоставяния – спестява ви изричното създаване. Но ако не ако ги искате, ще трябва да използвате sp_droplinkedsrvlogin
за да ги премахнете. Това направих в горния пример.
След като изхвърлите всички автоматично създадени съпоставяния за вход, можете да използвате sp_addlinkedsrvlogin
за да добавите съпоставяне за конкретно локално влизане.
Разрешаване на всички локални входове да споделят картата за влизане
Можете също така да го конфигурирате така, че всички локални влизания да използват едно и също съпоставяне на входа (така че да не се ограничава само до Milhouse, например). Освен това, вместо да имат всяка локална карта за влизане в съответното отдалечено влизане, те могат да използват данните за вход, които конфигурирате за свързания сървър. За да направите това, просто задайте @locallogin=NULL
. Това позволява на всички локални входове да се свържат към свързания сървър, независимо дали имат или не съответно отдалечено влизане на свързания сървър.
Вижте как работят влизанията на свързани сървъри за примери за различни локални данни за влизане, които се опитват да осъществят достъп до данните за влизане в свързан сървър при различни сценарии.