2010-07-30 6 views
0

Avec code suivant, j'ai identity_insert allumé pour être en mesure d'insérer une valeur explicite:identity_insert est activé, mais il y a une erreur, mais

SET IDENTITY_INSERT dbo.myTable ON 
Go 

l'insert d'identité est définie comme clé primaire et non null

dans mon C# programme, quand je veux insérer une valeur, cette erreur est générée:

IDENTITY_INSERT is turned off

mais je l'ont transformé o n

quel est le problème et comment le résoudre?

merci

+0

L'allume-t-on depuis le programme C#? Je ne pense pas que ce soit un paramètre global - c'est par session. Vous devrez l'activer à partir de votre code C#, faites vos insertions, puis éteignez-le. – PatrickSteele

+0

J'ai beaucoup de souci que vous utilisez set identity_insert on de C#. Ce n'est pas quelque chose qui devrait être fait régulièrement à partir d'une interface utilisateur. C'est une pratique très dangereuse. Faire une erreur est une menace pour l'intégrité des données et ces tâches ne devraient être utilisées que par l'expérience dbas et non par une application. Habituellement, cela n'est fait que rarement lors de l'insertion de données héritées. Si vous planifiez votre conception pour l'utiliser régulièrement, vous devez examiner s'il n'y a pas une meilleure solution. – HLGEM

Répondre

2

Le IDENTITY_INSERT réglage fonctionne uniquement dans la session SQL en cours, par exemple vous ne pouvez pas l'activer sur une table donnée dans SQL Server Management Studio, puis exécutez votre code C# et attendez-vous à ce qu'il fonctionne. Ce que vous devez faire est d'avoir cette instruction SET IDENTITY_INSERT dbo.myTable ON faire partie de votre application C# - d'abord, réglez le paramètre sur ON dans votre commande, puis faites tout ce que vous avez à faire depuis votre application C#, et à la fin, tournez éteint ce paramètre, encore une fois, à partir de votre code C#.

Questions connexes