2009-02-18 5 views
4

J'essaye de faire un énorme encart en vrac dans une base de données SqlCe (version 3.5, oh et en utilisant C# 3). J'ai essayé différentes manières de le faire (insert d'adaptateur de table, une requête paramétrée préparée, insert sqlceresultset etc.). Le meilleur temps, comme je l'ai lu sur de nombreux sites, était l'utilisation de l'objet SqlCeResultSet, en mode direct de table.Comment désactiver tous les index de table dans sql server compact edition via un objet SqlCeCommand?

Je veux accélérer encore plus loin en désactivant tous les index sur les tables nécessaires avant de faire l'insertion (puis je vais les reconstruire par la suite). J'ai un problème pour faire fonctionner l'instruction ALTER INDEX (je ne l'ai jamais utilisée auparavant, donc je suis sûr que je néglige quelque chose de simple).

Fondamentalement, j'ai créé un SqlCeCommandObject et mis en place une déclaration alter de la manière suivante (objet de connexion est déjà mis en place et est ouvert, etc.):

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

Lorsque je tente d'exécuter ce code I obtenir l'erreur suivante:

There was an error parsing the query. [ Token line number = 1, Token line offset = 7, Token in error = INDEX ]

Il me semble qu'il ne comprend pas le mot clé INDEX dans l'instruction alter. Est-ce que ce n'est pas supporté dans SqlCe?

Merci

[UPDATE] - J'ai essayé d'autres déclarations (comme DROP DDL INDEX, CREATE INDEX) et je ne peux pas sembler obtenir l'un d'eux pour travailler? J'ai cherché partout pour essayer de trouver une liste de ce qui est et ce qui n'est pas supporté dans SSCE, en ce qui concerne les déclarations DDL. Pas de chance. Est-ce que quelqu'un sait de bonnes ressources pour cela. MS documentation sur la SQLCE version compacte 3.5 a été tout à fait inutile, je dois dire ...

Répondre

5

La syntaxe INDEX DROP SqlServerCe est:

DROP INDEX [TableName].IndexName 

Il n'y a pas de syntaxe INDEX ALTER SqlServerCe, alors quand il dit "error parsing" à "INDEX", c'est parce qu'il cherche "TABLE", la seule chose que ALTER est valide dans SqlServerCe.

EDIT: Comme pour la documentation, la meilleure façon que j'ai trouvé est de télécharger Books Online. Si vous n'utilisez pas 3.5 SP1, recherchez here pour obtenir une liste plus complète des téléchargements disponibles.

+0

Merci. En fait, je me suis heurté à la documentation en ligne ce matin et j'ai réalisé que je devais supprimer les index et les recréer (ou simplement ne pas les créer pour commencer et les créer après le chargement en bloc). –

Questions connexes