2009-05-28 30 views
0

最近SQL Serverデータベースを使用していましたが、SQuirreL SQL Clientを使用していくつかのテーブルのトリガをいくつか作成しようとしていましたが、厄介なエラーメッセージ:問題SQuirreL SQLクライアントを使用したSQL Serverトリガの作成

「エラー: 『CREATE TRIGGERを』クエリ・バッチの最初のステートメントでなければなりません するSQLState:S0001 のErrorCode:111」私が実行しようとした

クエリは以下の通りであった(I構文が正しいことを確認するための非常に単純なトリガーで始めました)。

CREATE TRIGGER meeting_overlap on adhoc_meeting 
FOR INSERT 
AS 
DECLARE 
    @myvar INT 

Microsoft SQL Server Management Studio Expressで全く同じクエリを実行しようとすると、正常に実行されました。私の質問です:他の誰かがSQuirreL SQL Clientを使用して同様の問題に遭遇した場合、このエラーを取り除くために何をしましたか?

編集:私は、Microsoft SQL ServerのJDBCドライバ2.0でリスSQLのv2.6.8を使用していると私は、SQL Serverに接続してい

+0

これはあなたの質問に答えるものではありませんが、SQuirrel SQLはQuest Toad(フリーウェア版もあります)IMOほど良くありません。あなたは頭痛を救うためにそれに亀裂を与えたいかもしれません! http://www.toadsoft.com/toadsqlserver/toad_sqlserver.htm –

+0

SQuirereLのどのバージョンですか?どのjdbcドライバですか? –

答えて

2

私は同じ問題を抱えていました。あなたの作成TRIGGER文の周り要するに

http://vsingleton.blogspot.com/2009/04/error-create-view-must-be-first.html

、ラップのexec( ''):いくつかのGoogleをした後、私はこの記事を見つけました。さらに、トリガーステートメントにある一重引用符( ')は二重引用符(' ')で変更する必要があります。

+0

素晴らしいです。あなたの答えと正確な要約に感謝します。 – BordrGuy108

0

複数のステートメントを実行しようとすると、通常は、そのエラーを取得します同じバッチではバッチ内の最初のステートメント以外は何もできません。それらの間にGOが必要な場合があります。 GOはSQLコマンドではなく、クライアントツールにreally a directiveであり、コマンドのバッチを区切ります。

+0

私が最初に説明したエラーメッセージを受け取ったときに私はそれについて読んでいましたが、実行しようとしていたクエリは文字どおり上記のクエリでした。CREATE TRIGGER文が最初の(そして唯一の)バッチのステートメント? – BordrGuy108

+0

私はSQuirrelSQLが最初にバッチに何か他のものを入れていると思います。 SQLプロファイラを使用して、実際に何が送信されているかを確認します。そしてSquirrel SQLでそれを無効にするか、バグレポートを提出するかどうかを確認してください。 –

0

SQL 2005 SP3(開発者版)に対してjTDS jbdc driverのv1.2.2を使用して、これをSquirrel SQL v2.6.8に複製できませんでした。

+0

興味深い。私はSquirrel SQL v2.6.8とSQL Server 2005も使用していますが、言及したドライバの代わりにMicrosoft SQL Server JDBC Driver 2.0を使用しています。多分ドライバーは責任を負うだろうか? – BordrGuy108