• ベストアンサー

今、何のストアドを実行しているか知りたい

タイトルの通り、現在実行中のストアドが何なのか知りたいです。 稼動しているのSQLServerでは、複数のストアドを実行しています。 その中で現在、どのストアドが実行されているのか確認したいのですが、 確認方法がわかりません。たぶん、、プロファイラ??を使いそうな・・・ぐらいだけ、予想していますが、よくわかってないです。 SQLServerのプロファイラの知識レベルですが、私、一度も使ったことがなく、知識に乏しい状態です。 そのためご存知の方、ご教示頂けると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • hono_bono
  • ベストアンサー率100% (1/1)
回答No.1

推察通り「Profiler」を利用すると簡単に確認可能です。  ※起動して「新規追加」→「トレース」を選びます。 参考URL: http://technet.microsoft.com/ja-jp/library/ms173757.aspx http://www.sqlpassj.org/tokushu/dba/01.aspx

yamachan_tomo
質問者

お礼

確認できました。ご教示、有難うございます。

関連するQ&A

  • SQLServer2005のストアドプロシージャのデバックの設定方法をご教示ください

    SQLServer2005でストアドプロシージャを作成しました。 VisualStudioを使用すればデバッグ(一行ずつ実行して、変数の中身や動作を確認)できるということですが、設定がうまくできません。 ストアドプロシージャ作成は初めてで、周りにも経験者がいないため解決策がわからない状態です。 ご存知の方、気がついたことがある方は、ぜひご教示ください。 ■■ マシン環境 ■■ OS:Windows2003Server DB:SQLServer2005 ■■ 試した方法 ■■ 1.DBサーバマシンのVisualStdio2005を使用 上記マシンに、SQLServer2005をインストールしたとき、  VisualStudio2005が自動的にインストールされたので これを使用することを考えました。 VisualStudio2005の「サーバーエクスプローラー」に、 今回作成したストアドプロシージャを表示するところまではできたのですが、 デバッグ実行できません。 メニューから「ストアドプロシージャのステップイン」を選択してデバッグウインドウを表示するらしいのですが メニューには、以下のものしか表示されません。  新しいプロシージャの追加 / 開く / 実行 ためしに実行すると、ストアドプロシージャは動作します (テーブルへのデータINSERTをストアドでコーディングしており、実行後に指定値が入っていたため) しかし、デバッグポイントを設定できず、ステップ実行もできません。 2.別マシンのVisualStdio2003を使用 私の開発マシンにはVisual Studio 2003が入っているため、 DBサーバマシンとリモートで接続して、上記と同様の設定を行いました (このVisual Studio2003はC#開発用にインストールしたものです)。 こちらは、メニューに「ストアドプロシージャのステップイン」が出ました。しかし……。 メニューから「ストアドプロシージャのステップイン」を選択してデバッグウインドウが表示されたときに、以下のメッセージボックスが出ます。 「SQL Server データベースが正しくセットアップされていないか、またはユーザーに master.sp_sdidebug を実行する権限がないため、ストアド プロシージャをデバッグできません。」 デバッグウインドウ上でデバッグポイントは設定できますが、 ストアドプロシージャを実行してもデバッグポイントでとまらず ステップ実行もできません。 (同様にINSERTしたテーブル値から、ストアド自体は動作していると判断) なお、1.2.共にSA認証でSQLServer2005にログオンしています。 SQLServer のデバッグできるのは、sysadminサーバロールを持つユーザだけらしいですが、 SA認証で使用しているユーザには「sysadmin」のサーバロールは設定しています。 ■■ 質問 ■■ 1) QLServer2005インストールで自動的にインストールされるVisualStudioでは、 ストアドプロシージャのデバッグはできないのでしょうか? それとも、SQLServer2005インストール時に、開発環境等の追加設定や、 別途VisualStudio2005をインストールする必要があるのでしょうか? それとも、別にSQLServer management Studioや構成ツール等で設定が必要なのでしょうか? または、メニューに「ストアドプロシージャのステップイン」を出す設定(方法)をご存知の方、ご教示をお願いします。 2) 「SQL Server データベースが正しくセットアップされていないか、またはユーザーに master.sp_sdidebug を実行する権限がないため、ストアド プロシージャをデバッグできません。」 このメッセージはどうすれば回避できるのでしょうか? SQL Server データベースが正しくセットアップされていないということですが、 これまで特に支障がないため問題はないと思っているのですが……。 検索で以下のサイトを見つけましたが、SQLServer2000のため参考になるかは疑問です。   http://support.microsoft.com/kb/839280/ja   http://support.microsoft.com/kb/886680/ja 以下のサイトは、どうすれば原因回避できるのかわかりませんでした(勉強不足を感じております)   http://msdn2.microsoft.com/ja-jp/library/ms164014.aspx master.sp_sdidebug を実行する権限の設定方法をご存知の方、ご教示いただけませんでしょうか? 3) Visual Studio以外で、SQLServer2005のストアドプロシージャをデバッグする方法がありましたらご教示ください。 変数の途中の値を一時テーブルにINSERTして確認するくらいしか方法はありませんでしょうか? 申し訳ございませんが、もしご存知の方、ご教示いただけませんでしょうか? なお、設定やマシン環境で記述不足等ありましたら、ご指摘いただければと思います。 以上です。よろしくお願いします

  • AccessVBAからのストアド起動について

    現在、Accessで元来の記述にストアド起動の1文を追加し、 SQLserver上のmasterデータベースに登録しているストアドを起動させようとしております。 起動方法として、xp_cmdshellを利用してみたのですが、 しかし、起動に必要なパラメータの受け渡しが上手くいかないため、動作が正常に行われません。 『』部は実際には定数が入っております。 VBA内容は以下の通りです。 ・既存箇所 set DB = createobject( "adodb.connection" ) DB.oprn "PROVIDER = SQLOLEDB.SERVER = "『サーバIPアドレス』","『ログインID』","『ログインパスワード』" ~~~(ここで開いたDB中のテーブル上のデータを読み取るなど実行) ・追加しようとしている記述(Null時はNz関数で""に置換) A = 「パラメータ1」 B = 「パラメータ2」 C = 「パラメータ3」 (これらは上記のDBからRecordsetで取得。必要な値が取得できることは確認済み) strsql= "EXEC MATSER..xp_cmdshell ’EXEC mastter..『ストアド名』 & A & B & C & "'" DB.Execute stersql sqlserver上で起動するときは EXEC mastter..『ストアド名』 'パラメータ1' ,'パラメータ2' ,'パラメータ3' で起動することが確認記できております。 既存部でパラメータ引き渡しの必要のないストアドは動作しているため、 パラメータの引き渡しに問題があると判断しておりますが、 何パターンか変更してもうまく動かないため、 アドバイスをいただければと思います。

  • VB6 + OO4O プロシージャの実行&複数行を受け取る方法

    VB6 + OO4O プロシージャの実行&複数行を受け取る方法 現在、VB6でOracleデータベースを操作しようと試みている最中で、 OO4Oで接続しています。 (表現誤っているかもしれません。。。) Oracleは今回初めてで、今まではSQLserverだったのですが、 SQLserverで、  1.ストアドを実行(パラメータあり)  2.レコードセット(複数行)を受け取る  3.ループで全件処理   ・・・ というような処理をしていました。 たとえば、あるテーブルの、ある条件に一致したレコード(複数あり)を全件取得 など。 「引数を渡してストアドプロシージャを実行し、複数行を結果として受け取る」ということがしたく、 Oracleでどのように実現させるかを調べてみたのですが、 「SQL文を記述し、受け取る」  例)strSQL = "select * from tbl"    Set OraDynaset = OraDatabase.CreateDynaset(strSQL, 0) というようなサンプルしか見つけられませんでした。 where句で条件を記述すれば同じなのかもしれませんが、 そういったこまごました記述をストアドプロシージャに記載しておき、 呼び出す際はパラメータだけ指定する、ということを想定しています。 ストアドを実行するサンプルは複数見つけたのですが、戻り値が1つのみか、戻り値なしのもので、 複数行を結果として受け取るようなサンプルが見あたりませんでした。 ストアド(PL/SQL)も作成してみたのですが、 単純に  select * from TBL; とするとエラーで、  select * BULK COLLECT INTO vTBl from TBL;  for i in 1 .. vTBl.count loop   -- 全レコードの項目「name」を表示する。   dbms_output.put_line(vTBl(i).name);  end loop; というように1件1件処理させていく方法しか見つけれませんでした。 Oracleのストアドは、今までのSQLServerの考え方はいけないのでしょうか? 調べるとしたら、どのような単語で調べたらよろしいでしょうか? 「VB6」「oo4o」「複数行」「プロシージャ」など、いろいろ努力はしたつもりなのですが。。。 ご指導よろしくお願いいたします。

  • SQLServer2005のストアドプロシージャで変数を配列で使用する方法をご教示ください

    タイトルの件。調査したのですが、変数を配列でとる方法(宣言の仕方や使用方法)が見つけられませんでした。 ご存知の方、ご教示いただけませんでしょうか? できれば使用方法が書かれた本やサイトをご紹介いただけると助かります。 それともSQLServer2005のストアドプロシージャでは変数を配列で使用することはできないのでしょうか? (そんなことはないと思うのですが、探しても出てこないのが不思議です。私の検索方法が悪いからだと思いますが) 以上です。よろしくお願いします。

  • 別ファイル(.sql)に記述したクエリの連続実行

    毎度お世話になっております。 現在、SQLServer2005EXPRESS,VisualSudio2008(C#)にて、 十数個の新しいストアドプロシージャと、 それを必要とするアプリを作成しております。 これらを配布先で実装するにはどうするのが最も(使用者にとって)容易か? 知恵をお貸しください。 アプリは実行ファイルをそのまま配布(インストーラー等)すれば 問題無いと考えていますが、ストアドプロシージャは配布先の サーバー管理者がDBに追加しなくてはいけません。 現在、ストアドを作成するためのSQL文を記述した "CREATE_01.sql"~"CREATE_10.sql"を用意していまして、 DB管理者はManagement StudioでDBにログインした状態で これら.sqlファイルを順番にダブルクリック&実行していけば ストアドの作成はできます。 ですが全部で10回も同じ操作をせねばいけません。 できれば「これ押すだけで後は待つだけ」くらいに容易な物にしたいのです。 "CREATE_01.sql"~"CREATE_10.sql"の中身は全てストアドのCREATE文 で、試しに1っの.sql内に実行したい順に CREATE PROCEDURE XXX_01 … AS (中略) CREATE PROCEDURE XXX_02 … AS (中略) CREATE PROCEDURE XXX_03 … AS (中略) …と、いった記述をしますと、使用変数等のエラーが多発し、 また10のSQL中でエラーが出ないように変数を振りなおす&確認する 時間を考えると効率的な方法ではなく思えます。 コマンドの連続実行、というと.batファイルが真っ先に思い浮かぶの ですが、.bat 入門 SQLServer 等のキーワードで検索をしましたが batの用法が幅広いからでしょうか? 現状の私に活用・理解出来るサイト等を見つける事が出来ませんでした。 初歩的な質問をしているかもしれませんが、どうぞよろしくお願いします。

  • ストアドの一時テーブル格納について

    ストアドの一時テーブル格納について SQLServer2000を使用しています。 sp_help_jobの結果セットを一時テーブルにいれたく、 以下のようなスクリプトを作成しています。 -------------- create table #tbl (  列名  ・  ・  ・ ) Insert into #tbl msdb.dbo.sp_help_job -------------- スクリプトを実行すると、以下のエラーでInsertに失敗します。 「メッセージ 8164、レベル 16、状態 1、プロシージャ sp_get_composite_job_info、行 72 INSERT EXEC ステートメントは入れ子にはできません。」 上記の改善策についてアドバイス頂けないでしょうか。 よろしくお願いします。

  • vbからストアドプロシージャ内発生のエラーメッセージ取得

    タイトル通りの質問です。例えば、重複キーエラー時等はクエリアナライザを使用してストアドプロシージャを実行した場合に、「PRIMARY KEY 違反、制約 'PK_xxx': オブジェクト 'tbl_xxx' には重複したキーは挿入できません。」という様なメッセージが返されます。このメッセージをVB側に返したいのですが、方法がわかりません。質問は以下の3つです。 1)上記の様なエラーの場合は、vb側でon error goto&errorsコレクションでエラーハンドリングは出来ないのでしょうか?(現状トラップしてくれません。) 2)出来ないのであれば、ストアド内でエラーメッセージを取得して、outputパラメータで返却するしかないのかなと思っております。 3)なぜか、create tableで既にあるテーブルを指定してわざとエラーを発生させた直後に@@errorでvb側にリターン値を返却してもempty値として返されます。なぜでしょう。 以上、3点について教えて下さい。(何れかでも構いません)よろしくお願いします。 環境:win2000,sqlserver2000

  • ストアドプロシージャの戻り値が取得できない

    ストアドプロシージャの戻り値が取得できない ストアドプロシージャ内でSelectとUpdateを行い、設定した戻り値をリターンしたいのです。 ついでにSelectとした複数行の結果の読み込みもしたいのですが。 Dim cmd As New System.Data.SqlClient.SqlCommand Dim i As Integer Dim readerA As System.Data.SqlClient.SqlDataReader cmd.CommandType = Data.CommandType.StoredProcedure cmd.CommandText = "SP名" cmd.Parameters.Add("A", System.Data.SqlDbType.Int) cmd.Parameters("A").Direction = System.Data.ParameterDirection.ReturnValue readerA = cmd.ExecuteReader() i = cmd.Parameters("A").Value if (i = 0) Then 処理 End If While readerA.Read() 処理 End While 上記でSelectした結果をreaderA("カラム名") で読みこめているのですが、戻り値Aの値が取得できていません。 ウォッチ式でcmd.Parameters("A").Valueを見るとNothingになっています。 ちなみに、違うストアドを実行しているところでは戻り値は取得できています。。。 ストアドがおかしいんでしょうか。Selectの取得結果も見ようとしているのがまずいのでしょうか。 環境はvb.net、SQLServer2005です。

  • SQLServer2008とMySQL5.0の共存できますか?

    SQLServer2008とMySQL5.0の共存できますか? 現在WindowsServer2008R2のPCでSQLServer2008を利用したソフトを稼働しています。 新たにMySQL5.0を利用するソフトを上記PCにインストールしたいと考えていますが、同一PC上でSQLServer2008とMySQL5.0は稼働可能なのでしょうか。 ご存知の方いらっしゃいましたらご教示ください。

  • ストアド内で動的にSQLを作る際のLIKE演算子シングルクォーテーションの数

    現在Access2003とSQLServer2005ExpressEditonで勉強中の者です。 ストアドプロシージャを動的に作成したいと思い 以下のページを参考に、NorthwindCS.adpはダウンロードせず 自前で簡単に環境を作ってストアドプロシージャをつくりテストに成功しました。 http://support.microsoft.com/kb/286828/ja そこで「もし検索対象のテーブルに摘要欄があり、"未"を含む検索をしたい場合はどうすればよいか」と思い、摘要フィールド(Varchar)を作成してストアドプロシージャに変数@TEKIYO(Varchar)を作り、以下の行を足しました。 ---------------------------------------------------------------- --摘要の検索条件がNULLかどうかを確認します。 --ここに値が含まれている場合WHERE句を作成します。 IF @TEKIYO IS NOT NULL BEGIN IF @SQLSTRING IS NOT NULL BEGIN SELECT @SQLSTRING = @SQLSTRING + ' AND TEKIYO LIKE ''%''' + @TEKIYO + '%''' END ELSE BEGIN SELECT @SQLSTRING = 'WHERE TEKIYO LIKE ''%''' + @TEKIYO + '%''' END END ---------------------------------------------------------------- adpの検索フォーム摘要欄に「未」と入力し実行ボタンを押すと「実行時エラー102 '未'付近に不適切な構文があります」と出てしまいました。 シングルクォーテーションの打ち方が間違っているのだろうと色々調べたり、打ち方を変えてみたりしたのですが、解決できず悩んでおります。 正解はどうなのでしょうか?教えてください。 なにとぞよろしくお願いいたします。