INFORMATION_SCHEMA.VIEWS中VIEW_DEFINITION长度受限,能否修改为varchar(max)?
无法修改INFORMATION_SCHEMA.VIEWS的VIEW_DEFINITION数据类型
很遗憾,你没办法直接修改INFORMATION_SCHEMA.VIEWS里VIEW_DEFINITION列的数据类型——这个视图是SQL Server内置的系统视图,它的结构是固定的,由数据库引擎维护,普通用户没有权限去修改它的列定义。
不过别担心,有更好的替代方案来获取完整的视图定义:使用sys.sql_modules系统视图,它的definition列是nvarchar(max)类型,完全能容纳长度超过4000字符的视图定义。
你可以用下面的查询来备份所有视图的完整定义到自定义表中:
-- 创建备份表并插入完整视图定义 SELECT DB_NAME() AS TABLE_CATALOG, s.name AS TABLE_SCHEMA, o.name AS TABLE_NAME, m.definition AS VIEW_DEFINITION INTO YourViewBackupTable FROM sys.views o INNER JOIN sys.schemas s ON o.schema_id = s.schema_id INNER JOIN sys.sql_modules m ON o.object_id = m.object_id;
这个查询会把数据库名、视图所在的架构名、视图名称和完整的定义都保存到你指定的备份表里,完全不会有截断的问题。
内容的提问来源于stack exchange,提问作者user1916006
相关产品推荐
相关产品推荐

