Kann eine einzelne SQL Server-Instanz mehrere Namen haben?

7

Es ist so ziemlich alles im Titel. Ich erwarte, dass die Antwort nein ist, wollte aber fragen, um sicherzugehen. Grundsätzlich kann auf eine einzelne SQL Server-Instanz mit mehreren Namen verwiesen werden. Ich weiß, dass Sie den DNS so einstellen können, dass mehrere Namen auf dieselbe IP / denselben Server aufgelöst werden. Wie würde sich dies auf die Verbindung mit SQL Server auswirken?

Tim Coker
quelle

Antworten:

7

SQL Server kümmert sich nicht um den DNS-Namen, mit dem Sie eine Verbindung herstellen, es sei denn, Sie verwenden SQL Server über SSL. Der Name der Instanz kann nur abgespielt werden, wenn Sie eine Verbindung zu einer bestimmten TCP-Portnummer herstellen.

mrdenny
quelle
1
Das ist einfach falsch. Sicher, dass die Instanz unter SQLServerManager14.msc => SQL-Native Client => Aliase abgespielt werden kann (geben Sie unbedingt die 32-Bit-Version für SSMS ein). Der Hostname kann mithilfe der Hosts-Datei (C: \ Windows \ System32 \ drivers \ etc \ hosts) oder durch Hinzufügen des Servernamens zu Ihrem internen DNS-Server abgespielt werden. Sie müssen den Alias ​​standardmäßig an den richtigen Server und Port (Instanz) 1433 weiterleiten. zB localhost \ SQLEXPRESS => localhost, 1433. Sie müssen wahrscheinlich TCP / IP in der Netzwerkkonfiguration aktivieren, damit dies funktioniert (SQLServerManager14.msc).
Dilemma
Nein, meine Antwort ist immer noch richtig. Durch das Hinzufügen von Aliasen wird der Name der Instanz nicht geändert, und wie Sie bereits betont haben, können Sie den Hostnamen nach Belieben verwenden. Dies ist das gleiche, was ich gesagt habe. Also danke, dass du mir zustimmst.
Mrdenny
Ja, der Name der Instanz wird nicht geändert, aber die installierte Instanz wird unter einem anderen Instanznamen zugänglich gemacht, als wäre es eine andere Instanz. Zum Beispiel kann ich localhost / SQLEXPRESS mit localhost aliasen und dann SSRS-Projekte zusammen mit anderen Benutzern mit SQLEXPRESS verwenden, ohne die Verbindungszeichenfolge im SSRS-Projekt ändern zu müssen. Und sie müssen es nicht jedes Mal ändern, wenn sie die neueste Version ziehen. Ein weniger störender Zusammenführungskonflikt. Dies funktioniert auch, wenn eine Verbindung von Remotecomputern hergestellt wird.
Dilemma
Ein Alias ​​kann nur auf dem Computer verwendet werden, auf dem sie erstellt wurden. Hier ist die Microsoft-Dokumentation dazu. docs.microsoft.com/en-us/sql/database-engine/configure-windows/… Das SQL Server-Verbindungsprotokoll enthält nichts, was das Speichern eines Alias ​​auf dem Server ermöglicht. Wie würde der Kunde diese Informationen erhalten? Woher würde der Kunde diese Informationen erhalten? Der Op fragte, ob der Server mit mehreren DNS-Namen verbunden werden kann. Diese Antwort lautet: Ja, SQL ist das egal. Das ist nicht gerade umstritten.
Mrdenny
Argh, Sie haben Recht, ich bin hier über Google gelandet und habe nach Möglichkeiten gesucht, den Instanznamen zu ändern. Ich habe nur den Titel gelesen, nicht die eigentliche Frage. Verdammt, meine Stimme ist gesperrt. Ich kann nicht rückgängig machen.
Dilemma
6

