Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人知道执行接近300000个字符的动态SQL的方法吗SQL server 2008及以上版本_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

有人知道执行接近300000个字符的动态SQL的方法吗SQL server 2008及以上版本

有人知道执行接近300000个字符的动态SQL的方法吗SQL server 2008及以上版本,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,有人知道执行大约300000个字符的动态SQL的方法吗 后台-运行夜间进程来清理数据,并根据白天应用程序中定义的规则创建触发器。这些触发器更新多个表,此时创建它们的唯一方法是通过动态sql。有什么想法吗?这听起来像是一场维护噩梦。难道您不能创建几个更小的存储过程以在计划中运行吗?抛开这听起来有多难看,sp_executesql最多可以处理2 GB的字符串,这留下了很大的空间,因此这可能会变得更难看!这种情况并不经常发生,更像是当策略发生变化时,触发器似乎是实现类似级联更新的理想解决方案。即使我将

有人知道执行大约300000个字符的动态SQL的方法吗


后台-运行夜间进程来清理数据,并根据白天应用程序中定义的规则创建触发器。这些触发器更新多个表,此时创建它们的唯一方法是通过动态sql。有什么想法吗?

这听起来像是一场维护噩梦。难道您不能创建几个更小的存储过程以在计划中运行吗?抛开这听起来有多难看,sp_executesql最多可以处理2 GB的字符串,这留下了很大的空间,因此这可能会变得更难看!这种情况并不经常发生,更像是当策略发生变化时,触发器似乎是实现类似级联更新的理想解决方案。即使我将对象从触发器切换到存储过程,最终也会遇到相同的动态sql限制问题。您遇到了什么问题?正如安德鲁所说,这是完全可能的<代码>nvarchar(max)允许10亿个字符。由于您用于动态sql的类型,它在4000个字符时出错。基本上,您的动态sql正在转换为nvarchar(4000),可能来自
varchar(n)
nvarchar(n|max)