我公然从这里的答案中窃取了这个:(这不是我正在寻找解决方案的唯一情况)
SELECT 'SELECT Top 10 [table] = '''
+ REPLACE(name, '''','')
+ ''', * FROM '
+ QUOTENAME(SCHEMA_NAME([schema_id]))
+ '.'
+ QUOTENAME(name)
+ ';' as SQLText
FROM sys.tables AS t
ORDER BY name;
原因是在答案中DECLARE @sql NVARCHAR(MAX)
不足以容纳所有表名,我认为我们有 120 个表(或其他),并且 SQL 文本被限制在NVARCHAR(MAX)
限制范围内。
也许在这种情况下可以EXEC sp_executesql SQLText
将它们联合起来,但是有没有办法将所有行变成一个文本并执行它呢?
存储过程的文本大小是否有限制?
请注意,我不是在寻找这个具体案例的答案,但这是我试图解决的问题类型的一个例子。
NVARCHAR(MAX)
这肯定不是限制的问题。120 个表并不多,NVARCHAR(MAX)
限制是超出此处所需的一种方式(最多 2 GB 数据),更多信息链接。我刚刚检查了这个解决方案,它对我有用(399 个表)。
如果你想
NVARCHAR(MAX)
在 SSMS 中查看 value 的全部内容(SELECT
并且PRINT
有限制),你可以这样做:正如@Dan Guzman 所建议的,更可靠的方法是: