Oprava: Se může zobrazit chybová zpráva při načítání ovladače SQL Server 2000 pro JDBC a ovladače SQL Server 2005 pro JDBC ve stejné aplikaci, zkuste se připojit k databázi SQL Server 2005 a potom spustit dotaz

Překlady článku Překlady článku
ID článku: 915834 - Produkty, které se vztahují k tomuto článku.
Chyba #: 2059 (PSSWebData)
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Předpokládejme následující situaci. Načíst ovladač 2000 Microsoft SQL Server pro JDBC v aplikaci. Potom načíst ovladač JDBC 2005 Microsoft SQL Server ve stejné aplikaci. V tomto scénáři při pokusu o připojení k databázi SQL Server 2005 pomocí adresy SQL Server 2005 JDBC ovladač URL, připojení pomocí ovladače 2000 Microsoft SQL Server pro JDBC. Pokud následně spustit dotaz, zobrazí se následující chybová zpráva:
[Microsoft][SQLServer 2000 ovladač pro JDBC][SQLServer]Příchozí tabulková data datový proud (TDS) vzdálené volání procedury proudu protokol (RPC) je nesprávná. Parametr 1 (""): typ dat 0x38 neznámý.
Navázat připojení k databázi SQL Server 2000 může není žádné chybová zpráva a fakt, že je používán nesprávný ovladač může být unnoticed. K tomuto problému dochází při načtení ovladače SQL Server 2000 pro JDBC před načtením ovladače JDBC Microsoft SQL Server 2005 v aplikaci.

Příčina

K tomuto problému dochází, protože vadný překladu dochází v ovladači SQL Server 2000 JDBC. Ovladač SQL Server 2000 JDBC přijímá připojení URL z JDBC ovladače SQL Server 2005. Ovladače SQL Server 2005 JDBC připojení řetězec URL začínají následující řetězec:
JDBC:SQLServer: / / ConnectionString
Ovladače SQL Server 2000 pro JDBC měli přijmout pouze řetězec URL připojení, které začínají následujícím řetězcem:
JDBC:Microsoft:SQLServer: / / ConnectionString
Ovladače SQL Server 2000 pro JDBC však také přijímá připojení, které mají následující formát:
JDBC:SQLServer: / / ConnectionString
Výjimka dochází, protože ovladače SQL Server 2000 pro JDBC není určen k připojení k databázi SQL Server 2005.

Řešení

Společnost Microsoft má nyní k dispozici podporovanou opravu hotfix, která je určena pouze k odstranění problému popsaného v tomto článku. Použijte ji pouze v systémech, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může být dále testována. Proto pokud není použití tento problém, doporučujeme počkat další ovladače SQL Server 2000 aktualizaci service Pack pro JDBC, který obsahuje tuto opravu hotfix.

Potřebujete-li odstranit tento problém okamžitě, obraťte se na služby podpory společnosti Microsoft, kde můžete tuto opravu hotfix získat. Úplný seznam telefonních čísel služeb technické podpory společnosti Microsoft a informace o cenách technické podpory naleznete na tomto webu společnosti Microsoft:
http://support.microsoft.com/contactus/?ws=support
Poznámka: Poplatky, které je třeba obvykle zaplatit za telefonní hovory, mohou být stornovány, jestliže pracovník technické podpory společnosti Microsoft zjistí, že oznámený problém lze vyřešit konkrétní aktualizací. Další dotazy a žádosti o odbornou pomoc, které se netýkají této zvláštní opravy, podléhají běžným sazbám za poskytnutí odborné pomoci.

INFORMACE O SOUBORECH

Anglická verze této opravy hotfix má následující (nebo pozdější) atributy souborů. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v položce Datum a čas v ovládacím.
Zmenšit tuto tabulkuRozšířit tuto tabulku
Název souboruVelikost souboruDatumČas
Msbase.jar289,71303.02.0623: 02
Mssqlserver.jar67,48303.02.0623: 02
Msutil.jar56,53703.02.0623: 02

Jak potíže obejít

Chcete-li tento problém vyřešit, postupujte takto:
  1. Načíst ovladače SQL Server 2005 pro JDBC před načtením ovladače SQL Server 2000 pro JDBC. Pomocí třídy DriverManager jako v následující kód například.
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 version
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 version
    
  2. Použít SQL Server 2005 Driver pro URL JDBC připojení navázat připojení. Pomocí kódu, která se podobá následující příklad kódu. con
    Connection con = DriverManager.getConnection("jdbc:sqlserver://<ServerName>;user=<UserName>;password=<Password>");
Další informace o připojení zdroje dat a použití URL připojení na webech Microsoft Developer Network (MSDN):
Vytváření URL připojení
http://msdn2.microsoft.com/en-us/library/ms378428.aspx

Nastavení vlastností připojení
http://msdn2.microsoft.com/en-us/library/ms378988.aspx

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Další informace

Postup reprodukce problému

Kompilace a spusťte následující Java ukázkový kód. import java.sql.*
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());
               }

	}

	}
Poznámka použití Tato ukázka kódu nahraďte následující zástupné symboly:
  • Nahradit <Server> s názvem instance SQL Server.
  • Nahradit <DatabaseName> s názvem databáze.
  • Nahradit <UserId> s ID uživatele.
  • Nahradit <PassWd> s heslem.

Odkazy

Další informace o JDBC klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
313100Jak začít s Microsoft JDBC
Produkty třetích stran, o nichž se hovoří v tomto článku, jsou vyráběny společnostmi nezávislými na společnosti Microsoft. Společnost Microsoft neposkytuje žádnou záruku (implicitně předpokládanou ani jinou) týkající se výkonu a spolehlivosti těchto produktů.

Vlastnosti

ID článku: 915834 - Poslední aktualizace: 19. července 2006 - Revize: 1.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Driver for JDBC
Klíčová slova: 
kbmt kbhotfixserver kbqfe kbfix KB915834 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:915834
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com