0

添加/创建新索引后,如何确保更新 INFORMATION_SCHEMA.KEY_COLUMN_USAGE。IE:

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

我必须要数据库,一个是从旧版本 (V1)转换/更新到新版本 (V10),另一个是全新的 (V10)数据库。当我比较数据库时,所有匹配项(包括 PK、FK、索引等)除了:

INFORMATION_SCHEMA.KEY_COLUMN_USAGE

我可以看到转换后的数据库中缺少我新创建的 uniq 索引([UK_Common.UserConnection] SessionId 和 UserId) 。与新 (V10) 数据库相比,转换后的数据库在“key_column_usage”表中的行数更少。

如果我从任何 sql ce 客户端应用程序中提取“创建 sql 表脚本”,则转换/更新和新 (V10) 脚本的脚本是相同的。

我试图在转换器中包含一个插入语句:

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

    GO

结果: 无法将数据添加到系统表或架构信息视图。[只读表的名称=@@INFORMATION_SCHEMA.KEY_COLUMN_USAGE]

我还尝试编写选择查询(rot to count key error)所在的旅馆.net。

("SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE")

结果: 无法将数据添加到系统表或架构信息视图。[只读表的名称=@@INFORMATION_SCHEMA.KEY_COLUMN_USAGE]

问题与 asp.net 项目中的失败单元测试 (mstest) 有关: Assert.IsTrue 失败。键列使用次数不同。

您如何更新:INFORMATION_SCHEMA.KEY_COLUMN_USAGE 编辑/更改 INDEX 后?

.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 回答