【问题标题】:Dynamic SQL query string truncated to 256 characters动态 SQL 查询字符串被截断为 256 个字符
【发布时间】:2016-10-18 19:13:54
【问题描述】:

我正在尝试在 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 中是否有任何其他设置?

【问题讨论】:

  • sp_executesql 使用nvarchar,你应该这样声明@sql,还有SET @sql = N'....
  • 谢谢,这就是解决方案!如何标记正确答案?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    相关资源
    最近更新 更多