sql >> Databasteknik >  >> RDS >> Sqlserver

Uppdaterar metadata om användarfunktioner t-SQL

gbns svar är bäst - men när du har SCHEMABINDING hindrar detta dig ofta från att göra underliggande ändringar utan att först ta bort SCHEMABINDING och sedan ersätta den när du återskapar modulen. Du kan inte använda SCHEMABINDING om ditt objekt refererar till objekt utanför databasen.

Om denna svårighet är så stor att du inte vill eller kan använda SCHEMABINDING, använd sedan sp_refreshsqlmodule i någon form av vanlig process som du kör för att kontrollera dina SQL-moduler för fel innan de faktiskt används (den kan köras på valfri icke-schemabunden vy, UDF, lagrad proc, etc) är din vän.

Du kan använda båda teknikerna tillsammans - du kan inte (och det finns inget behov av att) köra sp_refreshsqlmodule mot schemabundna objekt.

t.ex. kan du bara köra det på dessa moduler:

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. ORA-01438:värde större än specificerad precision tillåter denna kolumn - Hur får jag fram vilken kolumn den syftar på?

  2. Att hitta kombinationer av specifika värden

  3. Databasmodellering:Hur kategoriserar man produkter som Amazon?

  4. Oracle PL/SQL:Skapa DML-paket online