J'utilise ADO.NET ou l'utilitaire sqlcmd pour envoyer des scripts sql à SQL 2008. Quelle est la différence entre l'utilisation de ";" et "GO" pour séparer des morceaux de SQL? Merci, NEstor
Réponses
Trop de publicités?ALLER n'est pas réellement une commande T-SQL, c'était quelque chose introduites par les outils comme un moyen de séparer les lots états comme la fin d'une procédure stockée. Il est pris en charge par le MS SQL pile d'outils, mais ne faisant pas officiellement partie des autres outils.
On ne peut pas mettre d'ALLER dans une chaîne de SQL et de les envoyer en tant que partie d'un ADO.NET objet de commande SQL que lui-même ne comprend pas le terme. Une autre façon de démontrer ce qui est avec le profiler, le programme d'installation de certains états qui utilisent ALLER dans l'Analyseur de Requêtes/Management Studio, puis exécutez le générateur de profils lorsque vous exécutez - vous verrez qu'ils sont émis en tant que commandes distinctes pour le serveur.
Le point-virgule est utilisé pour signifier la fin d'une instruction lui-même, pas nécessairement tout un lot.
"ALLER" est semblable à l' ; dans de nombreux cas, mais n'en fait signifier la fin d'un lot.
Chaque lot est commise lorsque le "GO" est appelée, donc si vous avez:
SELECT * FROM table-that-does-not-exist;
SELECT * FROM good-table;
dans le lot, puis la bonne table select ne sera jamais appelé parce que la première sélectionnez provoquera une erreur.
Si vous avait plutôt:
SELECT * FROM table-that-does-not-exist
GO
SELECT * FROM good-table
GO
La première instruction select provoque encore une erreur, mais depuis la seconde instruction est dans son propre lot, il va encore s'exécuter.
ALLER n'a rien à voir avec de valider une transaction.
le point-virgule est un séparateur d'instructions. La ou les instructions précédentes ne sont pas nécessairement exécutées lorsqu'un point-virgule est rencontré.
GO
Signifie la fin d'un lot. Exécute le lot d'instructions précédent, tout comme la rencontre de la fin du bloc.
GO 2
Signifie exécuter le lot autant de fois. Je pense que j'ai utilisé cette option peut-être deux fois dans ma vie. Là encore, je ne suis pas un DBA de métier.
"ALLER à" est généralement utilisé pour indiquer la fin d'un lot d'instructions SQL qui signifie que vous pourriez avoir un begin transaction
et end transaction
enveloppé dans une collection unique de déclarations qui peuvent échouer ou de réussir ensemble.
';' est généralement utilisé pour séparer plusieurs instructions SQL à partir de l'un de l'autre. Cela est perceptible dans les scripts SQL qui doivent revenir plusieurs jeux d'enregistrements, tels que `select * from table1; select * from table2; " qui aboutirait à deux jeux d'enregistrements du côté du client.