0

次の方法でデータベースを保護したいと考えています。

  • テーブルは削除や名前変更から保護する必要があります
  • 列は削除や名前変更から保護する必要があります
  • テーブルと列の追加は許可されています

これをコンテキストに入れるvocabulariesと、中央のマスター コピーとなるデータベース (ルックアップ テーブル) であり、他のデータベース (同じサーバー上、および将来的には他のサーバー (非 SQL サーバー システムでも)) に配布されます。

テーブルと列の追加は、クライアント データベースが引き続き動作し、表示されたときに更新を取得できる方法で処理できます。一方、テーブルと列の削除は、別の組織化された方法で処理する必要があります。

テーブルと列のドロップをロックする DDL トリガーを作成しましたが、これは簡単な部分でした。
残念ながら、テーブルと列の名前変更はプロシージャによって処理されているようで、sp_renameこのプロシージャは次の構成を使用します。

EXEC %%Object(ID = @objid).SetName(Name = @newname)

これは、DDL トリガーによって検出されません。テーブルと列の名前が変更されていないことを確認する方法はありますか?

4

1 に答える 1

0

テーブルごとに、次のコードに示すように、スキーマ バインディングを使用してビューを作成します。

CREATE VIEW PreventDropOnT1
WITH SCHEMABINDING 
AS
    SELECT Col1, Col2
    FROM T1
于 2012-10-15T10:42:49.230 に答える