Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was tun Sie in SQL Server, um CREATE OR ALTER zu erstellen?

Dieser Artikel macht einen guten Punkt über den Verlust von Berechtigungen, wenn ein Objekt in SQL Server gelöscht wird.

Hier ist also der Ansatz, der Berechtigungen behält:

IF OBJECT_ID('spCallSomething') IS NULL
    EXEC('CREATE PROCEDURE spCallSomething AS SET NOCOUNT ON;')
GO

ALTER PROCEDURE spCallSomething ... 
--instead of DROP/CREATE

Funktioniert auch für Funktionen, ersetzen Sie einfach PROCEDURE mit FUNCTION im obigen Code.

Ein weiterer Grund, dies in Betracht zu ziehen, ist die Fehlertoleranz. Angenommen, Ihr DROP ist erfolgreich, aber Ihr CREATE schlägt fehl - Sie enden mit einer kaputten DB. Wenn Sie den ALTER-Ansatz verwenden, erhalten Sie am Ende eine ältere Version des Objekts.