Share via


Impostazione delle proprietà delle connessioni

Le proprietà della stringa di connessione possono essere specificate in diversi modi:

  • Come proprietà nome=valore nell'URL della connessione, quando si crea la connessione utilizzando la classe DriverManager.

  • Come proprietà nome=valore nel parametro Properties del metodo Connect della classe DriverManager.

  • Come valori nel metodo per l'impostazione appropriato dell'origine dei dati del driver. Ad esempio:

              datasource.setServerName(value)
    datasource.setDatabaseName(value)
    

Per i nomi delle proprietà non viene fatta distinzione tra maiuscole e minuscole e i nomi di proprietà duplicati vengono risolti nell'ordine seguente:

  1. Argomenti API (come utente e password)
  2. Raccolta della proprietà
  3. Ultima istanza nella stringa di connessione

Inoltre, sono consentiti valori sconosciuti per i nomi di proprietà, per cui non viene convalidata la corretta combinazione di maiuscole e minuscole.

I sinonimi sono consentiti e vengono risolti in un ordine simile a quello utilizzato per i nomi di proprietà duplicati.

Nella tabella seguente vengono elencate tutte le proprietà della stringa di connessione attualmente disponibili per il driver JDBC:

Proprietà Tipo Impostazione predefinita Descrizione

applicationName

String

[<=128 char]

null

Nome dell'applicazione o "driver JDBC per Microsoft SQL Server", se non viene fornito alcun nome. Utilizzato per identificare l'applicazione specifica nei diversi strumenti di registrazione e profiling di SQL Server.

databaseName, database

String

[<=128 char]

null

Nome del database a cui connettersi. Se non viene specificato, viene creata una connessione al database predefinito.

disableStatementPooling

boolean

["true"|"false"]

true

Attualmente è supportato solo il valore "true". Se la proprietà è impostata su "false", viene generata un'eccezione.

encrypt

boolean

["true"|"false"]

false

Impostare su "true" per specificare che in SQL Server viene utilizzata la crittografia SSL (Secure Sockets Layer) per tutti i dati inviati tra il client e il server se nel server è installato un certificato. Il valore predefinito è false.

failoverPartner

String

null

Il nome del server di failover utilizzato nella configurazione del mirroring del database. Questa proprietà viene utilizzata per un errore di connessione iniziale al server principale. La proprietà verrà ignorata una volta eseguita la connessione iniziale. Questa proprietà deve essere utilizzata insieme alla proprietà databaseName.

Nota

Il driver non supporta la specifica del numero di porta dell'istanza server per l'istanza del partner di failover nella proprietà failoverPartner della stringa di connessione. È invece supportata la specifica delle proprietà serverName, instanceName e portNumber dell'istanza del server principale e la proprietà failoverPartner dell'istanza del partner di failover nella stessa stringa di connessione.

hostNameInCertificate

String

null

Nome host da utilizzare per la convalida del certificato SSL di SQL Server.

Se la proprietà hostNameInCertificate non è specificata o è impostata su Null, il driver JDBC per Microsoft SQL Server utilizzerà il valore della proprietà serverName nell'URL di connessione come nome host per la convalida del certificato SSL di SQL Server.

Nota

Questa proprietà viene utilizzata in combinazione con le proprietà encrypt e trustServerCertificate. Questa proprietà influisce sulla convalida del certificato se e solo se la proprietà encrypt è impostata su "true" e la proprietà trustServerCertificate è impostata su "false".

instanceName

String

[<=128 char]

null

Nome dell'istanza di SQL Server a cui connettersi. Se non viene specificato, verrà creata una connessione all'istanza predefinita. Nel caso in cui vengano specificate entrambe le proprietà instanceName e port, vedere le note relative a port.

integratedSecurity

boolean

["true"|"false"]

false

