2016-10-18 65 views
2

我试图在SQL Server 2016年,这样的运行动态SQL:动态SQL查询字符串截断为256个字符

declare @SQL varchar(MAX); 

set @SQL='SELECT top 1 * INTO Table 1 FROM 
OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', etc... (string aprox. 450 char) 

EXECUTE sp_executesql @SQL; 

出于某种原因,该变量@SQL被截断为256个字符。我已经按照下面的文章中的说明操作并修改了一些SQL Server查询设置但没有结果。请参阅:

https://www.mssqltips.com/sqlservertip/2795/prevent-truncation-of-dynamically-generated-results-in-sql-server-management-studio/

能否请您指教,不知道我错过了什么,它并没有在SQL Server 2008,我以前用过发生。 SQL Server 2016中是否有其他设置?

+2

'sp_executesql'使用'nvarchar',你应该申报'@ sql'因为如此,也'SET @sql = N'....' – Lamak

+0

谢谢,这是解决方案!我如何标记正确答案? –

回答

0

的问题是sp_executesql使用nvarchar,所以你应该申报@sql因为如此,也SET @sql = N'....

DECLARE @SQL nvarchar(MAX); 

SET @SQL = N'SELECT top 1 * INTO Table 1 FROM 
OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', etc... ' 

EXECUTE sp_executesql @SQL;