который выполняет команду для каждой базы данных:

авно присоединился к программному проекту, который имеет приблизительно 20-40 баз данных.

В каждой базе данных есть как минимум 200 хранимых процедур, некоторые из них имеют гораздо больше, поэтому я очень медленно ищу определенную процедуру вручную.

Я знаю, что есть хранимая процедура, на которую мне нужно обратить внимание, чтобы исправить ошибку,где-то во всем проекте это называетсяXYZ_procedure

Как мне выполнить эту процедуру по всем моим базам данных в SQL Server Management Studio?

Ответы на вопрос(4)

SQL Server Management Studio.

USE MASTER
GO
BEGIN TRAN

DECLARE @strt INT,@End INT,@Database NVARCHAR(50)

SELECT * INTO #T FROM Sys.databases WITH(NOLOCK) WHERE database_id>4 
ORDER BY 1

SELECT ROW_NUMBER ()OVER (ORDER BY database_Id)Db_Id,* INTO #TT FROM #T
SET @strt=1
SELECT @End=Max(Db_ID)FROM #tt

WHILE @strt<[email protected]
     BEGIN
         DECLARE @string NVARCHAR(MAX)
         SELECT @Database=NAME FROM #TT WHERE [email protected]

        Set @string='  Select '''[email protected]+'''db_Name,* from '[email protected]+'.sys.objects 
          WHERE Name=''XYZ_procedure'''

          SET @[email protected]+1
          PRINT @string
          EXEC(@string)
     END

ROLLBACK TRAN

таблицы, столбцы, триггеры) по имени - взгляните наСВОБОДНО Red-Gate инструмент называетсяПоиск SQL который делает это - он ищет всю вашу базу данных для любого вида строк.

Это отличный обязательный инструмент для любого администратора БД или разработчика базы данных - я уже говорил, что это абсолютноСВОБОДНО использовать для любого вида использования?

ени в SSMS. Вы можете сослаться на следующую ссылку:

Найти, используя настройки фильтра в обозревателе объектов

что самый простой способ - использовать недокументированную хранимую процедуру.sp_MSForeachdb который выполняет команду для каждой базы данных:

EXEC sp_MSforeachdb 
'
USE ?
IF EXISTS (
    SELECT 1 
    FROM sys.objects
    WHERE name = ''XYZ_procedure''
    )
    SELECT DB_NAME();
'

Ваш ответ на вопрос