• 締切済み

データベース SQL のセッションIDについて!!

Select @@spid as セッションID このSQL文で出来ることを教えてください。 他のサイトで @@SPID この変数(サーバー プロセス ID)は、Pervasive PSQL 接続のシステム スレッドの ID を示す整数値を返します。 例は、402 などの整数の ID と書いてありました。 また、セッションIDについてもいまいちわからず調べたのですがjavaのセッションにつて とかが、いっぱい出てきました。セッションとセッションIDは、別物なのでしょうか? セッションIDとは、SQL文を実行した時の番号みたいなものでしょうか? よろしくお願いします。

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

セッション番号はSQLを実行するときの番号というよりも、SQL Serverとの間に確立されている接続の番号というふうに理解してください。 もちろん、SQL Serverにログインするたびに割り当てられるのですが、1ログイン1個割り当てられるわけではありません。 たとえば、SSMSを開いてクエリを実行したとすれば、左の方に「オブジェクトエクスプローラ」を表示するのに1つ、クエリ実行画面を1つ開くと1つ、という風に割り当てられていきます(それぞれ1セッション使っているわけです)。Accessでリンクテーブルなどを使ってアクセスすると、1つのリンクテーブルにアクセスするたびに1セッション割り当てられます。 上記以外にも、SQL Serverデータベースエンジン自体も常時もしくは定期的にSQL Serverとのセッションを使っています。 そのあたりの情報は「利用状況モニタ」もしくは「sys.dm_exec_sessions」というシステムビューで確認できます。

