2017-08-27 8 views
0

SSISパッケージにETLプロセスの一部として切り捨てテーブルを実行するいくつかのデータフローを作成しました。サービスアカウントを使用するように構成されたSQLジョブを介してパッケージを実行しています。SSISのTruncateテーブルの最小限のアクセス

私は当初、そのテーブルのサービスアカウントにALTER権限を与えていましたが、DBAは、Alterを使用できず、切り捨てを行うためにサービスアカウントに最小限の権限を割り当てる必要があると言っています。

たとえば、

use CoreReferenceStaging 
GRANT CONNECT,EXECUTE,SELECT,DELETE, INSERT, UPDATE,ALTER ON database::CoreReferenceStaging TO "INT\svc-w-corerefdata-qa"; 
ALTER AUTHORIZATION ON [PartiesIssuerCreditRating] TO "INT\svc-w-corerefdata-qa"; 

現在、私は、Truncateテーブルを個別に実行する16個のストアドデータフローを持っています。 私は当初、実行権限を含む16のストアドプロシージャを作成することを考えましたが、1つの切り捨てテーブルを呼び出すだけでメンテナンスの問題を感じます。役割などを割り当てることにより、より良い方法がありますか?

この状況に対処する最善の方法を教えてください。

+0

dbがデータを移動するためのステージング用のデータベースにすぎない場合、このデータベースに対するアクセス許可がdbaに問題となる理由はわかりません。権限がステージングデータベースにロックされている場合は、そこに問題がありますか? – Tanner

+0

名前はステージングしていますが、最終的にはWebアプリケーションの1つでメインデータベースでも使用されます。 – Tom

答えて

1

最小限のアクセス許可を与えるには、TRUNCATEステートメントをストアドプロシージャにカプセル化します。必要なALTER TABLE権限を持つデータベースユーザーアカウントにEXECUTE AS句を指定するか、権限を持つユーザーに基づいて証明書を使用してprocに署名します。証明書、ユーザー、およびTRUNCATE TABLE procのスクリプトの例については、Erland Sommarskog's articleを参照してください。この資料には、ストアドプロシージャを使用してアクセス許可を与えるモジュール署名とEXECUTE ASの詳細な説明も含まれています。

+0

私は16ストアプロシージャを作成し、それぞれにアクセス許可を与えたり、ストアドプロシージャをダイナミックにしなければならないので、ストアプロシージャのアプローチを取らないことをお勧めします。 – Tom

+0

1つのストアドプロシージャが、動的? –

関連する問題