2016-04-06 7 views
0

SQL Server 2005では、いくつかの権利を付与することが可能ですビュー - 私はこの概念を理解していません。SQL Serverで表示できるGRANT DML権限の目的は何ですか?

SELECTREFERENCE権は明白ですが、私はINSERTDELETEUPDATEについて困惑しています。私は彼らが理由のためにそこにいると確信していますが、私はそれを見ません。

これらの権限は、ビューによって参照されるテーブルに伝播される可能性がありますか?

答えて

1

名前にもかかわらず、ビューはSQL Serverで更新可能です。 the documentation(「更新可能なビュー」セクション」)

を言い換えあなたがいる限り、以下の条件に該当するように、ビューを介して、基礎となるベーステーブルのデータを変更することができる:

  • 変更を、 UPDATE、INSERT、およびDELETEステートメントを含む、
    のみつのベーステーブルの列を参照する必要があります。

  • ビューに変更された列は、直接テーブルcoluにおける基礎データを参照する必要がありますmns。

  • 集約関数:AVG、COUNT、SUM、MIN、MAX、GROUPING、STDEV、STDEVP、VAR、およびVARP列は、以下を介してのような任意の他の方法に由来
    ことができません。

  • 計算。他の列を使用する式から列を計算することはできません。
    集合演算子UNION、UNION ALL、CROSSJOIN、EXCEPT、およびINTERSECTを使用して形成された列
    は計算に要し、更新もできません。

  • 変更される列は、GROUP BY句、HAVING句、またはDISTINCT句の影響を受けません。

  • TOPはWITH CHECK OPTION句と共にビューのselect_statementのどこにも使用されません。さらに

、あなたはこれらの制限を回避ビューにINSTEAD OFトリガーを持つことができます。

TL; DR - ビューに対してDMLを実行できる多くのシナリオがあります。これらの操作を行うことができる権限を持つ権限を持つことは、それを考えると意味があります。

+0

あなたは正しいですが、私はVIEWパーミッションを検索しましたが、一般的なビューのドキュメントをチェックしませんでした。私は時にはいくつかのビューを更新しようとしましたが、ほとんどのビューが更新可能なビューの要件に準拠していないため、私の実験は失敗しました。 – Luca

関連する問題