Der SERVER-Teil von SERVER / INSTANCE kann ein beliebiger Name sein, der in die richtige Adresse aufgelöst wird, entweder ein zusätzlicher A-Datensatz oder ein CNAME oder ein Name aus einer HOSTS-Datei.
Die einzige Warnung hier ist, dass der gefälschte Name die Kerberos-Authentifizierung unterbrechen kann. SQL mit Kerberos ist eine lustige Sache. Der SQL-Client führt eine umgekehrte DNS-Suche für die Adresse durch und verwendet dann den Namen, den er erhält, um den SPN zu erstellen, sodass er funktionieren sollte, solange die umgekehrte Suche den ursprünglichen Hostnamen des Servers erhält. Außerdem greift SQL auf NTLM zurück, sodass dies nur dann zu Problemen führt, wenn Sie aus irgendeinem Grund Kerberos benötigen, z. B. wenn Sie die Delegierung verwenden.
Sie können SQL jedoch nicht auf mehr als einen INSTANCE-Namen reagieren lassen. Sie können jedoch einen Alias ​​in der CLIENT-Konfiguration definieren.

Wenn Sie eine Verbindung zu SQL Server herstellen, wird der von Ihnen angegebene Instanzname an den SQL Browser-Dienst auf dem Server gesendet. Der Browserdienst antwortet mit dem TCP-Port, den die angeforderte Instanz überwacht. Es ist möglich, diese Portnummer entweder in der Verbindungszeichenfolge oder in einem Alias ​​anzugeben. Ich habe gerade einen Alias ​​namens NEW erstellt, der auf den mysqlserver-Port 1966 verweist, auf den eine benannte Instanz wartet. Ich konnte mich dann mit der benannten Instanz verbinden, indem ich einfach den Servernamen NEW angab.
Diese Methode weist zwei Nachteile auf. Erstens ist die Konfiguration auf jedem Client erforderlich. Ich weiß nicht, ob es eine Möglichkeit gibt, diese Konfiguration zu pushen. Die zweite ist, dass eine SQL-Instanz normalerweise einen dynamischen Port verwendet. Wenn Sie Aliase definieren möchten, müssen Sie den Server so ändern, dass er eine feste Portnummer überwacht, mit der die Clients eine Verbindung herstellen können.

pipTheGeek
quelle
4

Ich finde es einfacher, Aliase im SQL Server-Konfigurationsmanager zu erstellen, die auf denselben SQL Server verweisen.

Dee Yu
quelle
Geben Sie für Management Studio auch den Alias ​​für den nativen 32-Bit-Client ein, nicht nur für den 64-Bit-Client. SQLServerManager14.msc bzw. SQLServerManager <YOUR_VERSION> .msc.
Dilemma
1

Ich habe einen einfachen Test ausgeführt, indem ich meiner HOSTS-Datei einen Eintrag hinzugefügt habe, und es scheint, dass SQL Server den in der Verbindungszeichenfolge verwendeten Namen nicht interessiert. Ich habe immer gedacht, dass dieser Teil wichtig ist, aber es scheint, dass dies nicht der Fall ist.

In diesem Fall verbinde ich mich nicht mit einer benannten Instanz, sondern nur mit der Standardinstanz. Ich würde davon ausgehen, dass SERVER\INSTANCESie dies auch mit einer benannten Instanz tun können, solange der Server Teil der Übereinstimmungen ist. Ich habe jedoch keine benannten Instanzen zum Testen.

Tim Coker
quelle
1

Nach meiner Erfahrung können Sie dem Server viele DNS-Einträge geben, und Sie sollten nicht auf ein Problem beim Erreichen der Standard-SQL-Instanz (oder einer beliebigen Instanz) auf dem Server stoßen.

Die Instanzen selbst werden auf dem Server mit dem SQL Browser Service unterschieden, der ausgeführt werden muss, damit die genannten Instanzen angezeigt werden. Wenn nicht, ist normalerweise (99 von 100) die einzige Instanz, die angezeigt wird, wenn dieser Dienst nicht ausgeführt wird, die Standardinstanz.

Ich hoffe ich habe dir irgendwie geholfen :)

Tony Franklin
quelle