4

我正在尝试向 SqlCe 数据库(版本 3.5,哦,使用 C# 3)进行大量批量插入。我尝试了各种方法(表适配器插入、准备好的参数化查询、sqlceresultset 插入等)。正如我在许多网站上所读到的,最快的时间是在表直接模式下使用 SqlCeResultSet 对象。

我想通过在插入之前禁用必要表上的所有索引来进一步加快速度(然后我将在之后重建它们)。我在使 ALTER INDEX 语句工作时遇到问题(以前从未使用过它,所以我确信我忽略了一些简单的东西)。

基本上我已经创建了一个 SqlCeCommandObject 并以下列方式设置了一个 alter 语句(连接对象已经设置并打开等):

.
.
.
SqlCeCommand disableIndexCommand = Connection.CreateCommand();
disableIndexCommand.CommandText = "ALTER INDEX ALL ON ItemMaster DISABLE";
disableIndexCommand.ExecuteNonQuery();
.
.
.

当我尝试运行此代码时,出现以下错误:

解析查询时出错。[令牌行号 = 1,令牌行偏移量 = 7,错误令牌 = INDEX]

在我看来,它不理解 alter 语句中的 INDEX 关键字。SqlCe 不支持这个吗?

谢谢

[更新] - 我尝试了其他 DDL 语句(如 DROP INDEX、CREATE INDEX),但我似乎无法让它们中的任何一个工作?就 DDL 语句而言,我一直在到处搜索,试图找到 SSCE 中支持和不支持的内容的列表。没运气。有谁知道这方面的好资源。我必须说,关于 sqlce compact 3.5 版的 MS 文档毫无用处...

4

1 回答 1

8

SqlServerCe 上的 DROP INDEX 语法为:

DROP INDEX [TableName].IndexName

SqlServerCe 中没有 ALTER INDEX 语法,所以当它在“INDEX”处说“错误解析”时,因为它在寻找“TABLE”,所以 ALTER 在 SqlServerCe 中唯一有效。

编辑:至于文档,我发现最好的方法是下载Books Online。如果您未使用 3.5 SP1,请在此处查找更完整的可用下载列表。

于 2009-02-19T10:33:28.417 回答