Makale numarası: 310378 - Son Gözden Geçirme: 13 Mart 2006 Pazartesi - Gözden geçirme: 2.1

SqlDataReader nesnesini kullandığınızda, XML veri satırı 2,033 karakter kesiliyor

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanına başvurulmaktadır:
  • System.Data.SqlClient

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Genişletilebilir Biçimlendirme Dili (XML) veri SqlDataReader nesnesini kullanarak SQL Server'dan okuduğunuzda, ilk sütundaki ilk satırın XML 2,033 karakter kesildi. Tüm içeriğini tek bir satır ve sütun içerdiği için XML verilerinin bekler.

Neden

XML almak için 2,033 karakterden daha büyük, SQL Server XML içinde birden çok satır her 2,033 karakter verir, bu davranış oluşur.

Çözüm

Bu sorunu gidermek için <a0></a0>, sorguları IÇIN XML okumaya ExecuteXmlReader yöntemini kullanın. FOR SQL Server XML sorgularla ExecuteXmlReader kullanma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
316016  (http://support.microsoft.com/kb/316016/ ) Visual Basic. NET'te SqlCommand sınıfının ExecuteXmlReader yöntemini nasıl kullanılır
316701  (http://support.microsoft.com/kb/316701/ ) Visual C# .NET ile SqlCommand sınıfının ExecuteXmlReader yöntemini nasıl kullanılır
307224  (http://support.microsoft.com/kb/307224/ ) XML'DE nasıl bağlı ve ADO.NET uygulamaları bağlantısı kesildi.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Sorunu Yeniden Oluşturma Adımları

  1. Yeni bir Visual Basic konsol uygulaması oluşturun. Varsayılan olarak, Module1.vb eklenir.
  2. Aşağıdaki kodu Module Module1 bildirimi yukarıda modülünün en üstüne ekleyin:
    Imports System
    Imports System.Data.SqlClient
    					
  3. Module1 Sub Main yordamına aşağıdaki kodu yapıştırın:
       Dim strSQL As String = "SELECT * FROM Orders FOR XML AUTO, ELEMENTS"
       Dim sbXML As New System.Text.StringBuilder()
    
       Dim dr As SqlDataReader
       Dim cn As New SqlConnection("data source=SqlServerName;user id=login;password=password;initial catalog=Northwind;")
       Dim cmd As New SqlCommand(strSQL, cn)
    
       cn.Open()
       dr = cmd.ExecuteReader
    
       'Read the first Row
       dr.Read()
       'Get the first Column (index 0)
       sbXML.Append(dr.GetString(0))
    
       'Uncomment the following lines to retrieve all of the results
       'Do While dr.Read()
       '    sbXML.Append(dr.GetString(0))
       'Loop
    
       Console.WriteLine("Number of characters retrieved: " + sbXML.Length.ToString)
       Console.ReadLine()
    
       dr.Close()
       cn.Close()
    					
  4. Gerçek oturum açma bilgilerinizi kullanarak SQL Server çalıştıran bir bilgisayara bağlanmak için yukarıdaki kod örneğini kod aşağıdaki satırı değiştirin:
       Dim cn As New SqlConnection("data source=SqlServerName;user id=login;password=password;initial catalog=Northwind;")
    					
  5. Oluşturmak ve proje çalıştırmak için F5 tuşuna basın.

    "Alınan karakter sayısı: 2033" konsol penceresinde, yalnızca ilk 2,033 karakterler XML içeriği döndürülmedi gösteren görüntülenir.

    Konsol penceresi kapatıp geliştirme ortamına dönmek için ENTER tuşuna basın.
  6. Aşağıdaki karakterlerin tümünü almak için kod satırlarını uncomment:
    'Do While dr.Read()
    '    sbXML.Append(dr.GetString(0))
    'Loop
    					
  7. Yeniden ve proje çalıştırmak için F5 tuşuna basın.

    Tüm XML içeriğini, konsol penceresinde görüntülenen sayı ile gösterildiği gibi alınır.
  8. Konsol penceresi kapatıp geliştirme ortamına dönmek için ENTER'E basın.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET (included with the .NET Framework)
Anahtar Kelimeler: 
kbmt kbtshoot kbdatabase kbprb KB310378 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:310378  (http://support.microsoft.com/kb/310378/en-us/ )
Retired KB ArticleKullanı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.