Ну, это не очень красиво, но это должно сработать.
Это относится к одной базе данных, потому что я использую системное представление 'all_views' для получения данных.Я уверен, что он может быть адаптирован, если вы хотите что-то еще.
Я также ограничил количество просмотров, для которых возвращаю счет, через 'schema_id'.Вы можете посмотреть на это и определить, что будет лучше для вас.
Наконец, я просто выплюнул результаты, чтобы вы могли просмотреть их, если вы запустите это в Management Studio.Возможно, вы захотите вставить результаты в таблицу или что-то в этом роде.Если это так, то это просто вопрос изменения динамического запроса с выбора на вставку.
Так что без дополнительной информации:
SET NOCOUNT ON
DECLARE @ViewName AS nVarChar(128)
, @Query AS nVarChar(500)
/* Declare Cursor */
DECLARE Cur_Views CURSOR
FOR
SELECT name
FROM [sys].[all_views] x
WHERE x.schema_id = 1
-- Loop through the views.
OPEN Cur_Views
-- Fetch the first view
FETCH NEXT FROM Cur_Views
INTO @ViewName
WHILE @@Fetch_Status = 0 BEGIN
-- Set up our dynamic sql
SELECT @Query = 'SELECT COUNT(*) AS [Count] FROM ' + @ViewName
-- Print the query we're executing for debugging purposes
-- PRINT @Query
-- Execute the dynamic query
EXECUTE(@Query)
-- Fetch subsequent views
FETCH NEXT FROM Cur_Views
INTO @ViewName
-- Loop back to the beginning
END -- WHILE @@Fetch_Status = 0 BEGIN
-- Close the cursor
CLOSE Cur_Views
-- Dispose of the cursor
DEALLOCATE Cur_Views
GO