sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué haces en SQL Server para CREAR O ALTERAR?

Este artículo destaca la pérdida de permisos al soltar un objeto en el servidor SQL.

Así que aquí está el enfoque que retiene los permisos:

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

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

También funciona para funciones, simplemente reemplace PROCEDURE con FUNCTION en el código anterior.

Otra razón para considerar hacerlo de esta manera es la tolerancia al fracaso. Suponga que su DROP tiene éxito, pero su CREATE falla:termina con una base de datos rota. Usando el enfoque ALTER, terminará con una versión anterior del objeto.