none
システムデータベースのテーブルをアプリで使用できますか? RRS feed

  • 質問

  • お世話になります。

    かなり阿呆らしい質問ですが、助けてください。

    Windows 2003Server上で動く(DBはSQL Server 2000)システムの環境まわりのメンテを依頼されています。

    (システムの中身はソースも含めてノータッチです)

    このシステムで、ある画面から入力されたデータを調べていたチームから、入力データが行方不明

    (SQL Server上に該当するテーブルも列も見当たらない)だと申告がありました。

    業務のデータベース内には確かに見当たらないので、システムデータべース(master、model、msdb…)内にテーブルを隠してないかと

    思い(なんのために?)、調べました(別システムのSQL Server2000と比較)が余計なテーブルの混入はありませんでした。

    システムデータベースには隠れていなかった旨を報告しましたら、上長から「テーブルの中身も確認したんだろうな」と突っ込まれ、

    レコードの確認も行う羽目になりました。

    そもそも、「システムテーブルをアプリがいじれるのか?」とか「アプリが勝手にいじったら、まともに動かなくなるのでは?」とか

    思いますが、問答無用です。

    別システムのDBシステムのシステムレコードを比較するのなら、違っていて当たり前だと思います。

    なんか愚痴のようになってしまいましたが、ご存知の方いらっしゃいましたら、お願いします。

    2017年3月14日 10:02

回答

  • 権限さえあれば、システムデータベース内にテーブルを作成し、そこにデータを読み書きすることは可能です。
    SQL Serverに接続しているユーザーの権限を調べれば、システムデータベースへの読み書きが可能か判断できると思います。

    >このシステムで、ある画面から入力されたデータを調べていたチームから、入力データが行方不明

    >(SQL Server上に該当するテーブルも列も見当たらない)だと申告がありました。

    ソースを調べられるのであれば、どのサーバーのどのデータベースのどのテーブルに読み書きしにいっているかはわかるはずです。
    もしどうしてもわからなければ、プロファイラというSQL Serverのツールがありますので、その画面からデータを入力した際に、どのようなSQLが投げられているか確認されると良いと思います。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年3月15日 0:54

すべての返信

  • 権限さえあれば、システムデータベース内にテーブルを作成し、そこにデータを読み書きすることは可能です。
    SQL Serverに接続しているユーザーの権限を調べれば、システムデータベースへの読み書きが可能か判断できると思います。

    >このシステムで、ある画面から入力されたデータを調べていたチームから、入力データが行方不明

    >(SQL Server上に該当するテーブルも列も見当たらない)だと申告がありました。

    ソースを調べられるのであれば、どのサーバーのどのデータベースのどのテーブルに読み書きしにいっているかはわかるはずです。
    もしどうしてもわからなければ、プロファイラというSQL Serverのツールがありますので、その画面からデータを入力した際に、どのようなSQLが投げられているか確認されると良いと思います。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年3月15日 0:54
  • trapemiya 様

    回答ありがとうございました。

    業務からのログインユーザは、SystemAdministratorサーバーロールを持っているので、滅茶苦茶怪しいのですが、

    どうもデータは、業務データベースの既存のテーブル内に分散してあるらしいとの調査結果があり、システムデータベース内の

    捜索は終了となりました。

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

    また、お騒がせしました事、大変申し訳ありませんでした。

    2017年3月15日 8:18