Artigo: 310378 - Última revisão: segunda-feira, 13 de Março de 2006 - Revisão: 2.1

A linha de dados XML é truncada 2,033 caracteres quando utiliza o objecto SqlDataReader

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo faz referência à seguinte espaço de nomes Microsoft .NET Framework Class Library:
  • System.data.SqlClient

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Quando ler dados de XML (Extensible Markup Language) do Microsoft SQL Server utilizando o objecto SqlDataReader , o XML na primeira coluna da primeira linha é truncado 2,033 caracteres. Pensa que todo o conteúdo dos dados XML contidas numa única linha e coluna.

Causa

Este comportamento ocorre porque, para resultados XML superior 2,033 caracteres de comprimento, SQL Server devolve o XML de várias linhas de 2,033 caracteres.

Resolução

Para resolver este problema, utilize o método ExecuteXmlReader para ler XML FOR consultas. Para obter informações adicionais sobre como utilizar ExecuteXmlReader com consultas de SQL Server para XML, clique os números de artigo existente abaixo para visualizar os artigos na base de dados de conhecimento da Microsoft:
316016  (http://support.microsoft.com/kb/316016/ ) Como utilizar o método ExecuteXmlReader da classe SqlCommand no Visual Basic .NET
316701  (http://support.microsoft.com/kb/316701/ ) Como utilizar o método ExecuteXmlReader da classe SqlCommand no Visual C# .NET
307224  (http://support.microsoft.com/kb/307224/ ) Como utilizar XML no ligado e desligado ADO.NET aplicações

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Passos para reproduzir o problema

  1. Crie uma nova aplicação de consola do Visual Basic. Module1.VB é adicionado por predefinição.
  2. Adicione o seguinte código no início do módulo acima a declaração de Módulo Module1 :
    Imports System
    Imports System.Data.SqlClient
    					
  3. Cole o seguinte código no procedimento Sub Main do Module1:
       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. Modificar a seguinte linha de código no anterior exemplo de código para ligar o computador com o SQL Server utilizando as informações de início de sessão real:
       Dim cn As New SqlConnection("data source=SqlServerName;user id=login;password=password;initial catalog=Northwind;")
    					
  5. Prima F5 para compilar e executar o projecto.

    "Número de caracteres obtidos: 2033" é apresentada na consola de janela, que indica que apenas os 2,033 primeiro caracteres o conteúdo de XML devolveu.

    Prima a tecla ENTER para fechar a janela da consola e regressar ao ambiente de desenvolvimento.
  6. As seguintes linhas de código para obter todos os caracteres uncomment:
    'Do While dr.Read()
    '    sbXML.Append(dr.GetString(0))
    'Loop
    					
  7. Prima F5 para reconstruir e execute o projecto.

    Todo o conteúdo XML são obtidos, como demonstrado pelo número apresentado na janela da consola.
  8. Prima ENTER para fechar a janela de consola e regressar ao ambiente de desenvolvimento.

A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET (included with the .NET Framework)
Palavras-chave: 
kbmt kbtshoot kbdatabase kbprb KB310378 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 310378  (http://support.microsoft.com/kb/310378/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.