Как Проверить, что вся хранимая процедура в порядке в SQL-сервере?

Как проверить, что вся хранимая процедура в порядке в SQL-сервере, если я отбрасываю таблицу или поля?

37
задан Cade Roux 12 June 2010 в 03:55
поделиться

2 ответа

Пара способов, которые приходят на ум

  1. Самый очевидный способ запустить процедуры
  2. , чтобы проверить зависимости в таблице, прежде чем вы отбрасываете таблицу или поле. затем проверьте эти зависимые процедуры
  3. , генерирующие сценарии для всех процедур и выполните поиск этого поля или таблицы
  4. Запросы sysobjects
2
ответ дан 27 November 2019 в 04:38
поделиться

Он не поймает все (динамический SQL или с задержкой объекты), но это может быть полезно - вызовите sp_refreshsqlmodule для всех хранимых процедур, не связанных со схемой (вы можете вызвать его раньше, чтобы убедиться, что зависимости обновлены, а затем запросить зависимости или вызвать его позже и посмотреть, не сломано ли что-нибудь):

DECLARE @template AS varchar(max)
SET @template = 'PRINT ''{OBJECT_NAME}''
EXEC sp_refreshsqlmodule ''{OBJECT_NAME}''

'

DECLARE @sql AS varchar(max)

SELECT  @sql = ISNULL(@sql, '') + REPLACE(@template, '{OBJECT_NAME}',
                                          QUOTENAME(ROUTINE_SCHEMA) + '.'
                                          + QUOTENAME(ROUTINE_NAME))
FROM    INFORMATION_SCHEMA.ROUTINES
WHERE   OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.'
                                 + QUOTENAME(ROUTINE_NAME)),
                       N'IsSchemaBound') IS NULL
        OR OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.'
                                    + QUOTENAME(ROUTINE_NAME)),
                          N'IsSchemaBound') = 0

        EXEC (
              @sql
            )
8
ответ дан 27 November 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: