While working with the Results to Text option in SSMS, you may come across a situation where the output from dynamically generated data is truncated. In this article I will guide you on how to fix this issue and print all the text for the Results to Text option.
SQL Server Management Studio supports query execution results to be displayed in three different ways:
Results to Grid
Results to Text
Results to File
Results to Gridis the default format for SSMS. but in this tip we will use the Results To Text format.
Results to Text format is very useful for the below scenarios:
Generating and Printing Dynamic Data
Reading Long Text data without having to scroll
Dragging Text from the Results to a Query window
Selecting a particular string from the result
To get started, we will first change the default Results To Grid format to Results to Text using the below steps.
Step 1 In SQL Server Management Studio, under the Tools menu, click Options as shown in the image below:
Step 2 In the Options dialog box, expand Query Results, expand SQL Server and then select General as shown in the image below. In the right side panel choose Results To Text option from the Default destination for results drop down list.
Click OK to save the changes as shown in the image below. The changes will go into effect once you open a New Query window.
Another way to change the Results to text option is go to View > Toolbars > select SQL Editor (If not selected). Then select the below highlighted button to enable Results To Text option. You can also use the shortcut CTRL+T.
Example of Results to Text Option
In the below query I am generating the output query for the log-shipping monitor, but it is not showing the full output. You can see that the output command that I am dynamically generating is getting cut off. The reason for this is that the default Results to Text option's maximum number of characters displayed is set to 256 characters. That's why the rest of the text output is truncated.
To prevent truncation of the output for the Results to Text option, you have to change the Maximum number of characters displayed in each column option to 8192 as shown below.
Changing the Setting From The Tools Menu
In the Options dialog box of Tools Menu, expand Query Results, expand SQL Server and then select Results to Text as shown in the image below. In the right side panel change the value of Maximum number of characters displayed in each column to 8192. Click OK to save the changes as shown in the image below. The changes will go into effect once you open a new query window.
Changing the Setting From The Query Menu
Changing the Maximum Number of characters displayed in each column from the Query menu will give you advantage of setting the maximum characters for the current query window only. The Query menu only appear in SSMS if you have a Query window open and the window is active. If you have selected the Object Explorer Pane or other options, the Querymenu will not appear.
To change the max characters setting for the Results to Text options using the Query menu, first you have to click on the Query window, click on Query menu and go to Query Options... as shown below.
In the Query Options... window click on Result > Text and change the Maximum Number of characters displayed in each column to 8192.
Getting the Full Output
Executing the query again will show the full output without truncation.
Check the Maximum number of characters setting when running queries that generate dynamic output
Once you have the output displayed in the Results pane, you can simplify drag the text to a query window
Try the other SSMS results options as well
Last Update: 11/8/2012
About the author
Jugal has 8+ years of extensive SQL Server experience and has worked on SQL Server 2000, 2005, 2008 and 2008 R2.
nice article bro. can you explain me the reasons why do we actually have to change the execution results to 'Results to Text' from the default 'Results to Grid'. i know only one reason for it. it is only because of memory issue since Results to Grid consumes more memory. can you give me any other reasons why we have to change the Execution results from default value?
Wednesday, November 14, 2012 - 10:44:21 AM - Jugal
Siva, results to text maintains line breaks and tabs (e.g., CHAR(10) or CHAR(9))
Sam, to print results to text with more than 8192 characters, I typically do results to grid but cast it as XML (beware of any potential <> characters in the results...).The below example should return 10,000 lines when casting as xml, but if you don't cast to xml and just do results to text you won't get all the data.
I believe this method has a cap on it as well but I've never reached it.
DECLARE @text NVARCHAR(MAX);
SET @text = ( SELECT CHAR(10) + CAST(A.[number] AS NVARCHAR(MAX)) FROM (SELECT TOP 100 [number] FROM master..spt_values) A CROSS JOIN (SELECT TOP 100 [number] FROM master..spt_values) B ORDER BY A.[number] FOR XML PATH('') );
SELECT CAST(@text AS XML);
Saturday, November 17, 2012 - 2:36:22 PM - Deron S Dilger
When I need to output column values for text outputs larger than the 8192 character limit I use "output to text file." But I do believe this still introduces a carriage-return+linefeed (aka CrLf) into the data at the same point. I then manually clean those with a regex in my text editor.