Загрузка данных


USE [replTransVas];
GO
SET NOCOUNT ON;

DECLARE @errors TABLE (
    viewName nvarchar(517),
    errorNumber int,
    errorMessage nvarchar(4000)
);

DECLARE @name nvarchar(517), @sql nvarchar(max);

DECLARE views_cursor CURSOR LOCAL FAST_FORWARD FOR
SELECT QUOTENAME(SCHEMA_NAME(schema_id)) + N'.' + QUOTENAME(name)
FROM sys.views
WHERE is_ms_shipped = 0;

OPEN views_cursor;
FETCH NEXT FROM views_cursor INTO @name;

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql = N'SELECT * FROM ' + @name + N';';

    BEGIN TRY
        INSERT INTO @errors
        SELECT DISTINCT @name, error_number, error_message
        FROM sys.dm_exec_describe_first_result_set(@sql, NULL, 0)
        WHERE error_number IS NOT NULL;
    END TRY
    BEGIN CATCH
        INSERT INTO @errors
        VALUES (@name, ERROR_NUMBER(), ERROR_MESSAGE());
    END CATCH;

    FETCH NEXT FROM views_cursor INTO @name;
END;

CLOSE views_cursor;
DEALLOCATE views_cursor;

SELECT DB_NAME() AS databaseName, *
FROM @errors
ORDER BY viewName;