Erstellen der Verbindungs-URL
Die allgemeine Form der Verbindungs-URL lautet:
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
Hierbei gilt:
jdbc:sqlserver:// (erforderlich) – wird als Subprotokoll bezeichnet und ist konstant.
serverName (optional) – stellt die Adresse des Servers dar, zu dem eine Verbindung hergestellt werden soll. Dabei kann es sich um eine DNS- oder IP-Adresse oder um
localhost
oder127.0.0.1
für den lokalen Computer handeln. Wenn der Servername nicht in der Verbindungs-URL angegeben wird, muss er in der properties-Auflistung angegeben werden.instanceName (optional) – bezeichnet die Instanz, zu der auf
serverName
eine Verbindung hergestellt werden soll. Ohne Angabe wird eine Verbindung zur Standardinstanz erstellt.portNumber (optional) – bezeichnet den Port, über den auf
serverName
eine Verbindung hergestellt werden soll. Der Standardwert ist1433
. Wenn Sie den Standardport verwenden, müssen Sie weder den Port noch das vorangestellte:
in der URL angeben.Hinweis
Um eine optimale Leistung der Verbindung zu gewährleisten, sollten Sie
portNumber
festlegen, wenn Sie eine Verbindung zu einer benannten Instanz herstellen. Dadurch werden Roundtrips zum Server vermieden, um die Portnummer zu ermitteln. Wenn sowohlportNumber
als auchinstanceName
verwendet werden, hatportNumber
Vorrang undinstanceName
wird ignoriert.property (optional) – ist mindestens eine optionale Verbindungseigenschaft. Weitere Informationen zum Festlegen der Verbindungseigenschaften finden Sie unter Festlegen von Verbindungseigenschaften. Sie können eine beliebige Eigenschaft aus der Liste angeben. Mehrere Eigenschaften müssen durch ein Semikolon (
;
) getrennt werden und dürfen nicht doppelt vorkommen.
Achtung
Aus Sicherheitsgründen sollten Sie es vermeiden, die Verbindungs-URLs basierend auf Benutzereingaben zu erstellen. Sie sollten in der URL lediglich Servername und Treiber angeben. Verwenden Sie für Werte von Benutzernamen und Kennwörtern die properties-Auflistungen für Verbindungen. Weitere Informationen zur Sicherheit in Ihren JDBC-Anwendungen finden Sie unter Absichern von JDBC-Treiberanwendungen.
Verbindungseigenschaften
Eine detaillierte Liste der Eigenschaften, die in Verbindungszeichenfolgen festgelegt werden können, finden Sie unter Eigenschaften.
Verbindungsbeispiele
Herstellen einer Verbindung zur Standarddatenbank auf dem lokalen Computer mit Benutzername und Kennwort:
jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=<password>;
Hinweis
Obwohl im vorherigen Beispiel in der Verbindungszeichenfolge ein Benutzername und ein Kennwort verwendet wurden, sollten Sie aufgrund der höheren Sicherheit die integrierte Sicherheit verwenden. Weitere Informationen finden Sie im Abschnitt Herstellen einer Verbindung mit integrierter Authentifizierung weiter unten in diesem Artikel.
Anhand der folgenden Verbindungszeichenfolge wird veranschaulicht, wie Sie eine Verbindung zu einer SQL Server-Datenbank mithilfe der integrierten Authentifizierung und Kerberos über eine Anwendung herstellen, die auf einem beliebigen Betriebssystem ausgeführt wird, das vom Microsoft JDBC-Treiber für SQL Server unterstützt wird:
jdbc:sqlserver://;servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos
Herstellen einer Verbindung zur Standarddatenbank auf dem lokalen Computer mit integrierter Authentifizierung:
jdbc:sqlserver://localhost;encrypt=true;integratedSecurity=true;
Herstellen einer Verbindung zu einer benannten Datenbank auf einem Remoteserver:
jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;
Herstellen einer Verbindung zum Standardport auf dem Remoteserver:
jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;
Herstellen einer Verbindung mit Angabe eines angepassten Anwendungsnamens:
jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;
Benannte und mehrere SQL Server-Instanzen
SQL Server lässt die Installation mehrerer Datenbankinstanzen auf einem Server zu. Jede Instanz ist an einem bestimmten Namen zu erkennen. Um eine Verbindung zu einer benannten Instanz von SQL Server herzustellen, können Sie die Portnummer der benannten Instanz angeben (bevorzugte Vorgehensweise). Sie können auch den Instanznamen als JDBC-URL-Eigenschaft oder eine datasource-Eigenschaft angeben. Wenn keine Eigenschaft für Instanzname oder Portnummer angegeben wurde, wird eine Verbindung zur Standardinstanz erstellt. Hierzu folgende Beispiele:
Verwenden Sie das folgende Format, um eine Portnummer anzugeben:
jdbc:sqlserver://localhost:1433;encrypt=true;integratedSecurity=true;<more properties as required>;
Verwenden Sie das folgende Format, um eine JDBC-URL-Eigenschaft zu verwenden:
jdbc:sqlserver://localhost;encrypt=true;instanceName=instance1;integratedSecurity=true;<more properties as required>;
Maskieren von Werten in der Verbindungs-URL
Eventuell müssen Sie für bestimmte Teile von Werten der Verbindungs-URL aufgrund enthaltener Sonderzeichen wie Leerzeichen, Semikolons und Anführungszeichen Escapezeichen verwenden. Der JDBC-Treiber unterstützt die Verwendung von Escapezeichen, indem er sie in Klammern setzt. So maskiert {;}
beispielsweise ein Semikolon.
Vor Version 8.4 können mit Escapezeichen versehene Werte zwar Sonderzeichen (insbesondere =
, ;
, []
und Leerzeichen) enthalten, aber keine geschweiften Klammern. Werte, die maskiert werden müssen und geschweifte Klammern enthalten, müssen zu einer properties-Auflistung hinzugefügt werden.
In Version 8.4 und höher können mit Escapezeichen versehene Werte Sonderzeichen enthalten, einschließlich geschweifter Klammern. Schließende geschweifte Klammern müssen jedoch mit Escapezeichen versehen werden. Ein Beispiel: Bei dem Kennwort pass";{}word
müsste eine Verbindungszeichenfolge das Kennwort wie folgt mit Escapezeichen versehen:
jdbc:sqlserver://localhost;encrypt=true;username=MyUsername;password={pass";{}}word};
Hinweis
Leerräume innerhalb der Klammern sind literal und werden nicht gekürzt.
Herstellen einer Verbindung mit integrierter Authentifizierung unter Windows
Der JDBC-Treiber unterstützt über die Verbindungszeichenfolgeneigenschaft integratedSecurity
die Verwendung der integrierten Authentifizierung vom Typ 2 auf Windows-Betriebssystemen. Wenn Sie die integrierte Authentifizierung verwenden möchten, müssen Sie die Datei mssql-jdbc_auth-<version>-<arch>.dll
in ein Verzeichnis im Windows-Systempfad des Computers kopieren, auf dem der JDBC-Treiber installiert ist.
Die mssql-jdbc_auth-<version>-<arch>.dll
-Dateien werden an folgendem Speicherort installiert:
<installation directory>\sqljdbc_<version>\<language>\auth\
Unter Herstellen von Verbindungen mit SQL Server mit der integrierten Kerberos-Authentifizierung finden Sie für alle vom Microsoft JDBC-Treiber für SQL Server unterstützten Betriebssysteme eine Beschreibung einer in Microsoft JDBC-Treiber 4.0 für SQL Server eingeführten Funktion, dank derer eine Anwendung mithilfe der integrierten Kerberos-Authentifizierung Typ 4 eine Verbindung mit einer Datenbank herstellen kann.
Hinweis
Wenn Sie eine 32-Bit-JVM (Java Virtual Machine) ausführen, verwenden Sie die Datei mssql-jdbc_auth-<version>-<arch>.dll
im Ordner „x86“, auch wenn es sich bei dem Betriebssystem um die x64-Version handelt. Wenn Sie eine 64-Bit-JVM mit einem x64-Prozessor ausführen, verwenden Sie die Datei mssql-jdbc_auth-<version>-<arch>.dll
im Ordner „x64“.
Alternativ können Sie mit der java.libary.path-Systemeigenschaft das Verzeichnis von mssql-jdbc_auth-<version>-<arch>.dll
angeben. Wenn der JDBC-Treiber beispielsweise im Standardverzeichnis installiert ist, können Sie den Speicherort der DLL beim Start der Java-Anwendung mit dem folgenden VM-Argument (Virtual Machine) angeben:
-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x86
Herstellen von Verbindungen mit IPv6-Adressen
Der JDBC-Treiber unterstützt die Verwendung von IPv6-Adressen in der properties-Auflistung der Verbindung und in der Verbindungszeichenfolgeneigenschaft serverName
. Der ursprüngliche serverName
-Wert. z. B. jdbc:sqlserver://serverName
, wird in Verbindungszeichenfolgen nicht für IPv6-Adressen unterstützt. Für serverName
kann in allen Fällen anstatt einer IPv6-Adresse problemlos ein Name in der Verbindung verwendet werden. Die folgenden Beispiele enthalten weitere Informationen.
Verwenden der serverName-Eigenschaft:
jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;encrypt=true;integratedSecurity=true;
Verwenden der Eigenschaftensammlung:
Properties pro = new Properties();
pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");
Connection con = DriverManager.getConnection("jdbc:sqlserver://;encrypt=true;integratedSecurity=true;", pro);