动态SQL查询字符串被截断为256个字符

时间:2016-10-18 19:13:55

标签: sql sql-server sql-server-2016

我正在尝试在SQL Server 2016中运行动态SQL,如下所示:

 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中是否有任何其他设置?

1 个答案:

答案 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;