Dit artikel maakt een goed punt over het verliezen van rechten bij het neerzetten van een object in de SQL-server.
Dus hier is de aanpak die de rechten behoudt:
IF OBJECT_ID('spCallSomething') IS NULL
EXEC('CREATE PROCEDURE spCallSomething AS SET NOCOUNT ON;')
GO
ALTER PROCEDURE spCallSomething ...
--instead of DROP/CREATE
Werkt ook voor functies, vervang gewoon PROCEDURE
met FUNCTION
in de bovenstaande code.
Een andere reden om te overwegen het op deze manier te doen, is tolerantie voor falen. Stel dat uw DROP slaagt, maar uw CREATE mislukt - u eindigt met een kapotte DB. Als u de ALTER-aanpak gebruikt, krijgt u een oudere versie van het object.