Impostare la proprietà su "true" per indicare che le credenziali di Windows verranno utilizzate da SQL Server per autenticare l'utente dell'applicazione. Se impostata su "true," il driver JDBC cerca nella cache delle credenziali sul computer locale le credenziali che sono già state fornite per l'accesso al computer o alla rete. Se impostata su "false," è necessario fornire il nome utente e la password.

Nota

Questa proprietà di connessione è supportata solo nei sistemi operativi Microsoft Windows.

lastUpdateCount

boolean

["true"|"false"]

true

Con il valore "true" viene restituito solo il conteggio dell'ultimo aggiornamento da un'istruzione SQL passata al server e può essere utilizzato nelle singole istruzioni SELECT, INSERT o DELETE per ignorare ulteriori conteggi di aggiornamento causati dai trigger del server. Impostando questa proprietà su "false" verranno restituiti tutti i conteggi di aggiornamento, inclusi quelli restituiti dai trigger del server.

Nota

Questa proprietà si applica solo quando viene utilizzata con i metodi executeUpdate. Con tutti gli altri metodi execute verranno restituiti tutti i risultati e verranno aggiornati i conteggi. Questa proprietà influisce solo sui conteggi di aggiornamento restituiti dai trigger del server. Non influisce invece sui set di risultati o sugli errori risultanti in seguito all'esecuzione del trigger.

lockTimeout

int

-1

Numero di millisecondi di attesa prima che venga segnalato un timeout di blocco per il database. Il comportamento predefinito prevede un'attesa illimitata. Se specificato, questo valore diventerà l'impostazione predefinita per tutte le istruzioni sulla connessione. Si noti che è possibile utilizzare Statement.setQueryTimeout() per impostare il timeout per istruzioni specifiche. Il valore può essere 0, per indicare che l'intervallo di attesa è pari a zero.

loginTimeout

int [0..65535]

15

Numero di secondi di attesa del driver prima del timeout di una connessione non riuscita. Un valore pari a zero indica che il timeout è quello predefinito di sistema, impostato su 15 secondi. Un valore diverso da zero indica il numero di secondi di attesa del driver prima del timeout di una connessione non riuscita.

packetSize

int [-1| 0 | 512..32767]

8000

Le dimensioni del pacchetto di rete utilizzato per comunicare con SQL Server, specificate in byte. Un valore -1 indica l'utilizzo delle dimensioni del pacchetto predefinite del server. Un valore 0 indica l'utilizzo del valore massimo, ovvero 32767. Se questa proprietà è impostata su un valore che non rientra nell'intervallo valido, viene generata un'eccezione.

Nota

Non è consigliabile utilizzare la proprietà packetSize quando la crittografia è attivata (encrypt=true), altrimenti il driver potrebbe generare un errore di connessione. Per ulteriori informazioni, vedere il metodo setPacketSize della classe SQLServerDataSource.

password

String

[<=128 char]

null

Password del database.

portNumber, port

int [0..65535]

1433

Porta di attesa di SQL Server. Se nella stringa di connessione viene specificato il numero di porta, non viene creata alcuna richiesta a sqlbrowser. Se vengono specificate entrambe le proprietà port e instanceName, viene creata la connessione alla porta specificata. Tuttavia, la proprietà instanceName viene convalidata e, se non corrisponde alla proprietà port, viene generato un errore.

Nota

È consigliabile specificare sempre il numero di porta, poiché tale procedura è più sicura dell'utilizzo di sqlbrowser.

responseBuffering

String

["full"|"adaptive"]

adaptive

Se questa proprietà è impostata su "adaptive", nel buffer verrà memorizzata, quando necessario, la quantità minima di dati possibile. La modalità predefinita è "adaptive".

Se questa proprietà è impostata su "full", l'intero set di risultati verrà letto dal server quando viene eseguita un'istruzione.

Nota

Dopo aver aggiornato il driver JDBC dalla versione 1.2, il comportamento predefinito della memorizzazione nel buffer sarà di tipo adattivo. Se per l'applicazione non è mai stata impostata la proprietà "responseBuffering" e si desidera mantenere il comportamento predefinito della versione 1.2, sarà necessario impostare la proprietà indicata su "full" nelle proprietà della connessione o utilizzando il metodo setResponseBuffering dell'oggetto SQLServerStatement.

