Costruzione dell'URL della connessione
Il formato generale dell'URL della connessione è
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
dove:
jdbc:sqlserver:// (obbligatorio) è denominato sottoprotocollo ed è costante.
serverName (facoltativo) indica l'indirizzo del server a cui viene eseguita la connessione. Si tratta del valore DNS o dell'indirizzo IP oppure di localhost o 127.0.0.1 nel caso del computer locale. Se non viene specificato nell'URL della connessione, il nome del server deve essere specificato nell'insieme delle proprietà.
instanceName (facoltativo) indica l'istanza su serverName a cui viene eseguita la connessione. Se non viene specificata alcuna impostazione, la connessione viene eseguita all'istanza predefinita.
portNumber (facoltativo) indica la porta su serverName a cui viene eseguita la connessione. Il valore predefinito è 1433. Se si utilizza tale valore, non è necessario specificare nell'URL né la porta né il carattere ':' che la precede.
Nota
Per una connessione ottimale a un'istanza denominata, si consiglia di impostare un valore per portNumber. In questo modo si evita un round trip al server per determinare il numero di porta. Se si utilizzano sia portNumber che instanceName, portNumber avrà la precedenza e instanceName verrà ignorato.
property (facoltativo) indica una o più proprietà della connessione. Per ulteriori informazioni, vedere Impostazione delle proprietà delle connessioni. È possibile specificare qualsiasi proprietà presente nell'elenco. Le proprietà, tuttavia, possono essere delimitate solo utilizzando il carattere di punto e virgola (';') e non possono essere duplicate.
Avviso
Per garantire maggiore protezione, 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 gli insiemi delle proprietà della connessione. Per ulteriori informazioni sulla protezione delle applicazioni JDBC, vedere Protezione delle applicazioni del driver JDBC.
Esempi di connessioni
Connessione al database predefinito sul computer locale utilizzando un nome utente e la password:
jdbc:sqlserver://localhost;user=MyUserName;password=*****;
Nota
Sebbene nell'esempio precedente sia stato utilizzato un nome utente e la password nella stringa di connessione, se l'applicazione viene eseguita su un sistema operativo Windows, è consigliabile utilizzare la protezione integrata che garantisce una maggiore sicurezza. Per ulteriori informazioni, vedere la sezione Connessione con l'autenticazione integrata più avanti in questo argomento.
Connessione al database predefinito sul computer locale utilizzando l'autenticazione integrata:
jdbc:sqlserver://localhost;integratedSecurity=true;
Connessione a un database denominato su un server remoto:
jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;
Connessione alla porta predefinita su un server remoto:
jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;integratedSecurity=true;
Connessione specificando un nome di applicazione personalizzato:
jdbc:sqlserver://localhost;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. Ciascuna istanza è definita in base a un nome specifico. Per eseguire la connessione a un'istanza denominata di SQL Server, è possibile specificare il numero di porta di tale istanza (metodo preferito) oppure specificare il nome dell'istanza come proprietà dell'URL di JDBC o proprietà datasource. Se non viene specificato né il nome né il numero della porta, viene creata una connessione all'istanza predefinita. Di seguito sono riportati alcuni esempi:
Per utilizzare un numero di porta, procedere come segue:
jdbc:sqlserver://localhost:1433;integratedSecurity=true;<more properties as required>;
Per utilizzare una proprietà URL di JDBC, procedere come segue:
jdbc:sqlserver://localhost;instanceName=instance1;integratedSecurity=true;<more properties as required>;
Utilizzo della sequenza di escape dei valori nell'URL della connessione
Se nell'URL della connessione vengono utilizzati caratteri speciali, quali spazi, punti e virgola, virgolette, è necessario includere alcune parti dell'URL in una sequenza di escape. L'impostazione di una sequenza di escape per tali caratteri è supportata nel driver JDBC se tali caratteri sono racchiusi tra parentesi graffe. Ad esempio con {;} il carattere di punto e virgola è incluso in una sequenza di escape.
I valori inclusi in una sequenza di escape possono contenere caratteri speciali (in particolare '=', ';', '[]' e lo spazio) ma non parentesi graffe. I valori che contengono parentesi graffe e che devono essere inclusi in una sequenza di escape devono essere aggiunti a un insieme di proprietà.
Nota
Lo spazio all'interno delle parentesi graffe è letterale e non viene eliminato.
Connessione con l'autenticazione integrata
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 utilizzare l'autenticazione integrata, copiare il file sqljdbc_auth.dll in una directory nel percorso di sistema di Windows nel computer in cui è installato il driver JDBC.
I file sqljdbc_auth.dll sono installati nel seguente percorso:
<directory di installazione>\sqljdbc_<versione>\<lingua>\auth\
Nota
Se si sta eseguendo Java Virtual Machine (JVM) a 32 bit, utilizzare il file sqljdbc_auth.dll nella cartella x86, anche se la versione del sistema operativo è x64. Se si sta eseguendo JVM a 64 bit in un processore x64, utilizzare il file sqljdbc_auth.dll nella cartella x64. Se si sta eseguendo JVM a 64 bit in un processore Itanium, utilizzare il file sqljdbc_auth.dll nella cartella IA-64.
In alternativa è possibile impostare la proprietà di sistema java.libary.path in modo da specificare la directory di sqljdbc_auth.dll. Ad esempio, se il driver JDBC è installato nella directory predefinita, specificare il percorso della DLL utilizzando il seguente argomento della VM (Virtual Machine) quando l'applicazione Java viene avviata:
-Djava.library.path=C:\Microsoft SQL Server JDBC Driver\sqljdbc_<version>\enu\auth\x86
Nota
Il driver JDBC non supporta l'utilizzo dell'autenticazione integrata quando viene eseguito in sistemi operativi non Windows. Il driver non offre inoltre alcuna funzionalità per la specifica delle credenziali di autenticazione di Windows, ad esempio nome utente e password, quando si esegue la connessione a SQL Server da sistemi operativi non Windows. In tali casi, le applicazioni devono utilizzare l'autenticazione di SQL Server.
Connessione con indirizzi IPv6
Il driver JDBC supporta l'utilizzo di indirizzi IPv6 con l'insieme delle proprietà della connessione e con la proprietà serverName della stringa di connessione. Il valore serverName iniziale, quale jdbc:sqlserver://serverName, non è supportato nelle stringhe di connessione per gli indirizzi IPv6. L'utilizzo 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.
Utilizzo della proprietà serverName
jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;integratedSecurity=true;
Utilizzo dell'insieme 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://;integratedSecurity=true;", pro);