Oracleは「作成または置換」ステートメントを実行します。 SQL Serverは、Enterprise Managerからスクリプトを作成する場合、代わりに代わりに「ドロップして作成する」ことを示唆しています。ドロップと作成は、データベース管理チームが行ったすべての権限付与を捨てるため、ストアドプロシージャの権限を与えている状況では望ましくありません。開発者と管理者の間の分離を助けるためには、実際には「作成または置き換え」が必要です。私は最近何をしてきたSQLストアドプロシージャがSQLサーバーに存在しない場合は作成
はこれです:
use [myDatabase]
go
create procedure myProcedure as
begin
print 'placeholder'
end
go
alter procedure myProcedure as
begin
-- real sproc code here
end
go
これは私が欲しいものを行います。プロシージャーが存在しない場合は作成し、正しいコードで変更してください。プロシージャーが存在する場合、作成は失敗し、alterは新しいコードでコードを更新します。
ストアドプロシージャが既に存在する場合、createによって誤解を招くエラーが発生するため、管理者には別の問題が発生します。もちろん、あなたが望む結果が出たときに赤いエラーテキストが表示されるべきではないという誤解を招くことがあります。
誰かが赤いテキストを抑制する方法はありますか?私が試したことは、「CREATE/ALTER PROCEDUREは何らかの形でクエリバッチの最初の文でなければなりません」というエラーにつながります。このよう
可能な複製(http://stackoverflow.com/questions/1434160/what-do-you-do-in-sql -server-to-create-or-alter) – ruffin
私は、あなたがあなたのprocの一部としてアクセス許可をスクリプト化するならば、DropとCreateに問題はないことを指摘します。あなたがprocに対して特別な権限を持っているなら、ソースコードリポジトリに格納されているスクリプトの一部でなければなりません。そして、あなたが変更を行うために行くとき、そこにpermissionareが既にあります。 – HLGEM