0

ASP.net で Web ページを作成していますが、クエリ アナライザーと同じように動作するはずです。基本的にはSQLコマンドを入力するテキストエリアと実行ボタンがあります。

次のように、SMO を使用してデータベースでコマンドを実行しています。

//Create object  SMO
Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(new Microsoft.SqlServer.Management.Common.ServerConnection(oConn));

//To execute the command
server.ConnectionContext.ExecuteNonQuery(tbx_cmd.Text);
//OR
myDataset = server.ConnectionContext.ExecuteWithResults(tbx_cmd.Text);

問題は、textarea コマンドには、ストアド プロシージャ (GO のステートメントを含む) や、Query Analyzer と同様に、結果セットを返す select コマンドなど、何でも含めることができることです。

しかし、GO ステートメントがある場合、ExecuteNonQueryメソッドを使用してのみクエリを実行できます。ExecuteWithResultsメソッドを使用すると、GO ステートメントが原因でエラーが発生します。

結果セットを利用できるようにしたい場合は、もちろんExecuteWithResultsメソッドしか使用できません。

同じコマンドテキストを同時に実行する方法を知っている人はいますか?

ありがとうございました!

4

1 に答える 1

0

コマンドを分割し、あるコマンドが終了して別のコマンドが開始する場所を認識できるようにするには、コードを記述する必要があります。いずれにせよ、それは単純な作業ではありません。

アプリでは、すべての SQL コマンドがセミコロンで終わるというルールを作成し、string.split() を使用してそれを複数の文字列に分割し、それぞれをコマンドとして扱うことができます。もちろん、それはユーザーがこれを適切に使用することに依存します。

ユーザーに依存すると言えば、これはあなたまたは他の信頼できる人だけが使用するものですか? そして、貴重なデータを指していない何か? 私が若いプログラマーであり、それ以上のことを知らなかったとき、ミッション クリティカルなデータベース用にそのようなツールを作成しました。

Delete From MyMissionCriticalTable

そして、私はそれを修正するのにどれくらいの時間を費やします...

私はあなたの経験レベルが分からないので、あなたができるかどうかを心配しすぎる前に、あなたがやるべきだと考えるようにあなたに促すとき、私は侮辱するつもりはありません.

于 2010-03-26T22:16:15.570 に答える