0

J'ai mis en place une procédure stockée pour insérer un seul enregistrement dans une table. La raison en est de créer une interface générale pour les personnes à utiliser afin que je puisse changer la structure de la table vers laquelle il pointe sans que personne ne s'en aperçoive ou n'ait à changer de code de son côté à l'avenir.Insertion d'enregistrements dans une interface

Le problème se produit lorsque l'utilisateur doit insérer plusieurs enregistrements. Normalement, ils seraient capables de faire une instruction INSERT qui insère de nombreux enregistrements à la fois mais avec cette interface, ils sont obligés de faire une boucle dans chaque enregistrement, en l'insérant individuellement. La vitesse n'est pas le facteur le plus important ici, l'accessibilité est.

J'ai envisagé d'utiliser une vue, mais je ne sais pas si cela fonctionnerait bien. Je ne suis tout simplement pas assez familier avec eux pour savoir à coup sûr. En outre, les requêtes d'autres serveurs peuvent accéder à l'interface et je ne pense pas que les vues vous permettent d'insérer à partir d'un autre serveur.

Que suggérez-vous que je fasse?

+0

Whoa, je n'avais aucune idée. Avez-vous un lien où je peux trouver plus d'informations? –

+0

@Abe - Je ne connais aucune ressource particulièrement bonne, mais si vous google 'updatable views' vous devriez trouver beaucoup de choses. Je pense qu'ils pourraient être un bon ajustement ici - mais je vois que cela est étiqueté SQL Server 2000 alors peut-être pas! Aussi, je ne suis pas sûr de toute limitation sur l'insertion dans une vue pouvant être mise à jour à partir d'un autre serveur. Je ne l'ai jamais rencontré moi-même. –

Répondre

1

Vous pouvez avoir 2 procédures stockées. L'un utilise BULK INSERT de SQL Server et l'autre est votre standard pour l'insertion d'un enregistrement (vous l'avez déjà). Vos utilisateurs peuvent appeler l'un ou l'autre en fonction de leurs besoins.

Pour plus d'informations sur VRAC INSERT http://msdn.microsoft.com/en-us/library/ms188365.aspx

+1

Je ne comprends pas comment l'insert en vrac résout le problème. Comment faites-vous passer les dossiers? –

+0

L'insertion en bloc nécessite un fichier. Voici un exemple: http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file –

+0

L'utilisation d'un fichier ne résoudra pas le problème. Le problème n'est pas que j'ai une énorme quantité d'enregistrements, c'est que je ne veux pas que les utilisateurs doivent réécrire leurs programmes pour utiliser une boucle au lieu d'une instruction INSERT lors de l'accès à l'interface –

0

Jetez un oeil à la classe SQLBulkCopy. Cela semble faire ce que vous cherchez.

+0

J'ai pensé à celui-là aussi, cela suppose qu'il utilise un langage .NET. –

+0

Les utilisateurs peuvent utiliser la langue qu'ils veulent. Ils n'ont pas accès à la table elle-même (le point de l'interface ...) –

+0

Quand vous dites utilisateurs faites-vous référence à d'autres programmeurs?Pouvez-vous développer ce que vous entendez par "interface"? –

Questions connexes