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);
Où 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!