Как получить полный набор результатов из SSMS

Как получить полное содержимое строк в SQL Server Management Studio?

Если вы используете "результаты для сетки", данные кодируются, поэтому такие вещи, как разрывы строк, теряются. Если вы делаете "результат в файл" или "результат в текст", текст ограничен 8192 символами.

ПРИМЕЧАНИЕ. У меня есть решение, но я использую SO для документирования этого. Если у вас есть лучший ответ, не стесняйтесь публиковать его.

Ответ 1

Я передал его в XML

select @variable_with_long_text
 as [processing-instruction(x)] FOR XML PATH 

Бит processing-instruction должен остановить его, указывая такие символы, как < - &lt;

Ответ 2

Я разработал надстройку для SSMS - "SSMSBoost" и недавно добавил функцию "Копировать ячейку 1:1" (доступную в контекстном меню Grid). Он вернет вам все данные из ячейки без каких-либо изменений и без усечения.

Ответ 3

Просто используйте по умолчанию "Результаты для сетки", затем щелкните правой кнопкой мыши на результатах сетки и выберите "Сохранить результаты как..." CSV.

Полный контент будет сохранен в файле, даже с разрывами строк. Некоторые столбцы varchar (max) имели содержание около 3 МБ, и он был сохранен ОК, а не усечен.

Ответ 4

Один из администраторов баз данных в моей компании предложил возможное решение поместить данные во временную переменную, а затем использовать функцию печати в цикле, например:

DECLARE @contents varchar(MAX)
SET @contents = ''

SELECT     @contents = @contents + Contents + CHAR(13)
FROM         dbo.tFOO
WHERE     someConition

DECLARE @tContents TABLE (id int IDENTITY, contents varchar(MAX))

WHILE @contents LIKE '%' + CHAR(13) + '%'
BEGIN
    PRINT SUBSTRING(@contents, 0, CHARINDEX(CHAR(13), @contents))

    SET @contents = SUBSTRING(@contents, CHARINDEX(CHAR(13), @contents)+1, LEN(@contents) - CHARINDEX(CHAR(13), @contents))
END