複数のユーザーによって行われた変更の調整 (Visual Database Tools)

適用対象: SQL サーバー

マルチユーザー環境では、複数のユーザーが同じオブジェクトに対して一度に変更を加えることができます。 これは、テーブル またはデータベース ダイアグラム デザイナーでオブジェクトの構造を操作している場合や、クエリ およびビュー デザイナーの結果ペインで返される結果の値に発生する可能性があります。 これによって、解決したい競合が発生する可能性があります。

テーブル またはデータベース ダイアグラム デザイナーでの競合

たとえば、テーブル デザイナーで同じテーブルまたは関連するテーブルを操作しているときに、別のユーザーがテーブルを削除したり、名前を変更したりできます。 テーブルを保存しようとすると、[データベースの変更が検出されました] ダイアログ ボックスに、テーブルを開いた後にデータベースが更新されたことが通知されます。

このダイアログ ボックスには、テーブルの保存の結果として影響を受けるデータベース オブジェクトの一覧も表示されます。 この時点で、次のいずれかのアクションを実行できます。

  • [はい] 選択してテーブルを保存し、一覧のすべての変更でデータベースを更新します。

    このアクションは、同じデータベース オブジェクトを共有するテーブルに影響する可能性があります。 たとえば、au_id テーブルの titleauthors 列を編集し、別のユーザーが authors 列の titleauthors テーブルに関連する au_id テーブルを操作するとします。 テーブルを保存すると、他のユーザーのテーブルに影響します。 同様に、別のユーザーが、qty テーブルの sales 列の check 制約を定義したとします。 qty列を削除し、salesテーブルを保存すると、他のユーザーの check 制約が影響を受けます。

  • [ なし] を選択して、保存アクションを取り消します。

    その後、保存せずにテーブルを閉じます。 テーブルを再度開くと、データベース内のテーブルと一致します。

  • [テキストファイル を保存] を選んで、変更の一覧を保存します。

    [データベースの変更が検出 ] ダイアログ ボックスに表示されているデータベース変更の一覧をテキスト ファイルに保存して、他のユーザーの変更の原因を調査できます。 たとえば、削除対象としてマークしたテーブルを別のユーザーが編集した場合は、データベースを更新する前にテーブルを削除する必要があるかどうかを調べる必要があります。

クエリおよびビュー デザイナーでの競合

クエリを実行するか、ビューの結果を返す場合、データは 結果ペイン (Visual Database Tools) に表示されます。 複数のユーザーが同じデータ セットで同時に作業できるため、競合が発生する可能性があります。

たとえば、自分と同僚がそれぞれクエリを実行して、titleauthors テーブル内のすべてのデータを表示するとします。 他のユーザーが、最初に返されるレコードの名を Barb から Barbara に変更します。 この時点で、データベースにはそのフィールドに Barbara が含まれていますが、結果セットには Barb が表示されています。 次に、バーバラを入力し、行から外して選択します。 競合を解決する方法を尋ねるメッセージが表示されます。

  • [ はい ] を選択して、変更内容でデータベースを更新します。

    このオプションは、同僚の変更をオーバーライドします。

  • [ いいえ ] を選択すると、結果セットがデータベース内の現在の内容に更新されます。

    このオプションは、変更内容を同僚の変更に上書きします。

  • 競合を解決せずに編集を続行するには、[ キャンセル] を選択します。

    この場合、変更をデータベースにコミットすることはできません。