Spouštěč nelze přidat do systémové tabulky, ale můžete vytvořit spouštěč DDL, který se spustí v příkazu ALTER PROC - příklad:
ALTER TRIGGER DDL_PROC
ON DATABASE
FOR ALTER_PROCEDURE
AS
DECLARE @data XML, @ObjectName sysname, @ParamCount int
SET @data = EVENTDATA()
SET @ObjectName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')
PRINT 'You have changed procedure: ' + @ObjectName
SELECT @ParamCount = COUNT(*) FROM sys.parameters
WHERE object_id = OBJECT_ID(@ObjectName)
RAISERROR('This procedure now has %i parameter(s)',0,0,@ParamCount)
GO
Nejsem si jistý, jak získat předchozí seznam parametrů nebo jestli je to vůbec možné – ví to někdo?
Souhlasil bych s Charlesovým návrhem, aby byly nové parametry pokud možno nepovinné – stávající kód se nezlomí a reference musíte najít pouze v případě, že musíte přidejte parametr do volání.
Skriptování databáze vypadá jako dlouhá cesta. Jednoduchý dotaz, jako je následující, by měl najít všechny odkazy na váš proc (ve vaší databázi):
SELECT so.name, so.type_desc
FROM sys.all_objects so
JOIN sys.all_sql_modules sm ON so.[object_id] = sm.[object_id]
WHERE sm.[definition] LIKE '%<proc name>%'
To je totéž, ale bude fungovat i v předchozích verzích SQL serveru:
SELECT so.name, so.type
FROM syscomments sc
JOIN sysobjects so ON sc.id = so.id
where text like '%<proc name>%'
Doufám, že to pomůže,
MDD