Sicherheit für Verbindungsserver

Im Verlauf der Verbindung mit einem Verbindungsserver (z. B. beim Verarbeiten einer verteilten Abfrage) stellt der sendende Server einen Benutzernamen und ein Kennwort bereit, um eine Verbindung mit dem empfangenden Server in dessen Auftrag aufzubauen. Damit diese Verbindung funktioniert, müssen Sie mithilfe der gespeicherten Prozeduren von SQL Server eine Anmeldenamenzuordnung zwischen den Verbindungsservern erstellen.

Anmeldenamenzuordnungen für Verbindungsserver können mithilfe von sp_addlinkedsrvlogin hinzugefügt und mithilfe von sp_droplinkedsrvlogin entfernt werden. Eine Anmeldenamenzuordnung für Verbindungsserver erstellt einen Remoteanmeldenamen und ein Remotekennwort für einen angegebenen Verbindungsserver und einen lokalen Anmeldenamen. Wenn SQL Server eine Verbindung mit einem Verbindungsserver herstellt, um eine verteilte Abfrage oder eine gespeicherte Prozedur auszuführen, sucht SQL Server nach Anmeldenamenzuordnungen für den aktuellen Benutzernamen, der die Abfrage der Prozedur ausführt. Ist eine solche Anmeldenamenzuordnung vorhanden, sendet SQL Server beim Herstellen der Verbindung mit dem Verbindungsserver den entsprechenden Remoteanmeldenamen und das Remotekennwort.

Es wurde z. B. eine Zuordnung für einen Verbindungsserver S1 für einen lokalen Anmeldenamen U1 zu einem Remoteanmeldenamen U2 mithilfe des Remotekennworts 8r4li034j7$ eingerichtet. Wenn der lokale Anmeldename U1 eine verteilte Abfrage ausführt, die auf eine auf dem Verbindungsserver S1 gespeicherte Tabelle zugreift, werden U2 und 8r4li034j7$ als Benutzer-ID und Kennwort übergeben, wenn SQL Server eine Verbindung mit dem Verbindungsserver S1 herstellt.

Die Standardzuordnung für eine Verbindungsserverkonfiguration besteht darin, die aktuellen Sicherheitsanmeldeinformationen des Benutzernamens zu emulieren. Diese Art der Zuordnung wird als Selbstzuordnung bezeichnet. Wird ein Verbindungsserver mithilfe von sp_addlinkedserver hinzugefügt, wird für alle lokalen Anmeldenamen eine standardmäßige Selbstzuordnung hinzugefügt. Wenn die Delegierung von Sicherheitskonten zur Verfügung steht und der Verbindungsserver Windows-Authentifizierung unterstützt, wird die Selbstzuordnung für Anmeldungen über die Windows-Authentifizierung unterstützt.

HinweisHinweis

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

Wenn die Delegierung von Sicherheitskonten auf dem Client oder dem sendenden Server nicht verfügbar ist oder wenn der Verbindungsserver/Anbieter den Windows-Authentifizierungsmodus nicht erkennt, wird die Selbstzuordnung für Anmeldungen nicht unterstützt, die Windows-Authentifizierung verwenden. Deshalb müssen Sie eine lokale Anmeldenamenzuordnung zwischen einem Benutzernamen, der Windows-Authentifizierung verwendet, und einem bestimmten Benutzernamen auf dem Verbindungsserver einrichten, der kein Windows-authentifizierter Benutzername ist. In diesem Fall verwendet die Remoteanmeldung SQL Server-Authentifizierung, wenn der Verbindungsserver eine Instanz von SQL Server ist.

Verteilte Abfragen unterliegen den Berechtigungen, die der Verbindungsserver dem Remoteanmeldenamen für die Remotetabelle erteilt. SQL Server führt jedoch zur Kompilierungszeit keine Berechtigungsüberprüfungen aus. Verletzungen der Berechtigungen werden während der Ausführungszeit der Abfrage erkannt und vom Anbieter gemeldet.

HinweisHinweis

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.

Testen von Verbindungsservern

Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Verbindungsserver, und klicken Sie dann auf Verbindung testen.