sql >> Databáze >  >> RDS >> Sqlserver

Obnovení metadat o uživatelských funkcích t-SQL

odpověď gbn je nejlepší - ale když máte SCHEMABINDING, často vám to zabrání provést základní změny, aniž byste nejprve odstranili SCHEMABINDING a poté jej nahradili při opětovném vytváření modulu. Pokud váš objekt odkazuje na objekty mimo databázi, nemůžete použít SCHEMABINDING.

Pokud je tato obtížnost tak velká, že nechcete nebo nemůžete použít SCHEMABINDING, použijte sp_refreshsqlmodule v nějakém pravidelném procesu, který spustíte, abyste zkontrolovali chyby v modulech SQL, než se skutečně použijí (lze jej spustit na libovolném pohledu, který není schema, UDF, uloženém procesu atd.), je váš přítel.

Obě techniky můžete použít společně – nemůžete (a není to nutné) spouštět sp_refreshsqlmodule proti objektům schemabound.

např. jej můžete spustit pouze na těchto modulech:

SELECT *
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
                )


  1. Pl/SQL- Získejte názvy sloupců z dotazu

  2. Sledování možností kurzoru

  3. C#/Oracle:Zadat kódování/sadu znaků dotazu?

  4. null vs prázdný řetězec v Oracle