1

読み取り専用のテキスト ボックスがある SelectSQLQueryBuilder があります。ユーザーがデータを入力すると、文字列が生成されます!! この文字列が SQL ステートメントであるかどうかを確認する必要があります。

SQL SERVER MGMT STUDIO では、実行のすぐ隣に、ステートメントを実行せずに実行するボタンがあります。そうする.NETのクラスはありますか? この文字列を検証するにはどうすればよいですか !! 助けてください!!

4

3 に答える 3

2

このようにSQLServerにステートメントを送信すると

set PARSEONLY ON
your statement

サーバーはステートメントを解析しますが、実行はせず、エラーを返します。合格した場合、それが有効なステートメントであることがわかります。

一部の種類のエラーは PARSEONLY では検出されないため、実際に実行されるかどうかはわかりません。たとえば、SQL は有効であるが、データ変換や制約違反などの不正な操作を引き起こすエラーです。

したがって、.Net にはクラスが存在しない可能性がありますが、SQL に set コマンドを追加することで parseonly を実行できます。これは SQL Management Studio で使用される機能だと思います。SQL Mgt. Studio は、サーバー接続がない限りステートメントを解析できません。

PARSEONLY は接続レベルの設定です。そのため、オンにした場合、実際にその接続で SQL を実行したい場合は、再度オフにする必要があります。

于 2012-05-03T06:07:33.973 に答える
1

Transact-SQL については、 TSql100Parser Classを使用して調べることができます。

また、 General SQL Parserという製品もあります。これは無料ではありませんが、しばらく前から存在しています。

于 2012-05-03T06:08:51.617 に答える
0

一般に、問題は SQL ステートメントの解析にあります。言語の複雑さと多数のバリエーションのために、これはかなり難しいことがわかりました。

これらの複雑さを処理し、SQL- http://sqlparser.com/を解析する優れたライブラリが存在します。

于 2012-05-03T06:07:58.143 に答える