sp_send_dbmail вставляет разрывы строк в прикрепленный результат XML-запроса
Когда вы используете msdb.dbo.sp_send_dbmail
чтобы отправить результат запроса в виде вложения, вам необходимо предоставить @query_result_width
параметр, который является целым числом от 10 до 32767.
Теперь, если вы используете For XML Path('Row'), Root('Data'), Type
в вашем самом внешнем запросе Select вы можете получить send_dbmail для отправки xml-вложения, которое действительно легко открыть в Microsoft Excel (всего 2 или 3 клика, и это хорошая таблица Excel)
Но если ваш xml-файл превышает 32767 байт, send_dbmail вставит "разрыв строки" в 32767-й столбец первой строки xml-файла, и это НЕОБХОДИМО! Это значит, что все равно, что там написано; это просто ломает черту и, следовательно, БУДЕТ испортить ваши xml-данные... Я бродил по Интернету более 5 часов без какого-либо положительного результата о том, как я должен препятствовать sp_send_dbmail вводить этот неприятный разрыв строки. Единственное решение, с которым я столкнулся, - это ввести разрыв строки, когда у меня есть элемент управления, а это не после 32767-го столбца. Запрос, подобный следующему, добьется цели, но это дополнительная работа, а не чистая...
Select Replace(
Cast(
(
Select
*
From Table
For XML Path('Row'), Root('Data'), Type
)
As NVarChar(Max))
, N'/>', N'/><!--This is the controlled line-break. Remove this comment-->
')
У кого-нибудь есть идея получше? Я что-то здесь упускаю?
Я использую SQL Server 2008 Enterprise (x64)