- PR -

ストアドプロシジャーで使用しているテーブル名の取得方法

1
投稿者投稿内容
nds053
会議室デビュー日: 2003/04/22
投稿数: 10
投稿日時: 2005-03-10 13:18
お世話になっております

SQLServer2000を使用しております

ストアドプロシジャーの管理表を作成しておりまして、
ストアドプロシジャーで使用しているテーブル名をSQLにて
取得する方法を調べております。

以下のSQLでストアドプロシジャー名、テーブル名は取得できるんですが
Select 'Name' = o.name,
'Owner' = user_name(uid),
'Object_type' = substring(v.name,5,31)
From sysobjects o, master.dbo.spt_values v
Where o.xtype = substring(v.name,1,2) collate database_default
and v.type = 'O9T'
and substring(v.name,5,31) In ('user table','stored procedure')
Order by Object_type desc, Name asc

上記のSQLで取得できたストアドプロシジャー名を元に、
ストアドプロシジャーの中身を取得しようとしているのですが
その方法がまだわかっておりません…

それとも、もっと良い方法があるかもしれません

ご存知の方がおりましたら、お教え下さい
よろしくお願いします。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-03-10 13:28
今日は。
引用:

以下のSQLでストアドプロシジャー名、テーブル名は取得できるんですが


って事はそれなりの権限もたれてるんですよね?
Enterprise Managerからデータベース選んで、ストアドプロシージャ選択して
該当の物をダブルクリックすれば内容表示されますよ 
 
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2005-03-10 14:06
msoです。

引用:

ストアドプロシジャーの管理表を作成しておりまして、
ストアドプロシジャーで使用しているテーブル名をSQLにて
取得する方法を調べております。

以下のSQLでストアドプロシジャー名、テーブル名は取得できるんですが
Select 'Name' = o.name,
'Owner' = user_name(uid),
'Object_type' = substring(v.name,5,31)
From sysobjects o, master.dbo.spt_values v
Where o.xtype = substring(v.name,1,2) collate database_default
and v.type = 'O9T'
and substring(v.name,5,31) In ('user table','stored procedure')
Order by Object_type desc, Name asc

上記のSQLで取得できたストアドプロシジャー名を元に、
ストアドプロシジャーの中身を取得しようとしているのですが
その方法がまだわかっておりません…

それとも、もっと良い方法があるかもしれません

ご存知の方がおりましたら、お教え下さい
よろしくお願いします。




良い方法かわかりませんが、
http://sqldigger.bdsweb.be/
というツールもあります。
英語なのでちょっと辛いかも知れませんが、
なんとかなると思います。
nds053
会議室デビュー日: 2003/04/22
投稿数: 10
投稿日時: 2005-03-10 14:11
早速のお返事ありがとうございます

[引用]
>って事はそれなりの権限もたれてるんですよね?
>Enterprise Managerからデータベース選んで、ストアドプロシージャ選択して
>該当の物をダブルクリックすれば内容表示されますよ

権限はもっております
個々のストアドプロシージャはNAOさんの方法で見られるのですが、
DBを指定してそこにあるストアドプロシジャーのすべて内容をSQL文で取得して
そのデータをテーブルに保存できればなと思いまして^^;>

例えば、以下のテーブルにストアド情報のデータを取得する
テーブル名:STORED_TABLE
・ストアド名 Varchar(50)
・データ nText <--- ここにストアドの内容を登録する
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-03-10 14:25
今日は。

exec sp_helptext [プロシージャ名]

で中身は表示できます。
_________________
Inspired Ambitious
ISMS Assistant Auditor
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-03-10 14:47
ん? ストアドの全文を取り出して自分で構文解析してテーブル名を切り出していくの?

ストアドで使われているテーブル名を知りたい、つまり従属関係を知りたいだけなら、sp_MSdependencies が使えるけど。どうよ? ちなみに Books Online には載っていないようなので、SQL プロファイラを起動しておいて、エンタープライズマネージャから、テーブルを選択して 従属関係の表示 を選んでみて。sp_MSdependencies の使い方が分かると思う。
nds053
会議室デビュー日: 2003/04/22
投稿数: 10
投稿日時: 2005-03-10 14:50
NAOさん、msoさんご回答ありがとうございます

sp_helptextで出来そうです

msoさんにご紹介してもらった「SQL Digger」ツールは翻訳が必要みたいなので
時間をかけて調べてみたいと思います。

どうもありがとうございました


[ メッセージ編集済み 編集者: nds053 編集日時 2005-03-10 14:52 ]
1

スキルアップ/キャリアアップ(JOB@IT)