2014-11-10 5 views
0

몇 가지 테이블 (MSSQL)을 XML 파일로 변환하려고합니다. 결과는 2.7MB (끝나기 2KB)에서 잘립니다.mssql 쿼리, non xml 데이터 크기 설정

vs express (SQL> 실행 설정> 쿼리 옵션 ...> resutls> 그리드> "비 xml 데이터"및 "xml 데이터")에서 "비 xml 데이터"크기 및 "xml 데이터") 그러면 정확한 결과를 얻을 수 있습니다.

쿼리가 정상적으로 작동합니다.

문제가 발생했습니다. 쿼리 윈도우가 아닌 프로그램 (C#)에서만 필요합니다.

나는 executexmlreader를 사용합니다.

누군가 이상한 점이 있습니다. 무엇이 잘못 될 수 있습니까?

 SqlConnection testConnection = new SqlConnection(); 
     testConnection.ConnectionString = @"Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;"; 
     testConnection.Open(); 

     TestCommand = new SqlCommand("exec prAdvListToXML", testConnection); 

     XmlReader TestXmlReader = TestCommand.ExecuteXmlReader(); 
     XmlWriter TestFileWriter = XmlWriter.Create(@"C:\temp\output.xml"); 
     TestFileWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-16'"); 

     TestFileWriter.WriteNode(TestXmlReader, true); 

답변

1

귀하의 문제는 XML과 전혀 관련이 없습니다 (확실히 Management Studio의 동작은 빨간색 청어입니다). 작가를 어디에서나 닫지 않으며 모든 데이터가 처리되었는지 확인하지 마십시오. 리소스가 올바르게 처리되도록 코드를 다시 작성하십시오.

using (var testConnection = new SqlConnection()) { 
    testConnection.ConnectionString = @"Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;"; 
    testConnection.Open(); 
    using (var testCommand = new SqlCommand("exec prAdvListToXML", testConnection)) 
    using (XmlReader testXmlReader = testCommand.ExecuteXmlReader()) 
    using (XmlWriter testFileWriter = XmlWriter.Create(@"C:\temp\output.xml")) { 
     testFileWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-16'"); 
     testFileWriter.WriteNode(testXmlReader, true); 
    } 
}