У нас была похожая проблема при записи клиента .Net в сторонний веб-сервис Java, .Net включал метку порядка байтов, и сервис Java выдавал исключение.
Сторонний метод SOAP взял в качестве аргумента одну строку, и эта строка была XML-документом (я люблю людей, которые не совсем понимают, какую проблему пытается решить SOAP!) По умолчанию .net добавил UTF- 8-байтная метка порядка в документе «полезная нагрузка» xml, что является строго правильным, но на практике вызывает проблемы.
В нашем случае мы нашли два возможных решения со стороны клиента (.net). Я не уверен, насколько легко это будет сделать из служб отчетов SQL.
String.Trim () - XML должен быть помещен в строку перед передачей в метод soap, вызов .Trim () убрал метку порядка байтов. Легко.
Второй метод состоял в том, чтобы установить настройки кодировки UTF в XmlWriterSettings немного по-другому, что-то вроде следующего:
XmlWriter xmlWriter = null;
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = new UTF8Encoding(false);
xmlWriter = XmlWriter.Create(xmlSteam, settings);
Важным битом является "новое кодирование UTF8 ( false );", этот аргумент - "encoderShouldEmitUTF8Identifier" и в значительной степени решает проблему.