Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Que faites-vous dans SQL Server pour CRÉER OU MODIFIER ?

Cet article met l'accent sur la perte d'autorisations lors de la suppression d'un objet dans le serveur SQL.

Voici donc l'approche qui conserve les autorisations :

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

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

Fonctionne également pour les fonctions, il suffit de remplacer PROCEDURE avec FUNCTION dans le code ci-dessus.

Une autre raison d'envisager de le faire de cette façon est la tolérance à l'échec. Supposons que votre DROP réussisse, mais que votre CREATE échoue - vous vous retrouvez avec une base de données cassée. En utilisant l'approche ALTER, vous vous retrouverez avec une ancienne version de l'objet.