Denne artikel gør en god pointe om at miste tilladelser, når et objekt droppes i SQL-serveren.
Så her er fremgangsmåden, der bevarer tilladelser:
IF OBJECT_ID('spCallSomething') IS NULL
EXEC('CREATE PROCEDURE spCallSomething AS SET NOCOUNT ON;')
GO
ALTER PROCEDURE spCallSomething ...
--instead of DROP/CREATE
Fungerer også for funktioner, bare udskift PROCEDURE
med FUNCTION
i ovenstående kode.
En anden grund til at overveje at gøre det på denne måde er tolerance over for fiasko. Antag, at din DROP lykkes, men din CREATE mislykkes - du ender med en ødelagt DB. Ved at bruge ALTER-tilgangen vil du ende med en ældre version af objektet.