2

SQL Server 2008

私が敢えて言うすべての正しい参照を使用して:

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

すべてエラーなしでコンパイルされます。

デバッグを容易にするために、コードをほぼゼロまで削除しました。

サーバーへの接続は問題ありません。

次のコードを実行します。

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

文字列はどこsqlDBQueryにありますか:USE [master] GO ALTER DATABASE [Cassiopeia] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [Cassiopeia] SET ANSI_NULLS OFF GO

しかし、「sqlDBQuery」が何であるかは関係ありません。私は常に同じエラーを受け取ります。

GOの近くの構文が正しくありません

私を見ると、ConnectionContextBatchSeparator = "GO"と言っているので、SMOがこれを処理すると信じていました。

GOを削除すると、それは成功です...いわば、SMOが機能しない理由を本当に知る必要があります。

どこを見ても、「このようにsmoを使用すれば、元気です」とだけ表示されます。まあ...私にはうまくいきません。

参考のために、Jon Gallowayによるこの投稿を参照してください: http://weblogs.asp.net/jgalloway/archive/2006/11/07/Handling-_2200_GO_2200_-Separators-in-SQL-Scripts-2D00 -the-easy-way.aspx

よろしく

4

2 に答える 2

6

「GO」はSQL言語ではない

これは、SSMS などのクライアント ツールで使用されるバッチ セパレータです (データベース エンジンに「GO」を送信しません)。

SMO は、SSMS のようにスクリプトをバッチに解析しないため、データベース エンジンはエラーをスローします。

コメントの後:

「GO」は、それ自体で別の行にする必要があります

あなたのスクリプトは文字通りこれですか(質問を「編集」したときからコピー/貼り付けます)

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

またはこれは正しくフォーマットされていますか?

USE [master]
GO
ALTER DATABASE [Cassiopeia] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [Cassiopeia] SET ANSI_NULLS OFF
GO
于 2009-10-21T08:24:33.067 に答える
0

クエリ テキストの書式設定の誤りが原因で発生したエラー。本当に恥ずかしい。

今解決しました、ありがとう!

于 2009-10-21T11:00:55.770 に答える