Как вы просматриваете ВСЕ текст из NTEXT или NVARCHAR (max) в SQL Server Management Studio? По умолчанию он возвращает только несколько сотен символов (255?), Но иногда мне просто нужен быстрый способ просмотра всего поля, без необходимости писать программу для этого. Даже SSMS 2012 все еще имеет эту проблему: (
Как вы просматриваете ВСЕ текст из ntext или nvarchar (max) в SSMS?
Ответ 1
Параметры (Результаты запроса /SQL Server/Страница результатов в сетке)
Чтобы изменить параметры текущих запросов, нажмите "Параметры запроса" в меню "Запрос" или щелкните правой кнопкой мыши в окне "Запрос SQL Server" и выберите "Параметры запроса".
...
Максимальное количество получаемых символов
Введите число от 1 до 65535, чтобы указать максимальное количество символов, которое будет отображаться в каждой ячейке.
Максимум, как видите, 64к. По умолчанию намного меньше.
Кстати, результаты для текста имеют еще более серьезные ограничения:
Максимальное количество символов, отображаемых в каждом столбце
По умолчанию это значение равно 256. Увеличьте это значение, чтобы отображать большие наборы результатов без усечения. Максимальное значение 8192.
Ответ 2
Я смог получить полный текст (99,208 символов) из столбца NVARCHAR (MAX), выбрав (Results To Grid) только этот столбец, а затем щелкнул правой кнопкой мыши по нему, а затем сохранил результат как файл CSV. Забавно, когда я пытался запустить тот же запрос, но с включенным результатом для файла, результат был усечен с использованием предела Results to Text.
Обход, который @MartinSmith, описанный как комментарий к (в настоящее время) принятому ответу, не работал у меня (получил ошибку при попытке просмотреть полный результат XML, жалующийся на "Символ" [ ", шестнадцатеричное значение 0x5B, не может быть включен в имя" ).
Ответ 3
Быстрый trick-
SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629
Ответ 4
Я написал надстройку для SSMS, и эта проблема исправлена там. Вы можете использовать один из двух способов:
вы можете использовать "Копировать текущую ячейку 1:1" для копирования исходных данных ячейки в буфер обмена:
http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks
Или, альтернативно, вы можете открыть содержимое ячеек в редакторе внешнего текста (блокнот ++ или блокнот) с помощью функции "Ящики визуализации": http://www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers
(функция позволяет открывать содержимое поля в любом внешнем приложении, поэтому, если вы знаете, что это текст, вы используете текстовый редактор, чтобы открыть его. Если содержимое представляет собой двоичные данные с изображением - вы выбираете представление как изображение. открытие изображения):
Ответ 5
Вернуть данные в формате XML
SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'
Убедитесь, что вы установили разумное ограничение в окне параметров SSMS в зависимости от ожидаемого результата.
Это будет работать, если возвращаемый текст не содержит некодированных символов, таких как &
вместо &
, что приведет к сбою преобразования XML.
Возврат данных с помощью PowerShell
Для этого вам понадобится модуль PowerShell SQL Server, установленный на компьютере, на котором вы будете выполнять команду.
Если все настроено, настройте и запустите следующий скрипт:
Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"
Убедитесь, что для параметра -MaxCharLength
установлено значение, соответствующее вашим потребностям.
Ответ 6
Альтернатива 1: щелкните правой кнопкой мыши, чтобы скопировать ячейку и вставьте в текстовый редактор (надеюсь, с поддержкой utf-8)
Альтернатива 2: щелкните правой кнопкой мыши и экспортируйте в файл CSV
Альтернатива 3: используйте функцию SUBSTRING для визуализации частей столбца. Пример:
SELECT SUBSTRING (fileXml, 2200,200) ИЗ mytable WHERE id = 123456
Ответ 7
Самый простой способ быстро просмотреть большой столбец varchar/text:
declare @t varchar(max)
select @t = long_column from table
print @t
Ответ 8
Если вы выберете "результаты для сетки", вы получите усеченный дисплей над своим большим значением. Но если вы скопируете это значение из сетки (или перетащите его), оно скопирует полное значение.