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

Dynamic SQL query string truncated to 256 characters

我正尝试在 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 被 t运行 限制为 256 个字符。我已经按照下面文章中的说明修改了一些 SQL 服务器查询设置,但没有结果。参见:

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

能否请您指教,不确定我遗漏了什么,在我以前使用的 SQL Server 2008 中没有发生。 SQL Server 2016 中是否有其他设置?

问题是 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;