この記事は、SQLサーバーにオブジェクトをドロップするときにアクセス許可を失うことについての良い点を示しています。
したがって、権限を保持するアプローチは次のとおりです。
IF OBJECT_ID('spCallSomething') IS NULL
EXEC('CREATE PROCEDURE spCallSomething AS SET NOCOUNT ON;')
GO
ALTER PROCEDURE spCallSomething ...
--instead of DROP/CREATE
関数でも機能します。PROCEDURE
を置き換えるだけです。 FUNCTION
を使用 上記のコードで。
この方法でそれを行うことを検討するもう1つの理由は、障害に対する耐性です。 DROPは成功したが、CREATEは失敗したと仮定します。DBが壊れて終了します。 ALTERアプローチを使用すると、オブジェクトの古いバージョンになります。