Je dois écrire un script de déploiement qui fonctionnera si une procédure stockée existe ou n'existe pas. c'est-à-dire que s'il existe, je dois le modifier, sinon le créer.
Comment puis-je faire cela dans le SQL.
J'utilise SQL Server 2005
Je dois écrire un script de déploiement qui fonctionnera si une procédure stockée existe ou n'existe pas. c'est-à-dire que s'il existe, je dois le modifier, sinon le créer.
Comment puis-je faire cela dans le SQL.
J'utilise SQL Server 2005
Si vous abandonnez et créez la procédure, vous perdrez les paramètres de sécurité. Cela pourrait gêner votre administrateur de base de données ou casser votre application.
Ce que je fais est de créer une procédure stockée triviale si elle n'existe pas encore. Après cela, vous pouvez modifier la procédure stockée à votre convenance.
IF object_id('YourSp') IS NULL
EXEC ('create procedure dbo.YourSp as select 1')
GO
ALTER PROCEDURE dbo.YourSp
AS
...
De cette façon, les paramètres de sécurité, les commentaires et les autres méta-données survivront au déploiement.
Le moyen le plus propre est de tester son existence, de le supprimer s'il existe, puis de le recréer. Vous ne pouvez pas incorporer une instruction "create proc" dans une instruction IF. Cela devrait faire l'affaire:
IF OBJECT_ID('MySproc', 'P') IS NOT NULL
DROP PROC MySproc
GO
CREATE PROC MySproc
AS
BEGIN
...
END
Si vous ne traitez que des procédures stockées, la solution la plus simple consiste probablement à abandonner le processus, puis à le recréer. Pour ce faire, vous pouvez générer tout le code à l'aide de l'assistant de génération de scripts dans SQL Server.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[YourSproc]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[YourSproc]
CREATE PROCEDURE YourSproc...
En plus de ce qui a déjà été dit, je tiens à ajouter une approche différente et préconisent l'utilisation de la différence de script de déploiement de la stratégie. Au lieu de faire avec un état de script qui vérifie toujours l'état actuel et les actes fondés sur celui de l'état, de déployer via une série de apatrides scripts de mise à niveau de bien-les versions connues. J'ai utilisé cette stratégie et elle est payante grand temps que mes scripts de déploiement sont maintenant tous les "SI", gratuit.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.