selectMethod

String

["direct"|"cursor"]

direct

Se questa proprietà è impostata su "cursor", verrà creato un cursore di database per ogni query creata sulla connessione per i cursori TYPE_FORWARD_ONLY e CONCUR_READ_ONLY. Questa proprietà è in genere necessaria solo se l'applicazione genera set di risultati molto grandi, che non possono essere completamente contenuti nella memoria client. Se la proprietà è impostata su "cursor", nella memoria client verrà mantenuto solo un numero limitato di righe del set di risultati. Il comportamento predefinito prevede che nella memoria client siano mantenute tutte le righe del set di risultati. Questo comportamento garantisce le prestazioni più veloci quando l'applicazione sta elaborando tutte le righe.

sendStringParametersAsUnicode

boolean

["true"|"false"]

true

Se la proprietà sendStringParametersAsUnicode è impostata su "true", i parametri String verranno inviati al server in formato Unicode.

Se la proprietà sendStringParametersAsUnicode è impostata su "false", i parametri String verranno inviati al server in un formato non Unicode, ad esempio ASCII/MBCS.

Il valore predefinito per la proprietà sendStringParametersAsUnicode è "true".

Nota

La proprietà sendStringParametersAsUnicode viene verificata solo quando si invia un valore di parametro con i tipi JDBC CHAR, VARCHAR o LONGVARCHAR. I nuovi metodi per caratteri nazionali di JDBC 4.0, ad esempio i metodi setNString, setNCharacterStream e setNClob delle classi SQLServerPreparedStatement e SQLServerCallableStatement, inviano sempre i valori dei parametri al server in formato Unicode indipendentemente dall'impostazione di questa proprietà. Per prestazioni ottimali con i tipi di dati JDBC CHAR, VARCHAR e LONGVARCHAR, un'applicazione deve impostare la proprietà sendStringParametersAsUnicode su "false" e utilizzare i metodi per caratteri non nazionali setString, setCharacterStream e setClob delle classi SQLServerPreparedStatement e SQLServerCallableStatement. Quando l'applicazione imposta la proprietà sendStringParametersAsUnicode su "false" e utilizza un metodo per caratteri non nazionali per accedere ai tipi di dati Unicode sul lato server, ad esempio nchar, nvarchar e ntext, è possibile che parte dei dati vada persa se le regole di confronto del database non supportano i caratteri nei parametri String passati dal metodo per caratteri non nazionali. Si noti che un'applicazione deve utilizzare i metodi per caratteri nazionali setNString, setNCharacterStream e setNClob delle classi SQLServerPreparedStatement e SQLServerCallableStatement per i tipi di dati JDBC NCHAR, NVARCHAR e LONGNVARCHAR.

sendTimeAsDatetime

boolean

["true"|"false"]

true

Questa proprietà è stata aggiunta nel driver JDBC 3.0 per SQL Server.

Se true, i valori java.sql.Time saranno inviati al server come valori datetime di SQL Server.

Se false, i valori java.sql.Time saranno inviati al server come valori time di SQL Server.

La proprietà sendTimeAsDatetime può essere modificata anche a livello di codice con SQLServerDataSource.setSendTimeAsDatetime.

Il valore predefinito di questa proprietà può essere modificato nelle versioni future.

Per ulteriori informazioni sul modo in cui il driver JDBC per SQL Server configura i valori java.sql.Time prima di inviarli al server, vedere Configurazione della modalità di invio dei valori java.sql.Time al server.

serverName, server

String

null

Computer che esegue SQL Server.

userName, user

String

[<=128 char]

null

Utente del database.

trustServerCertificate

boolean

["true"|"false"]

false

Impostare su "true" per specificare che il certificato SSL di SQL Server non viene convalidato dal driver JDBC per Microsoft SQL Server.

