Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Намного удобнее использовать T-SQL для генерирования скрипта. Скрипт, приведённый ниже, сгенерирует набор инструкций T-SQL для получения количества строк в каждой таблице текущей базы данных. Просто выполните его, скопируйте результат в новое окно и запустите.
Намного удобнее использовать T-SQL для генерирования скрипта. Скрипт, приведённый ниже, сгенерирует набор инструкций T-SQL для получения количества строк в каждой таблице текущей базы данных. Просто выполните его, скопируйте результат в новое окно и запустите.
SELECT 'Select ''' + DB_NAME() + '.' + SCHEMA_NAME(SCHEMA_ID) + '.' + LEFT(o.name, 128) + ''' as DBName, count(*) as Count From ' + o.name + ';' AS ' Script generator to get counts for all tables' FROM sys.objects o WHERE o.[type] = 'U' ORDER BY o.name; GO
declare @sql nvarchar(max);
set @sql = '';
SELECT @sql = @sql + 'Select ''' + DB_NAME() + '.' + SCHEMA_NAME(SCHEMA_ID) + '.'
+ LEFT(o.name, 128) + ''' as DBName, count(*) as Count From ' + SCHEMA_NAME(SCHEMA_ID) + '.' + o.name
+ ';' + char(13) + char(10)
FROM sys.objects o
WHERE o.[type] = 'U'
ORDER BY o.name;
exec (@sql)
GOПримечание переводчика: у меня запрос не работал, добавил схему к имени таблицы.
Примечание переводчика: курсор не отработает, если у вас в списке есть базы данных с состоянием, отличным от ONLINE.
SELECT *
FROM sys.databases
WHERE Name NOT IN ( 'master', 'model', 'msdb', 'tempdb',
'distribution' )
and state_desc = 'ONLINE'
ORDER BY Name; Почему бы не сделать так:
Совершенно верно, запрос сработает только для объектов внутри схемы по-умолчанию — dbo, или внутри схемы текущего пользователя. Для других схем их имя надо указать явно. Более того, все имена объектов нужно заключать в квадратные скобки
Нужно всего лишь поправить запрос для курсора:
Ну и еще вагон и маленькая тележка замечаний к коду автора статьи
Исследуем базы данных с помощью T-SQL