-1

要件:
SQL Server のデータで実行される SSIS プロジェクトがあり、おそらく統合認証を使用して SQL Server にログインします。このプロジェクトには、エンド ユーザーが選択クエリを 1 つのデータフローのソースとして追加できるセクションが 1 つあります。(この製品では、ユーザーは構成ファイルにデータの分類とフィルタリングの種類の規則を追加できます)。
ユーザーが提供するこれらのクエリを、読み取り専用アクセスの制限されたコンテキストで実行したいと考えています。クエリ にDELETEorを追加してデータベースを破棄することはできません。DROP

最初のパス ソリューション:
データベースに読み取り専用ユーザーを作成しEXECUTE AS ... WITH NO REVERT、クエリのコンテキストを読み取り専用ユーザーに制限するために使用します。残念ながら、これは完全には機能しません。SSIS はデータ ソース コンポーネントで準備済みステートメントを使用しWITH NO REVERTますが、SQL Server では準備済みステートメントで許可されていません。

質問:
OLEDB データ ソース コンポーネントで準備済みステートメントの代わりにアドホック クエリを使用するように SSIS に強制する方法はありますか?
または ... SSIS にデータ ソース コンポーネントの実行コンテキストを強制的に変更させる別の方法はありますか?

もう 1 つの解決策があります。それは、スクリプト コンポーネント ソースを使用することです。スクリプト コンポーネントは、さまざまな方法でユーザー コンテキストを設定できます。

4

3 に答える 3

1

Stackoverflow には、BEGIN TRAN / ROLLBACK TRAN でラップすることを提案するいくつかの回答があります。これは別の SQL タスクにある可能性があり、卑劣なインジェクションでそれらを無効にする機能を削除します。ただし、DROP DATABASE をデータ フローに挿入することはできます。それをロールバックする方法はありません。

DML がデータフローのソースで実行されるかどうかを確認しましたか?

私はこれのアーキテクチャに疑問を持っています.... SSISでユーザー定義クエリを実行していますか?

于 2013-04-19T03:03:19.683 に答える
0

オプションを使用してad-hocクエリをOLEDB source使用SQL Command from Variableできます。変数を作成し、SQL クエリに入力して、OLEDB ソース コンポーネントで使用できます。XML 構成を使用して、変数をそれに追加しますquery。中のSSISでruntime。ただし、SSIS は大きく依存してMetadataいます。実行前であっても、SSIS はメタデータを検証します。XML でクエリを変更すると (列名を変更するなど)、SSIS はメタデータの不一致を検出し、パッケージはfail

于 2013-04-18T10:41:22.000 に答える