SQL Server: Quelles sont les instructions de dosage (c'est à dire à l'aide de “GO”) bon pour?

Je sais que dans SQL Server GO est considéré comme un séparateur de lots.

Ma question est: Quel est l'intérêt d'avoir un séparateur de lot? Quel est l'avantage de vous et pourquoi voudriez-vous utiliser?

Exemple: j'ai souvent vu qu'il est utilisé dans le code SQL comme suit et je ne vois pas pourquoi cela serait considéré comme une meilleure pratique. Aussi loin que je peux dire que le code serait le même sans tous les GO états:

USE AdventureWorks2012;
GO
BEGIN TRANSACTION;
GO
IF @@TRANCOUNT = 0
BEGIN
    SELECT FirstName, MiddleName 
    FROM Person.Person WHERE LastName = 'Adams';
    ROLLBACK TRANSACTION;
    PRINT N'Rolling back the transaction two times would cause an error.';
END;
ROLLBACK TRANSACTION;
PRINT N'Rolled back the transaction.';
GO

(source: la documentation technet):

  • double possible de qu'est-Ce que l'utilisation de SQL Server Management Studio?
  • non ce n'est pas la même (j'ai même lié à ce poste dans ma question). Ce poste dit essentiellement que le GO est un séparateur de lot, mais ma question est de demander à ce qu'un séparateur de lot qui est bon pour
  • Regardez la réponse fournie par tvanfosson dans cette question (26 upvotes).
  • merci de remarquer que la réponse. Il donne de bonnes informations de fond supplémentaires, mais ne répond pas à la racine de la question que j'ai eu (heck, une personne a même laissé un commentaire sur la question, en demandant à ce que le dosage des scripts est bon pour l')
  • Certainement un duplicata de celui-ci... stackoverflow.com/questions/2668529/t-sql-go-statement/...
  • La réponse est un peu confus mais. Il n'est pas nécessaire de séparer en différents lots afin d'obtenir de petites transactions.
  • Il y a des cas où, si vous souhaitez que plusieurs états en un seul script, vous devez utiliser un séparateur de lot, comme ALLER. Voir ma réponse.
  • Il n'existe pratiquement pas (le cas échéant) dans les cas où vous devez utiliser GO. Avez-vous des exemples où il ne peut pas être remplacé par EXEC?
  • Lorsque la direction a dit: "Ne pas utiliser le SQL dynamique ici." 🙂 Mais sérieusement, non, SQL dynamique serait trop de travail, mais un séparateur de lot semble plus propre à moi.
  • Complètement d'accord, il est souvent plus propre. La coloration syntaxique et l'intellisense sont évidemment complètement perdu quand EXEC-ing cordes. Juste le mot doit exagère les choses!

InformationsquelleAutor Zain Rizvi | 2013-12-20