Al momento sei offline in attesa che la connessione Internet venga ristabilita

Il tuo browser non è supportato

Devi aggiornare il browser per usare il sito.

Esegui l'aggiornamento all'ultima versione di Internet Explorer

FIX: Possibile che venga visualizzato un messaggio di errore quando si carica il driver di SQL Server 2000 per JDBC e driver SQL Server 2005 per JDBC nella stessa applicazione, si tenta di connettersi a un database di SQL Server 2005 e quindi si esegue una query

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 915834
Dichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Bug #: 2059 (PSSWebData)
Sintomi
Si consideri lo scenario seguente. È possibile caricare il driver di Microsoft SQL Server 2000 per JDBC in un'applicazione. Quindi, è necessario caricare il driver JDBC di Microsoft SQL Server 2005 nella stessa applicazione. In questo scenario, quando si tenta di connettersi a un database di SQL Server 2005 utilizzando un URL di driver JDBC di SQL Server 2005, la connessione viene stabilita con Microsoft SQL Server 2000 driver per JDBC. Se successivamente si esegue una query, è visualizzato il seguente messaggio di errore:
[Microsoft][SQL Server 2000 driver per JDBC][SQL Server]I dati tabulari in arrivo flusso (TDS, Tabular Data Stream) remote procedure call (RPC) flusso del protocollo non è corretto. Parametro 1 (""): tipo di dati 0x38 è sconosciuto.
Se si stabilisce una connessione a un database di SQL Server 2000, potresti non ricevere alcun messaggio di errore e il fatto che viene utilizzato il driver errato potrebbe essere inosservato. Questo problema si verifica quando SQL Server 2000 driver per JDBC viene caricato prima di caricare il driver JDBC di Microsoft SQL Server 2005 nell'applicazione.
Cause
Questo problema si verifica poiché la risoluzione dei nomi difettoso viene eseguita nel driver JDBC di SQL Server 2000. Il driver JDBC di SQL Server 2000 accetta URL di connessione dal driver JDBC di SQL Server 2005. Il driver JDBC di SQL Server 2005 gli URL di stringa di connessione iniziano con la seguente stringa:
JDBC:SQLServer: / / ConnectionString
SQL Server 2000 driver per JDBC deve accettare solo gli URL di stringa di connessione che iniziano con la seguente stringa:
JDBC:Microsoft:SQLServer: / / ConnectionString
Tuttavia, SQL Server 2000 driver per JDBC accetta anche le connessioni che avere il seguente formato:
JDBC:SQLServer: / / ConnectionString
L'eccezione si verifica perché SQL Server 2000 driver per JDBC non è progettato per connettersi a un database SQL Server 2005.
Risoluzione
Un hotfix supportato è disponibile da Microsoft, tuttavia è destinato esclusivamente per risolvere il problema descritto in questo articolo. Utilizzarla solo nei sistemi in cui si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Pertanto, se non si è notevolmente interessati da questo problema, si consiglia di attendere per il driver successiva di SQL Server 2000 per JDBC service pack contenente questo aggiornamento rapido (hotfix).

Per risolvere immediatamente questo problema, contattare il servizio supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del servizio supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft: Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverà il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

Informazioni sui file

La versione di lingua inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e le ore per questi file sono indicati in UTC (Coordinated Universal Time). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello data e ora nel Pannello di controllo.
Nome del fileDimensione del fileDataOra
Msbase.jar289,71303-Febbraio 200623: 02
Mssqlserver.jar67,48303-Febbraio 200623: 02
Msutil.jar56,53703-Febbraio 200623: 02
Workaround
Per aggirare questo problema, attenersi alla seguente procedura:
  1. Prima di caricare il driver di SQL Server 2000 per JDBC, caricare il driver di SQL Server 2005 per JDBC. Per effettuare questa operazione, utilizzare la classe DriverManager come nel seguente codice di esempio.
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 versionClass.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 version
  2. Utilizzare SQL Server 2005 driver per JDBC URL di connessione per stabilire una connessione. A tale scopo, utilizzare codice simile a nell'esempio di codice riportato di seguito.
    Connection con = DriverManager.getConnection("jdbc:sqlserver://<ServerName>;user=<UserName>;password=<Password>");
Per ulteriori informazioni su come connettersi a origini dati e come utilizzare un URL di connessione, visitare i seguenti siti Web MSDN (informazioni in lingua inglese):
Creazione di URL di connessione
http://msdn2.microsoft.com/en-us/library/ms378428.aspx

Impostazione delle proprietà di connessione
http://msdn2.microsoft.com/en-us/library/ms378988.aspx
Status
Microsoft ha confermato che questo un bug nei prodotti sono elencati nella sezione "Si applica a".
Informazioni

Procedura per riprodurre il problema

Compilazione e quindi eseguire il Java seguente codice di esempio.
import java.sql.*;public class TestDriver {  public static void main(String[] args) throws Exception       	{       	Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");       	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");	Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://<Server>;DatabaseName=<DatabaseName>", "<UserId>","<Passwd>");	DatabaseMetaData dbmd = conn.getMetaData();	System.out.println("Driver = " + dbmd.getDriverName() + "_" + dbmd.getDriverVersion());	conn = DriverManager.getConnection("jdbc:sqlserver://<Server>;DatabaseName=<DatabaseName>", "<UserId>","<Passwd>");	dbmd = conn.getMetaData();	System.out.println("Driver = " + dbmd.getDriverName() + "_" + dbmd.getDriverVersion());	displayVersions(conn);	}	public static void displayVersions(Connection conn)       	{               Statement s3 = null;               ResultSet rr = null;               try               {                       s3 = conn.createStatement();                       System.out.println("\nStart trying to retreive data\n");                       rr = s3.executeQuery("select @@version");                       boolean OK = rr.next();                       if (OK)                               System.out.println("The current version of Microsoft SQL Server is: " + rr.getString(1));                       else                               System.out.println("result set NO ROWS!");               }               catch (Exception ex)               {                       System.out.println("Caught error in displayAnyData:\n\t" + ex.getMessage());               }               try               {                       if (rr != null) rr.close();                       if (s3 != null) s3.close();                       System.out.println("End trying to retreive data\n");               }               catch (Exception ee)               {                       System.out.println("Error closing rr or s3 in displayData: " + ee.getMessage());               }	}	}
Nota per utilizzare questo esempio di codice, sostituire i segnaposto seguenti:
  • Sostituire <Server> con il nome dell'istanza di SQL Server.
  • Sostituire <DatabaseName> con il nome del database.
  • Sostituire <UserId> con l'ID utente.
  • Sostituire <PassWd> con la password.
Riferimenti
Per ulteriori informazioni su JDBC, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
313100Per iniziare con JDBC di Microsoft
I prodotti di terze parti che in questo articolo viene descritto sono forniti da produttori indipendenti. Microsoft non rilascia alcuna garanzia, implicita o di altra natura, relativa alle prestazioni o all'affidabilità di questi prodotti.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 915834 - Ultima revisione: 07/19/2006 21:11:15 - Revisione: 1.0

  • Microsoft SQL Server 2000 Driver for JDBC
  • kbmt kbhotfixserver kbqfe kbfix KB915834 KbMtit
Feedback
('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");