Erstellen der Verbindungs-URL
Die allgemeine Form der Verbindungs-URL lautet:
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
Dabei 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 einen Localhost oder „127.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 auf „serverName“, zu der eine Verbindung hergestellt werden soll. Ohne Angabe wird eine Verbindung zur Standardinstanz erstellt.
portNumber (optional) bezeichnet den Port auf „serverName“, über den eine Verbindung hergestellt werden soll. Der Standardwert ist "1433". Wenn Sie den Standardport verwenden oder weder den Port noch den vorangestellten Doppelpunkt („:“) in der URL angeben müssen.
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 "portNumber" und "instanceName" verwendet werden, hat "portNumber" Vorrang und "instanceName" 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=*****;
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 wird durch einen bestimmten Namen gekennzeichnet. Um eine Verbindung zu einer benannten Instanz von SQL Server herzustellen, können Sie entweder die Portnummer der benannten Instanz angeben (bevorzugte Vorgehensweise) oder den Instanznamen als JDBC-URL-Eigenschaft oder 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 im folgenden Pfad installiert:
<Installationsverzeichnis>\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 serverName-Eigenschaft der Verbindungszeichenfolge. 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);