SqlString olarak tek bir uzun XML döndüren FOR XML ile bir SQL komutuna sahip olun. Sorunum uzun XML dizesini .NET C# içine okuyor.C XML dosyasından XML deyiminden büyük XML dizesi okuyun C# .NET içinde
aşağıdaki sadece ilk 2033 karakter
Ben de command.ExecuteScalar ve rdr.GetString çalıştı ve hala sadece ilk 2033 karakter olsun varSqlDataReader rdr = command.ExecuteReader();
if (rdr.HasRows)
{
rdr.Read();
Debug.WriteLine(rdr[0].ToString().Length.ToString());
}
okur. Ben türünü değiştirdim ve hala 2033'te kesiliyor, bu yüzden kötü bir karakterden kaynaklanmıyor. Rdr.GetSqlXml denedim ve SqlString SqlCachedBuffer'a bir hata iletisi alamıyor.
SQL'i 2033 karakterden daha az döndürecek şekilde sınırlandırırsam, geçerli XML'yi alırım. Bu yüzden bir XML ayrıştırma sorunu olduğunu sanmıyorum sadece bir kesme. XML ayrıştırmasına ihtiyacım yok - string olarak ihtiyacım olan TSQL ifadesinden geçerli bir XML.
Tam XML (metin olarak) nasıl okuyabilirim?
TSQL çalışır.
select top 10 docSVsys.sID, docSVsys.docID
, (select top 10 value + '; '
from docMVtext with (nolock) where docMVtext.sID = docSVsys.sID
and docMVtext.fieldID = '113'
order by value FOR XML PATH('')) as [To]
from docSVsys with (nolock)
order by docSVsys.sID
for xml auto, root('documents')
FOR XML PATH, ihtiyacım olanı ve hızlı olanı sağlar. Düzenli bir sorguyu denedim ve sonra Xdocument kullanarak XML'i oluşturdum ama performans, To'yu eklemek için sID üzerinde arama yapması gerektiğinden 100'den fazla hatta bile korkunç. Bence XML FORM FORMU'nu engellemek için bir SQL fonksiyonu olarak birleştirme fonksiyonu yazabilirim fakat FOR XML ile yapılan bu sorgu hızlıdır ve ihtiyacım olan tam sonuçları verir. Sonuç nasıl alınır?
size SQL doğru verileri döndürür emin misin yani .: Benim için iş gibi görünüyor? – gbn
Use ExecuteXmlReader: http://support.microsoft.com/kb/310378 –
Ayrıca, bu esas olarak aynıdır: http://stackoverflow.com/questions/5423980/how-do-i-return-xml-from -a-saklı yordam –