0

新しいインデックスを追加/作成した後、INFORMATION_SCHEMA.KEY_COLUMN_USAGE が確実に更新されるようにするにはどうすればよいですか。すなわち:

CREATE UNIQUE INDEX [UK_Common.UserConnection]
   ON [Common.UserConnection] ([SessionId] ASC,[UserId] ASC);
GO

データベースが必要です.1つは古いバージョン(V1)から新しいバージョン(V10)に変換/更新され、もう1つは新しい(V10)データベースです。データベースを比較すると、次を除いてすべてが一致します (これには PK、FK、インデックスなどが含まれます)。

INFORMATION_SCHEMA.KEY_COLUMN_USAGE

新しく作成した一意のインデックス ([UK_Common.UserConnection] SessionId および UserId) が変換されたデータベースにないことがわかります。変換されたデータベース、新しい (V10) データベースと比較して、「key_column_usage」テーブルの行数が少なくなります。

SQL ce クライアント アプリケーションから "Create sql table script" を抽出すると、変換/更新されたスクリプトと新しい (V10) スクリプトのスクリプトは同一です。

トランスフォーマーにステートメントへの挿入を含めようとしました:

    INSERT INTO [INFORMATION_SCHEMA.KEY_COLUMN_USAGE]
            (COL0,COL1,COL2,COL3)
    VALUES ('value0','value1','value2',value3)

    GO

結果: システム テーブルまたはスキーマ情報ビューにデータを追加できません。[読み取り専用テーブルの名前 = @@INFORMATION_SCHEMA.KEY_COLUMN_USAGE]

また、select クエリ (rot to count key エラー) が配置されているこの inn .net をコーディングしようとしました。

("SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE")

結果: システム テーブルまたはスキーマ情報ビューにデータを追加できません。[読み取り専用テーブルの名前 = @@INFORMATION_SCHEMA.KEY_COLUMN_USAGE]

質問は、asp.net プロジェクトで失敗した単体テスト (mstest) に関連しています: Assert.IsTrue が失敗しました。キー列の使用回数が異なります。

INDEX の編集/変更後に、INFORMATION_SCHEMA.KEY_COLUMN_USAGE をどのように更新しますか?

.NET 4.0 SQL CE 4.0 VS2010

4

1 に答える 1

2

このテーブル (ビュー) は更新できません。キーの使用に基づいて ms sql ce インスタンスによって更新されます。通常、RDBM のいずれかで information_schema を直接変更することはあまり良い考えではありません。ほとんどの場合、ユーザーはとにかくそれを行うことを許可されていません。

編集: information_schema の違いをテストの例外基準として使用する必要はないと思います。

于 2015-10-02T12:18:17.177 に答える