2009-08-17 5 views

答えて

5

ビューがスキーマにバインドされている場合、そのスキーマが変更できないことを意味します。実際にはそうしないようにしています。

スキーマバインディングでは、ビューのインデックスを作成することもできます。インデックスを適用するときに静的スキーマの重要性を確認できます。

スキーマバインディングはデータベース内でのみ実行できます。ビューを別のデータベースまたは別のサーバーにスキーマバインドすることはできません。これは完全にデータの完全性のためです。そのデータベースまたはサーバーへのアクセスは必ずしも保証されているわけではないため、スキーマの変更をすべて防止することはできません。

さらに、スキーマにバインドされている表を削除することはできません。これは明らかにそのスキーマを泥沼にしてしまうので、避けられます。

私は「スキーマ」と言っていますが、私はテーブルデザインを意味します。これには、列とそのデータ型が含まれます。スキーマ・バインド表の列をintからbigintに変更することはできません。列の名前をidからtblIDに変更することもできません。この防止は、ビューの完全性を維持するためのものです。

1

スキーマにバインドされていないビューをインデックスに登録することはできません。

スキーマバインドビューは、スキーマ依存性チェーンの一部です。

スキーマバインドビューで参照されるテーブルを削除または変更することはできませんが、プレーンビューで行うことはできます(参照時にランタイムエラーが発生する)。

1

偉大Itzikベン・ガンによってMicrosoft® SQL Server ® 2012 T-SQL Fundamentals int型WITH SCHEMABINDINGオプションの説明、およびデヤンSarka、Itzikベン・ガン、そしてより多くの著者によってExam 70-461: Querying Microsoft SQL Server 2012でもあります。あなたはWITH SCHEMABINDINGオプションを使用して作成されたオブジェクトからオブジェクトまたは列を削除しようとすると、ここで

は例です:例えば、それを変更しようとするよりも、

は、WITH SCHEMABINDINGオプションを使用して単純なビューを作成します。

ALTER TABLE Table DROP COLUMN Column1; 

次のエラー得られます:オブジェクト

メッセージ5074、レベル16、状態1、行1 'をSomeObjectの' 列 '列1' に依存しています。 メッセージレベル4922、レベル16、状態9、行1 ALTER TABLE DROP COLUMN 1つ以上のオブジェクトがこの列にアクセスしたため、Column1が失敗しました。

SCHEMABINDINGオプションを持たないビューでは、この変更が許可されますが、ドロップされたオブジェクトまたは列を持つオブジェクトをクエリすると、実行時にエラーが発生する可能性があります。

SCHEMABINDINGオプションには、SELECT *構文をサポートしていないため、いくつかの設定があり、修飾名(2つの名前の規則)を使用する必要があります。

希望すると便利です。

関連する問題