我正在编写一些动态SQL:
DECLARE @sql NVARCHAR(MAX)
SET @sql = '...'
EXEC sp_executesql @sql
如果我从SSMS执行此操作,则查询会成功执行,因为它小于8000(精确到7787)个字符。如果我从SSIS执行此操作(使用ADO.NET连接),查询将失败,因为NVARCHAR(MAX)
等同于NVARCHAR(4000)
。
我知道这与兼容性有关 - 来自SSIS的连接需要支持的不仅仅是SQL Server。
我的解决方法有哪些选择?
答案 0 :(得分:2)
对我来说,我会这样(按照优先顺序):
在不使用动态SQL的情况下找到一种方法(这样的大型动态脚本必须是调试或更改的噩梦)......
将其中的一部分拆分为存储过程并从动态SQL中调用它们。
将其拆分为多个较小的子查询。