View_Definition в INFORMATION_SCHEMA.VIEWS ограничено 4000 символов
Я создаю резервную копию всех своих представлений, выполняя этот запрос и сохраняя результаты в таблице:
select
TABLE_CATALOG as DBName
, TABLE_NAME as ViewName
, VIEW_DEFINITION as ViewDef
, datalength(VIEW_DEFINITION) as [Length]
, GETDATE() as ImportDate
from INFORMATION_SCHEMA.VIEWS
order by DBName, ViewName
Но тип данных для столбца VIEW_DEFINITION установлен в nvarchar(4000), и некоторые из моих представлений намного длиннее, поэтому они усекаются.
Столбцы в INFORMATION_SCHEMA.VIEWS
Могу ли я как-то изменить тип данных столбца VIEW_DEFINITION на varchar(max)?
1 ответ
Решение
Поскольку INFORMATION_SCHEMA.VIEWS - это представление, которое вы можете запустить EXEC sp_helptext 'information_schema.views'
чтобы узнать определение. Это возвращает
CREATE VIEW INFORMATION_SCHEMA.VIEWS
AS
SELECT DB_NAME() AS TABLE_CATALOG ,
SCHEMA_NAME(schema_id) AS TABLE_SCHEMA ,
name AS TABLE_NAME ,
CONVERT(NVARCHAR(4000), OBJECT_DEFINITION(object_id)) AS VIEW_DEFINITION ,
CONVERT(VARCHAR(7) ,
CASE with_check_option
WHEN 1 THEN 'CASCADE'
ELSE 'NONE'
END) AS CHECK_OPTION ,
'NO' AS IS_UPDATABLE
FROM sys.views;
Оттуда просто отредактируйте, чтобы получить то, что вам нужно, что
SELECT
DB_NAME() AS DBName,
name AS ViewName,
OBJECT_DEFINITION(object_id) AS ViewDef,
LEN(OBJECT_DEFINITION(object_id)) AS [Length],
GETDATE() AS ImportDate
FROM
sys.views