Se il valore è "true", il certificato SSL di SQL Server verrà automaticamente considerato attendibile quando il livello di comunicazione viene crittografato tramite SSL.

Se il valore è "false", il certificato SSL del server verrà convalidato dal driver JDBC per Microsoft SQL Server. Se la convalida del certificato del server ha esito negativo, verrà generato un errore e la connessione verrà terminata. Il valore predefinito è "false".

Nota

Questa proprietà viene utilizzata in combinazione con la proprietà encrypt. Questa proprietà influisce solo sulla convalida del certificato SSL del server, se e solo se la proprietà encrypt è impostata su "true".

trustStore

String

null

Percorso (incluso il nome file) del file trustStore del certificato. Il file trustStore contiene l'elenco di certificati considerati attendibili dal client.

Quando la proprietà non è specificata o è impostata su Null, per determinare l'archivio certificati da utilizzare vengono utilizzate le regole di ricerca della factory del responsabile di attendibilità.

Tramite l'istanza predefinita di TrustManagerFactory SunX509 viene eseguito un tentativo di individuare il materiale attendibile in base all'ordine di ricerca seguente:

  • Un file specificato dalla proprietà di sistema JVM (Java Virtual Machine) "javax.net.ssl.trustStore".
  • File "<java-home>/lib/security/jssecacerts".
  • File "<java-home>/lib/security/cacerts".

Per ulteriori informazioni, vedere la documentazione relativa all'interfaccia TrustManager SUNX509 nel sito Web Sun Microsystems.

Nota

Questa proprietà influisce solo sulla ricerca del file trustStore del certificato, se e solo se la proprietà encrypt è impostata su "true" e la proprietà trustServerCertificate è impostata su "false".

trustStorePassword

String

null

Password utilizzata per verificare l'integrità dei dati del file trustStore.

Se la proprietà trustStore è impostata ma la proprietà trustStorePassword non è impostata, l'integrità del file trustStore non viene verificata.

Quando entrambe le proprietà trustStore e trustStorePassword non sono specificate, il driver utilizza le proprietà di sistema JVM "javax.net.ssl.trustStore" e "javax.net.ssl.trustStorePassword". Se la proprietà di sistema "javax.net.ssl.trustStorePassword" non è specificata, l'integrità del file trustStore non viene verificata.

Se la proprietà trustStore non è impostata ma la proprietà trustStorePassword è impostata, il driver JDBC utilizza il file specificato da "javax.net.ssl.trustStore" come archivio di attendibilità e l'integrità dell'archivio di attendibilità viene verificata utilizzando la proprietà trustStorePassword specificata. Questo può essere necessario quando non si desidera che per l'applicazione client la password venga archiviata nella proprietà di sistema JVM.

Nota

La proprietà trustStorePassword influisce solo sulla ricerca del file trustStore del certificato, se e solo se la proprietà encrypt è impostata su "true" e la proprietà trustServerCertificate è impostata su "false".

workstationID

String

[<=128 char]

<stringa vuota>

ID della workstation. Questa proprietà viene utilizzata per identificare una workstation specifica in diversi strumenti di registrazione e profiling di SQL Server. Se non viene specificato un valore, viene utilizzata la <stringa vuota>.

xopenStates

boolean

["true"|"false"]

false

Impostare la proprietà su "true" per specificare che il driver restituisce codici di stato compatibili con XOPEN nelle eccezioni. L'impostazione predefinita prevede la restituzione di codici di stato SQL 99.

Nota

Il driver JDBC per SQL Server accetta i valori predefiniti del server per le proprietà di connessione, ad eccezione di ANSI_DEFAULTS e IMPLICIT_TRANSACTIONS. Il driver JDBC per SQL Server imposta automaticamente ANSI_DEFAULTS su ON e IMPLICIT_TRANSACTIONS su OFF.

Vedere anche

Altre risorse

Connessione a SQL Server con il driver JDBC