Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il formato generale dell'URL della connessione è
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
Dove:
jdbc:sqlserver:// (obbligatorio) è noto come sottoprotocollo ed è costante.
serverName (facoltativo) indica l'indirizzo del server a cui viene eseguita la connessione. Può trattarsi di un indirizzo DNS o IP oppure di
localhosto127.0.0.1per il computer locale. Se non viene specificato nell'URL della connessione, il nome del server deve essere specificato nella raccolta delle proprietà.instanceName (facoltativo) indica l'istanza a cui viene eseguita la connessione su
serverName. Se non specificato, il driver si connette all'istanza predefinita.portNumber (facoltativo) indica la porta a cui viene eseguita la connessione su
serverName. Il valore predefinito è1433. Se si usa la porta predefinita, non è necessario specificare nell'URL né la porta né il carattere:che la precede.Nota
Per prestazioni ottimali della connessione, impostare il parametro
portNumberquando ci si connette a un'istanza denominata. In questo modo si evita un round trip al server per determinare il numero di porta. Se si usa sia unportNumberche uninstanceName, ilportNumberha la precedenza e ilinstanceNameviene ignorato.property (facoltativo) indica una o più proprietà della connessione. Per altre informazioni, vedere Impostazione delle proprietà di connessione. È possibile specificare qualsiasi proprietà presente nell'elenco. Le proprietà, tuttavia, possono essere delimitate solo usando il carattere di punto e virgola (
;) e non possono essere duplicate.
Attenzione
Per garantire maggiore sicurezza, si consiglia di evitare di costruire l'URL della connessione sulla base dei dati inseriti dall'utente. Nell'URL dovrebbero essere specificati solo il nome del server e il driver. Per i valori relativi a nome utente e password, utilizzare le raccolte delle proprietà della connessione. Per altre informazioni sulla sicurezza nelle applicazioni JDBC, vedere Protezione delle applicazioni del driver JDBC.
Proprietà di connessione
Per un elenco dettagliato delle proprietà che è possibile impostare nella stringa di connessione, vedere Impostazione delle proprietà di connessione.
Esempi di connessioni
Connessione al database predefinito sul computer locale utilizzando un nome utente e la password:
jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=<password>;
Nota
Sebbene nell'esempio precedente siano stati utilizzati un nome utente e una password nella stringa di connessione, è consigliabile utilizzare la sicurezza integrata per garantire maggiore protezione. Per altre informazioni, vedere la sezione Connessione con l'autenticazione integrata più avanti in questo articolo.
La stringa di connessione seguente illustra come connettersi a un database di SQL Server tramite l'autenticazione integrata e Kerberos da un'applicazione in esecuzione in qualsiasi sistema operativo supportato da Microsoft JDBC Driver per SQL Server:
jdbc:sqlserver://;servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos
Connessione al database predefinito sul computer locale utilizzando l'autenticazione integrata:
jdbc:sqlserver://localhost;encrypt=true;integratedSecurity=true;Connessione a un database denominato su un server remoto:
jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;Connessione alla porta predefinita su un server remoto:
jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;Connessione specificando un nome di applicazione personalizzato:
jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;
Istanze denominate e multiple di SQL Server
SQL Server consente l'installazione di più istanze di database per server. Ogni istanza ha un nome specifico. Per stabilire la connessione a un'istanza denominata di SQL Server, è possibile specificare il numero di porta di tale istanza (metodo preferito). È anche possibile specificare il nome dell'istanza come proprietà URL JDBC o come proprietà datasource. Se non si specifica un nome di istanza o una proprietà numero di porta, il driver crea una connessione all'istanza predefinita. Vedere gli esempi seguenti:
Per specificare un numero di porta, usare il formato seguente:
jdbc:sqlserver://localhost:1433;encrypt=true;integratedSecurity=true;<more properties as required>;Per usare una proprietà dell'URL JDBC, usare il formato seguente:
jdbc:sqlserver://localhost;encrypt=true;instanceName=instance1;integratedSecurity=true;<more properties as required>;
Escape dei valori nell'URL della connessione
Potrebbe essere necessario utilizzare una sequenza di escape per certe parti dei valori dell'URL di connessione se questi includono caratteri speciali come spazi, punti e virgola e virgolette. Il driver JDBC supporta l'escape di questi caratteri racchiudendoli tra parentesi graffe. Ad esempio, {;} esegue l'escape di un punto e virgola.
Prima della versione 8.4 i valori a cui è applicata una sequenza di escape possono contenere caratteri speciali (in particolare =, ;, [] e lo spazio) ma non parentesi graffe. I valori che devono essere inclusi in una sequenza di escape e contengono parentesi graffe devono essere aggiunti a una raccolta di proprietà.
Nella versione 8.4 e in quelle successive, i valori con escape possono contenere caratteri speciali, inclusi le parentesi graffe. Tuttavia, alle parentesi graffe chiuse è necessario applicare una sequenza di escape. Se, ad esempio, una password è pass";{}word, la stringa di connessione deve fare l'escape della password come segue:
jdbc:sqlserver://localhost;encrypt=true;username=MyUsername;password={pass";{}}word};
Nota
Lo spazio all'interno delle parentesi graffe è letterale e non viene eliminato.
Connessione con autenticazione integrata su Windows
Il driver JDBC supporta l'utilizzo dell'autenticazione integrata di tipo 2 nei sistemi operativi Windows tramite la proprietà della stringa di connessione integratedSecurity. Per usare l'autenticazione integrata, copiare il mssql-jdbc_auth-<version>-<arch>.dll file in qualsiasi directory inclusa nella variabile di ambiente di sistema PATH Windows.
Nota
La DLL non deve trovarsi nella stessa directory del file JAR del driver JDBC. Deve trovarsi solo in una directory elencata nel sistema PATH, ad esempio C:\Windows\System32 o in una directory personalizzata aggiunta a PATH.
I file mssql-jdbc_auth-<version>-<arch>.dll vengono installati nel percorso seguente:
<installation directory>\sqljdbc_<version>\<language>\auth\
Per i sistemi operativi supportati da Microsoft JDBC Driver per SQL Server, vedere Uso dell'autenticazione integrata Kerberos per la connessione a SQL Server per una descrizione di una funzionalità aggiunta in Microsoft JDBC Driver 4.0 per SQL Server che consente a un'applicazione di connettersi a un database tramite l'autenticazione integrata con Kerberos di tipo 4.
Nota
Se si esegue una macchina virtuale Java (JVM) a 32 bit, usare il mssql-jdbc_auth-<version>-<arch>.dll file nella cartella x86, anche se il sistema operativo è la versione x64. Se si esegue una JVM a 64 bit in un processore x64, usare il mssql-jdbc_auth-<version>-<arch>.dll file nella cartella x64.
In alternativa, è possibile impostare la proprietà di sistema java.library.path per specificare la directory di mssql-jdbc_auth-<version>-<arch>.dll. Ad esempio, se è stato installato il driver JDBC nella directory predefinita, è possibile specificare il percorso della DLL usando l'argomento macchina virtuale (VM) seguente all'avvio dell'applicazione Java:
-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x86
Connessione con indirizzi IPv6
Il driver JDBC supporta l'utilizzo di indirizzi IPv6 con la raccolta delle proprietà di connessione e con la proprietà della stringa di connessione serverName. Il valore serverName iniziale, quale jdbc:sqlserver://serverName, non è supportato nelle stringhe di connessione per gli indirizzi IPv6. L'uso di un nome per serverName (anziché dell'indirizzo IPv6 non elaborato) nella connessione garantirà il funzionamento corretto in ogni caso. Di seguito sono riportati alcuni esempi.
Per usare la proprietà serverName:
jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;encrypt=true;integratedSecurity=true;Per usare la raccolta di proprietà:
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);