sp_addlinkedsrvlogin (Transact-SQL)
Erstellt oder aktualisiert eine Zuordnung zwischen einem Anmeldenamen in der lokalen Instanz von SQL Server und einem Sicherheitskonto auf einem Remoteserver.
Syntax
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
[ , [ @useself = ] 'TRUE' | 'FALSE' | 'NULL']
[ , [ @locallogin = ] 'locallogin' ]
[ , [ @rmtuser = ] 'rmtuser' ]
[ , [ @rmtpassword = ] 'rmtpassword' ]
Argumente
[ @rmtsrvname = ] 'rmtsrvname'
Der Name eines Verbindungsservers, für den die Anmeldenamenzuordnung gilt. rmtsrvname ist vom Datentyp sysname und hat keinen Standardwert.[ @useself = ] 'TRUE' | 'FALSE' | 'NULL'
Bestimmt, ob beim Herstellen der Verbindung mit rmtsrvname die Identität lokaler Anmeldenamen angenommen wird oder explizit ein Anmeldename und Kennwort übermittelt wird. Der Datentyp ist varchar(8), der Standardwert ist TRUE.Der Wert TRUE gibt an, dass Anmeldungen ihre eigenen Anmeldeinformationen für die Verbindung mit rmtsrvname verwenden, wobei die Argumente rmtuser und rmtpassword ignoriert werden. FALSE gibt an, dass die Argumente rmtuser und rmtpassword verwendet werden, um die Verbindung mit rmtsrvname für locallogin herzustellen. Wenn rmtuser und rmtpassword ebenfalls auf NULL festgelegt werden, wird kein Anmeldename oder Kennwort für den Zugriff auf den Verbindungsserver verwendet.
[ @locallogin = ] 'locallogin'
Ein Anmeldename auf dem lokalen Server. locallogin ist vom Datentyp sysname, der Standardwert ist NULL. NULL gibt an, dass dieser Eintrag für alle lokalen Anmeldenamen gilt, die eine Verbindung mit rmtsrvname herstellen. Bei einem Wert ungleich NULL kann es sich bei locallogin um einen SQL Server-Anmeldenamen oder einen Windows-Anmeldenamen handeln. Dem Windows-Anmeldenamen muss das Recht zum Zugreifen auf SQL Server erteilt worden sein. Dies kann entweder direkt oder über die Mitgliedschaft in einer Windows-Gruppe erfolgen, der das Zugriffsrecht erteilt wurde.[ @rmtuser = ] 'rmtuser'
Der Remoteanmeldename, unter dem die Verbindung mit rmtsrvname hergestellt wird, wenn @useself den Wert FALSE hat. Ist der Remoteserver eine Instanz von SQL Server, in der nicht die Windows-Authentifizierung verwendet wird, stellt rmtuser einen SQL Server-Anmeldenamen dar. rmtuser ist vom Datentyp sysname, der Standardwert ist NULL.[ @rmtpassword = ] 'rmtpassword'
Das mit rmtuser verknüpfte Kennwort. rmtpassword ist vom Datentyp sysname und hat den Standardwert NULL.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
Wenn sich ein Benutzer beim lokalen Server anmeldet und eine verteilte Abfrage ausführt, die auf eine Tabelle auf dem Verbindungsserver zugreift, muss sich der lokale Server beim Verbindungsserver im Auftrag des Benutzers anmelden, um auf diese Tabelle zugreifen zu können. Geben Sie mithilfe von sp_addlinkedsrvlogin die Anmeldeinformationen an, die der lokale Server zum Anmelden beim Verbindungsserver verwendet.
Hinweis |
---|
Um die besten Abfragepläne erstellen zu können, wenn Sie eine Tabelle auf einem Verbindungsserver verwenden, muss der Abfrageprozessor auf Datenverteilungsstatistiken vom Verbindungsserver zugreifen können. Benutzer mit eingeschränkten Rechten für einige Spalten der Tabelle verfügen unter Umständen nicht über ausreichende Rechte zum Abrufen nützlicher Statistikinformationen und erhalten daher unter Umständen weniger effiziente Abfragepläne und eine schlechtere Leistung. Wenn der Verbindungsserver eine Instanz von SQL Server ist, muss der Benutzer zum Anzeigen der verfügbaren Statistikinformationen Besitzer der Tabelle sein oder Mitglied der festen Serverrolle sysadmin, der festen Datenbankrolle db_owner oder der festen Datenbankrolle db_ddladmin auf dem Verbindungsserver sein. |
Eine Standardzuordnung zwischen allen Anmeldenamen auf dem lokalen Server und Remoteanmeldenamen auf dem Verbindungsserver wird durch Ausführen von sp_addlinkedserver automatisch erstellt. Die Standardzuordnung legt fest, dass SQL Server die Anmeldeinformationen der lokalen Anmeldung für den Zugriff auf den Verbindungsserver im Auftrag des Anmeldenamens verwendet. Dies ist gleichbedeutend mit dem Ausführen von sp_addlinkedsrvlogin mit auf true festgelegtem @useself für den Verbindungsserver, ohne dass ein lokaler Benutzername angegeben wird. Verwenden Sie sp_addlinkedsrvlogin nur, um die Standardzuordnung zu ändern oder um neue Zuordnungen für bestimmte lokale Anmeldenamen hinzuzufügen. Mithilfe von sp_droplinkedsrvlogin löschen Sie die Standardzuordnung oder eine beliebige andere Zuordnung.
Anstatt mit sp_addlinkedsrvlogin eine vordefinierte Anmeldenamenzuordnung erstellen zu müssen, kann SQL Server automatisch die Windows-Anmeldeinformationen für die Sicherheit (Windows-Anmeldename und -Kennwort) eines Benutzers verwenden, der die Abfrage für den Zugriff auf einen Verbindungsserver ausgibt. Dazu müssen die folgenden Bedingungen erfüllt sein:
Ein Benutzer ist mithilfe des Windows-Authentifizierungsmodus mit SQL Server verbunden.
Die Sicherheitskontendelegierung ist auf dem Client und dem sendenden Server verfügbar.
Der Anbieter unterstützt den Windows-Authentifizierungsmodus (z. B. SQL Server unter Windows).
Hinweis |
---|
Die Delegierung muss für Szenarien mit einem einzigen Hop nicht aktiviert werden, bei mehreren Hops ist dies jedoch erforderlich. |
Nachdem die Authentifizierung durch den Verbindungsserver mit den Zuordnungen erfolgt ist, die durch sp_addlinkedsrvlogin auf der lokalen Instanz von SQL Server definiert wurden, werden die Berechtigungen für die einzelnen Objekte in der Remotedatenbank nicht durch den lokalen Server, sondern durch den Verbindungsserver bestimmt.
sp_addlinkedsrvlogin kann nicht innerhalb einer benutzerdefinierten Transaktion ausgeführt werden.
Berechtigungen
Erfordert die ALTER ANY LOGIN-Berechtigung auf dem Server.
Beispiele
A. Verbinden aller lokalen Anmeldenamen mit dem Verbindungsserver mithilfe ihrer eigenen Anmeldeinformationen
Das folgende Beispiel erstellt eine Zuordnung, um sicherzustellen, dass bei allen Anmeldungen vom lokalen Server auf den Verbindungsserver Accounts die Anmeldeinformationen des jeweiligen Benutzers verwendet werden.
EXEC sp_addlinkedsrvlogin 'Accounts'
- Oder -
EXEC sp_addlinkedsrvlogin 'Accounts', 'true'
Hinweis |
---|
Falls für einzelne Anmeldenamen explizite Zuordnungen erstellt werden, haben diese Vorrang vor globalen Zuordnungen, die für diesen Verbindungsserver vorhanden sind. |
B. Verbinden eines bestimmten Anmeldenamens mit dem Verbindungsserver mithilfe anderer Anmeldeinformationen
Das folgende Beispiel erstellt eine Zuordnung, um sicherzustellen, dass die Windows-Benutzerin Domain\Mary auf den Verbindungsserver Accounts mit dem Anmeldenamen MaryP und dem Kennwort d89q3w4u zugreifen kann.
EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u'
Sicherheitshinweis |
---|
Für dieses Beispiel wird nicht die Windows-Authentifizierung verwendet. Kennwörter werden unverschlüsselt übertragen. Kennwörter sind in Datenquellendefinitionen und Skripts, die auf Datenträgern gespeichert werden, in Sicherungen und in Protokolldateien sichtbar. Verwenden Sie für diese Art von Verbindung auf keinen Fall ein Administratorkennwort. Wenden Sie sich wegen Sicherheitshinweisen speziell für Ihre Umgebung an Ihren Netzwerkadministrator. |
Siehe auch