2017-05-23 4 views
0

を使用しており、クエリにNOLOCKを含むselectステートメントを実行しようとしています。HSQLDBを使用してNOLOCKを使用するステートメントでSQL文法が正しくない

ステートメントが実行されると、BadSqlGrammarExceptionがスローされます。

コマンドがSQL Serverで完全に正常に実行されるため、この問題を回避する方法はありますか?

+1

HSQLDBは​​NOLOCKをサポートしていません。あなたの質問にそれが必要な場合は、実際のものに対してテストを実行する必要があります(SQL Server) –

答えて

0

a_horse_with_no_nameは彼のコメントで正しいです:

HSQLDBは​​NOLOCKをサポートしていません。あなたの文で、あなたは本物(SQL Server)のに対してテストを実行する必要があることが必要な場合

これを明確にするため、NOLOCKが動作するようにどのようにデータベースへのヒントを指定してSQL Serverの特定のキーワードです。

クエリが共有読み取りロックを発行しないようにするために使用できるSQL Serverのテーブルヒントです。これは、独自のタグをスタックオーバーフローさえしています。クエリが他のクエリをブロックしないようにするために頻繁に使用されますが、読み込みやその他の潜在的なデータ問題の影響を受けやすくなります。

したがって、このキーワードを含むSQLクエリはHyperSQLには有効ではありません。あなたは何ができるか

は次のとおりです。(上記のコメントで指摘したように)

  • は、SQL Serverインスタンスに対してテストを実行します。
  • SQL文をリファクタリングして、SQL Serverの仕様を使用しないようにします。この場合は、NOLOCKを使用しないようにする必要があります。これがあなたのアプリケーションにどのように影響するかは、それ以上の知識がなければ言うことができません。サイドノートとして

、HyperSQL fully supports the SQL specification

HyperSQL 2.xのは、SQL標準92、1999、2003、2008年と2011年

によって定義されたSQLの方言をサポートしています
関連する問題