En utilisant SMO, toujours pas aller … ConnectionContext.ExecuteNonQuery (script) ne peut pas comprendre "GO"

SQL Server 2008

En utilisant toutes les bonnes references, j'ose dire:

System.Data.SqlClient; Microsoft.SqlServer.Management.Smo; Microsoft.SqlServer.Management.Common; Microsoft.SqlServer.Management.Sdk.Sfc; 

Tout comstack sans erreurs.

J'ai réduit le code à presque zéro pour faciliter le debugging.

login au server bien et ainsi de suite.

Excuting code suivant:

 SqlConnection connection = new SqlConnection(sqlConnectionSsortingng); Server server = new Server(new ServerConnection(connection)); server.ConnectionContext.ExecuteNonQuery(sqlDBQuery); 

sqlDBQuery est une string: USE [master] GO ALTER DATABASE [Cassiopeia] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [Cassiopeia] SET ANSI_NULLS OFF GO

Mais ça n'a pas d'importance ce que "sqlDBQuery" est, j'ai toujours la même erreur, comme

syntaxe incorrecte près de GO

.

J'étais dans la croyance que SMO prendrait soin de ceci, quand je regarde mon ConnectionContext est dit BatchSeparator = "GO"

Si j'enlève GO c'est un go … pour ainsi dire mais j'ai vraiment besoin de savoir pourquoi mon SMO ne fonctionne pas.

Partout où je regarde, il dit juste "utiliser smo comme ça et tout va bien". Eh bien … ça ne marche pas pour moi.

Voir cet article de Jon Galloway pour reference: http://weblogs.asp.net/jgalloway/archive/2006/11/07/Handling-_2200_GO_2200_-Separators-in-SQL-Scripts- 2D00 -the-easy-way.aspx

Cordialement

"GO" n'est pas un langage SQL

C'est un séparateur de batch utilisé par les outils client comme SSMS (qui n'envoie pas "GO" au moteur de database)

SMO n'parsing pas le script en lots comme le ferait SSMS, donc le moteur de database génère une erreur.

Après commentaire:

"GO" doit être sur une ligne séparée

Est-ce que votre script est littéralement ceci (copyr / coller quand je "édite" la question)

 USE [master] GO ALTER DATABASE [Cassiopeia] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [Cassiopeia] SET ANSI_NULLS OFF GO 

ou ceci correctement formaté?

 USE [master] GO ALTER DATABASE [Cassiopeia] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [Cassiopeia] SET ANSI_NULLS OFF GO 

Erreur causée par un formatting incorrect du text de la requête. Assez embarrassant vraiment.

Maintenant résolu, merci!