2

SQL Server 2012 データベースに対して実行されている Visual Studio 2012 内で SSIS を使用しています。OLE DB ソースを使用すると、次のエラーが表示されます。この OLE DB ソースは、以下に示すものと同様の SQL を実行しています。最後に GO ステートメントを削除すると、SSIS パッケージは正常に実行されます。

SQL Server Management Studio 内では、GO ステートメントが存在するかどうかに関係なく、SQL は正常に実行されます。

OLE DB ソースは、データ フロー タスク内で実行されています。

この GO が SSIS パッケージ内で実行されたときにこのエラーが発生するのはなぜですか? また、それに対して何をすべきですか? どうもありがとう。

エラー:

[SQL 変数 [33] からの OLE DB ソース] エラー: SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80040E14。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 説明: "ステートメントを準備できませんでした。". OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 説明: "'GO' 付近の構文が正しくありません。".

SQL:

/* Test statement */
SELECT 'test' as N'test'
GO
4

4 に答える 4

11

GOはバッチ ターミネータであり、エラー メッセージが示すように OLE DB ソースで使用することは正しくありません。

于 2013-03-28T20:43:18.880 に答える
2

あなたのSQLは次のとおりです。

SELECT 'test' as N'test'
GO

GOはコマンド ラインに関するものです。OLE を使用して SQL をサーバーに渡す場合は削除してください。
これだけを試してください:

SELECT 'test' as N'test'
于 2013-03-28T20:44:09.057 に答える
0

スクリプトからすべての「GO」を削除すると、問題が解決します。

詳細については、これを確認してください。

https://agilewebhosting.com/knowledgebase/63/SQL-Error-Incorrect-syntax-near-andsharp039GOandsharp039.html

マトリックス

于 2014-08-27T20:57:04.233 に答える
-2

推奨されるベスト プラクティス: t-SQL ステートメント ターミネータとしてセミコロンを使用します。このバージョンの SQL Server ではほとんどのステートメントでセミコロンは必要ありませんが、将来のバージョンでは必要になる予定です。

http://msdn.microsoft.com/en-us/library/ms177563.aspx
于 2013-03-28T22:31:52.163 に答える