Düzeltme:, Bir hata iletisi, SQL Server 2000 sürücüsü JDBC ve SQL Server 2005 sürücü JDBC için aynı uygulamada yüklemek, bir SQL Server 2005 veritabanına bağlanmaya ve ardından bir sorgu çalıştırmalısınız alabilirsiniz

Makale çevirileri Makale çevirileri
Makale numarası: 915834 - Bu makalenin geçerli olduğu ürünleri görün.
Hata #: 2059 (PSSWebData)
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Şu senaryoyu inceleyin. Bir uygulamada JDBC için SQL Server 2000 sürücüsü yüklenemedi. Sonra aynı uygulama Microsoft SQL Server 2005 JDBC sürücüsü yüklenemedi. SQL Server 2005 JDBC sürücüsü URL'YI kullanarak bir SQL Server 2005 veritabanına bağlanmaya çalıştığınızda bu senaryoda, JDBC için SQL Server 2000 sürücüsü kullanarak bağlantı kurulur. Daha sonra bir sorguyu çalıştırırsanız, aşağıdaki hata iletisini alırsınız:
[Microsoft][JDBC için SQL Server 2000 sürücüsü][SQLServer]Gelen sekmeli veri (TDS) uzaktan yordam çağrısı (RPC) iletişim kuralının akışı yanlış akış. Parametre 1 (""): 0x38 veri türü bilinmiyor.
Bir SQL Server 2000 veritabanına bağlanın, herhangi bir hata iletisi alabilirsiniz ve unnoticed gerçeğini yanlış sürücü kullanılıyor olabilir. JDBC için SQL Server 2000 sürücüsü, Microsoft SQL Server 2005 JDBC sürücüsü uygulamada yüklenmeden önce yüklenir, bu sorunu yaşarsınız.

Neden

Bu sorun SQL Server 2000 JDBC sürücüsü hatalı bir ad çözümlemesi gerçekleşir nedeniyle oluşur. SQL Server 2000 JDBC sürücüsü, SQL Server 2005 JDBC sürücüsünden bağlantı URL'lerinin kabul eder. SQL Server 2005 JDBC sürücüsü bağlantı dizesi URL'leri aşağıdaki dize ile başlatın:
JDBC:SQLServer: / / ConnectionString
JDBC için SQL Server 2000 sürücüsü, yalnızca aşağıdaki dizesiyle başlayan bir bağlantı dizesi URL'ler kabul etmelidir:
JDBC:Microsoft:SQLServer: / / ConnectionString
Ancak, JDBC için SQL Server 2000 sürücüsü de aşağıdaki biçime sahip olan bağlantıları kabul eder:
JDBC:SQLServer: / / ConnectionString
JDBC için SQL Server 2000 sürücüsü, bir SQL Server 2005 veritabanına bağlanmak için tasarlanmamıştır özel durum oluşur.

Çözüm

Desteklenen bir düzeltme Microsoft'tan edinilebilir, ancak yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Düzeltmeyi yalnızca bu sorunla karşılaşan sistemlere uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi olarak sonraki SQL Server 2000 sürücüsü için bu düzeltmeyi içeren bir JDBC hizmet paketini beklemeniz önerilir.

Bu sorunu hemen çözmek için, düzeltmeyi edinmek üzere Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

DOSYA BİLGİLERİ

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve saat öğesinde saat dilimi sekmesini kullanın.
Bu tabloyu kapaBu tabloyu aç
Dosya AdıDosya BoyutuTARİHSAAT
Msbase.jar289,71303-Şub-200623: 02
Mssqlserver.jar67,48303-Şub-200623: 02
Msutil.jar56,53703-Şub-200623: 02

Pratik Çözüm

Bu soruna geçici bir çözüm için aşağıdaki adımları izleyin:
  1. JDBC için SQL Server 2000 sürücüyü yüklemek için önce JDBC için SQL Server 2005 sürücü yüklenemedi. Bunu yapmak için <a0></a0>, DriverManager sınıfı gibi aşağıdaki kod örneği. kullanın
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 version
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 version
    
  2. SQL Server 2005 sürücüsü JDBC bağlantı URL'SI için bağlantı kurmak için kullanın. Bunu yapmak için <a0></a0>, aşağıdaki kod örneği benzer bir kod kullanın.
    Connection con = DriverManager.getConnection("jdbc:sqlserver://<ServerName>;user=<UserName>;password=<Password>");
Veri kaynakları ile bağlanma ve bağlantıyı bir URL kullanmak hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:
URL bağlantısı oluşturma
http://msdn2.microsoft.com/en-us/library/ms378428.aspx

Bağlantı özelliklerini ayarlama
http://msdn2.microsoft.com/en-us/library/ms378988.aspx

Durum

Microsoft bu durumun, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi

Sorunu Yeniden Oluşturma Adımları

Derleme ve sonra Çalıştır'ı aşağıdaki Java örnek kodu. alma 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());
               }

	}

	}
Not bu kod örneği kullanmak için aşağıdaki yertutucuları değiştirin:
  • <a1>Replace</a1> <Server> SQL örneğinin adı Server.
  • <a1>Replace</a1> <DatabaseName> veritabanının adı.
  • <a1>Replace</a1> <UserId> kullanıcı KIMLIğINIZI ile
  • <a1>Replace</a1> <PassWd> parolanız ile.

Referanslar

JDBC hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
313100Microsoft JDBC ile başlama
Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft bu ürünlerin performans veya güvenilirliğiyle ilgili hiçbir garanti vermemektedir.

Özellikler

Makale numarası: 915834 - Last Review: 19 Temmuz 2006 Çarşamba - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Driver for JDBC
Anahtar Kelimeler: 
kbmt kbhotfixserver kbqfe kbfix KB915834 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:915834
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

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