Sicherheit für Verbindungsserver

Im Verlauf der Verbindung mit einem Verbindungsserver (z. B. beim Verarbeiten einer verteilten Abfrage) stellt der sendende Server einen Anmeldenamen 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 Systemprozeduren 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 Benutzernamenzuordnungen 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. Führt der lokale Anmeldename U1 eine verteilte Abfrage aus, 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 Anmeldenamens 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 Benutzernamenzuordnung 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 Remotebenutzernamen 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 bei Verwendung einer Tabelle auf einem Verbindungsserver die besten Abfragepläne zu erstellen, muss der Abfrageprozessor Datenverteilungsstatistiken vom Verbindungsserver aufweisen. Benutzer, die über eingeschränkte Berechtigungen für beliebige Tabellenspalten verfügen, haben möglicherweise nicht die erforderlichen Berechtigungen, um alle nützlichen Statistiken abzurufen. Der Abfrageplan kann daher weniger effizient und die Leistung beeinträchtigt sein. Wenn der Verbindungsserver eine Instanz von SQL Server ist, muss zum Anzeigen aller verfügbaren Statistiken der Benutzer Besitzer der Tabelle 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.