関連するQ&A

  • セッションID(?)の調べ方

    初めてこちらで質問させていただきます。 PostgreSQLを使い始めました。(Ver. 8.3.5 を使用しています。) 今やろうとしている事は、MS SQL2000 のストアド・プロシージャを PostgreSQL用に書き換える事です。 MS SQL2000 用のストアド・プロシージャに、 select @lockid=rtrim(ltrim(loginname))+'@'+rtrim(ltrim(hostname)) from master dbo.sysprocesses where spid=@@spid というSQL文があり、 どのようにこれ(現在アクセスしているユーザIDを調べる) をPostgreSQL上で実現するかで頭を悩ませています。 問題は、現在のユーザーのプロセスのセッション ID(SQL2000 では @@SPID) をPostgreSQLでどのように調べるかなのですが、マニュアルのシステムカタログ の辺りを目を通してるのですが、なかなか見つけられず困っています。 ここを読め。や、こういうのを使うんだ。など解決への糸口、光を指さして、 情報を教えていただける方はいないでしょうか?どうか宜しくお願いします。

  • Oracleで今接続しているセッションをSQLで知りたい。

    こんにちは Oracleで自分がどのセッションIDで接続しているかを調べる方法を教えてください。 条件:同一端末より複数プロセス(同一EXE)※から別セッションで接続しています。 ※複数スレッドで別セッションで処理が並列で行われる。

  • JavaでのSQL文について教えてください

    int row_count = smt.executeQuery("select SYAIN_NAME from SYAIN_MASTER where SYAIN_ID='"+ SYAIN1 +"'"); 「SYAIN1」は、変数です。 変数を使ったときのSQL文を書くときの 「"」の位置などがわかりません。 この文だとエラーが出てしまいます。 どのようにすればいいのか、わかる方教えてくださいm(__)m

    • ベストアンサー
    • Java
  • セッション情報の保持について

    ログイン画面(https)より 1.ID、PASSを入力し、ログインする 2.JAVAで入力されたID、PASSをセッション変数にセット 3.メニュー画面(http)を開く。そのときセッション変数を  確認してNullの場合はログイン画面に戻る といったシステムを作成しています。 しかしSSLの問題なのか、ブラウザを開いて1回目のログイン時は メニュー画面を開いたときにセッション変数がNullになっています。 2回目以降は問題なく処理されるのですが... SSLでセッションがクリアされるとかいうことはあるのでしょうか? よろしくお願いします。 OS:FreeBSD 4.7 Apache:1.3.33

  • プログラミングPHP内でのSQL文に関するご質問

    プログラミングのPHPの学習中です。 掲示板に関するプログラミングで下記の様なソースコードが記述されていました。 (usersテーブルのusernameとpasswordとセッション変数のusernameとpasswordが等しいという条件の下、情報を抽出するというSQL文です。) $sql = "select * from users where username = '".$_SESSION["username"]."' and password='".$_SESSION["password"]."'"; 上記ソースコードでご質問です。 '".$_SESSION["username"]."'と、'".$_SESSION["password"]."'の箇所で、セッション変数をダブルクォーテーションで囲んでいるのは、変数展開するためと理解しました。また、更にシングルクォーテーションで囲むのは、変数展開したものを文字列として扱う為と理解しました。しかし、セッション変数の両隣にあるピリオドの意味がよく分かりません。文字列と変数を結合する為だと思うのですが、府に落ちません。 どなたかお教え頂ければ幸いです。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • セッション

    phplibを使わないでユーザ認証を用いたwebサイトを作ろうと思います。 shinki.php => login.php => contents1.php=> contents2.php .... のような流れの構造で、直接contents1.phpなどに入られないようにセッションを使用したいと思います。 ユーザが持っているセッション名と、サーバー側のセッション名が一致するという条件だけでログインしたユーザと考えていいのでしょうか? 現在はこのような感じになっています。 まずshinki.phpでユーザー登録します。この時ユーザ情報と暗号化されたパスワードをDBに保存。 login.phpでユーザIDとパスワードを入力し、DBのデータと一致するとcontents1.phpに進む。この時セッションを発行し、idと暗号化されたパスワードをセッションに記憶させる。 contents(1 | 2).phpのコード <? session_start(); // PostgreSQL 接続 if (!($cn = pg_connect("dbname=****"))){die;} // SQL文 $sql = "select * from ***** where id='$_SESSION[id]'"; if (!($rs = pg_exec($sql))) {die;} $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $array = pg_fetch_array($rs, $i); } // セッションのパスワードとデータベースのパスワードが一致 if($_SESSION[pass] == $array['pass']){ login_html(); }else{ print "ログインしてください。"; } // PostgreSQL 切断 pg_close($cn); function login_html(){ print "<html><head><title><title></head><body>"; .... .... } ?> このような構造には、セキュリティー的な問題はあるのでしょうか? おそらくいろいろ問題があると思いますので、ご指導お願いします。 一般的なパスワード制のページではどのような処理をしているのでしょうか? よろしくお願いします。 os:linux httpd:apache1.3.27 postgreSQL php4.x.x

    • ベストアンサー
    • PHP
  • c#でデータベースに接続して、sqlリソースファイ

    c#でデータベースに接続して、sqlリソースファイルに記入したselect文を使って、情報を取得する処理を作っているのですが、select文が、 select * from [DB].[スキーマ].[テーブル] where userID =‘11111111’ と、なっているのを、DBとuserIDは固定値ではないので、 select * from @DB.[スキーマ].[テーブル] where userID = @ID にしてリソースファイルに記入し、 c#側で@DBと@IDにパラメータ処理をして、情報を取得したいのですが、エラー発生してしまいます。 エラー内容 .の付近に不適切な… 恐らく@DB部分だと思うのですが、修正方法が分かりません。 分かる方、教えて下さるとうれしいです。 宜しくお願い致します。

  • JSP データベースへの数回の接続

     いつもお世話になっております。  今私は、JSPからデータベース(Access 2003)へデータを追加・検索をしようとしています。  データベースにデータを追加するため、データベースを接続する記述及び追加をする記述を書き、データを追加していきます。  その下の記述にHTMLが入り、HTML文の後に今度はデータベースに検索をかけてデータを取得し、その記述の下に更にHTML文を記述し取り込むといった流れでプログラムを書いております。 ■HTML文 ■データベース追加文 ■HTML文 ■データベース検索文 ■HTML(データベースからの取得データもいれる)  しかし、データベースへは、追加はされているのですが、検索の記述の部分がまったく読まれておらず、ジャンプされており、どうしても検索ができません。  JSPからデータベースへの接続は初めてですので、わからないことも多く、もしかしたらJSPでは数回のデータベースへの接続はできないのかな?と思いながら、最終的にこちらで伺い参りました。  プログラムが長いため、HTML文を除き、データベースの部分だけ下に記述させていただきます。その記述の中でのこの変数はどこからもってきているのかな?と思われる方もいらっしゃるかと思いますが、しっかり値が入っておりますので心配ございません。 <%@ page import="java.sql.ResultSet"%> <%@ page import="java.util.*" %> <%@ page import="javax.servlet.*" %> <%@ page import="java.sql.SQLException" %> <%@ page import="java.sql.Connection" %> <%@ page import="java.sql.*" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.Calendar " %> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con =null; con = DriverManager.getConnection("jdbc:odbc:QUIZDB"); Statement sql; sql = con.createStatement(); Calendar cal = Calendar.getInstance(); Integer nen=cal.get(Calendar.YEAR); Integer tu=cal.get(Calendar.MONTH)+ 1; Integer hi=cal.get(Calendar.DATE); String userName=(String)session.getAttribute("userName"); Integer userId=(Integer)session.getAttribute("userId"); sql.executeUpdate( "INSERT INTO Seiseki(氏名,ID,ジャンル,正解数,クイズ日付)"+"values('"+userName+"','"+userId+"','"+aa+"','"+seikaiten+"','"+nen+"/"+tu+"/"+hi+"')"); sql.close(); %> <■HTML文がはいります> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection db =null; db = DriverManager.getConnection("jdbc:odbc:QUIZDB"); String sq = "select * from Seiseki where(氏名= '"+userName+"') and (ID = '"+userId+"')"; Statement st; st = db.createStatement(); ResultSet res; res = st.executeQuery(sq); if(res.next()){    String Name=res.getString(1);    String Id=(String)res.getString(2);    Integer id =Integer.parseInt(Id); String jyanru=res.getString(3); String seikai=res.getString(4); int kazu =Integer.parseInt(seikai); String hizu=res.getString(5); } st.close(); %> <■HTML文が入り、変数を入れて表示させます> 以上となります。どんな小さなことでも構いませんので、お手数ですがアドバイス宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • SQL文について質問させて頂きます。

    いつもお世話になっております。いろいろSQL文の本を読んだのですがわからないので今回もよろしく お願い致します。 SELECT DISTINCT * FROM bukken WHERE (id IN (SELECT fid FROM fudou_kodawari WHERE kid IN (1,4))) というSQL文があるのですが、これだと1,4が1つでも含まれるリストが出てくるのですが1,4が完全に一致しないと出てこないようにするにはどのようにSQL文を変更すれば良いのでしょうか? 何卒よろしくお願い致します。

  • SQLインジェクションの対策

    SQLインジェクションの対策 いつもお世話になっております。 SQLインジェクションの対策についてお伺いいたします。 もともと↓のようなSQL文だったものを "select user_id from table where user_id='{$user_id}'" 以下のように変更しました。 "select user_id from table where user_id='" . mysql_real_escape_string($user_id) . "'" 以下のように実行されていたSQL文は select user_idfrom table where user_id='10001' and 'a'='a' ↓のようにエスケープ処理して実行されるようになりました。(入力値は「10001' and 'a'='a」) select user_id from table where user_id='10001\' and \'a\'=\'a' ですが、phpMyAdminで実行してみるとどちらのSQL文も同じ結果が取得できてしまいます。 これでは対策になっていないと思ったので、質問させていただきました。 (magic_quotes_gpcはoffに設定しています。) なにか他の方法がいいのでしょうか。 ご教示よろしくお願いいたします。 <環境> PHP 5.1.6 MySQL 5.0.45

    • ベストアンサー
    • PHP