Condividi tramite


Creazione dell'URL di connessione

Scaricare il driver JDBC

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 localhost o 127.0.0.1 per 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 portNumber quando 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 un portNumber che un instanceName, il portNumber ha la precedenza e il instanceName viene 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);