こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLServer 列の「説明」の取得について

SQLDMOオブジェクトを用いて、テーブルの列挙、列の列挙までは行なえるようですが、列の「説明」の項目の取得は行なえないのでしょうか?

SQLDMOでなくても、何か取得出来る方法があればご教授お願いします。

--サンプル

Public Function Main()

Dim objServer As SQLDMO.SQLServer
Dim objDatabase As SQLDMO.Database
Dim objTables As SQLDMO.Tables
Dim curTable As SQLDMO.Table
Dim curCOl As SQLDMO.Column

Const DB_NAME As String = "local"
Const DB_USER As String = "sa"
Const DB_PASSWD As String = "password"
Const DB_USE As String = "hoge"


' オブジェクト作成
Set objServer = CreateObject("SQLDMO.SQLServer")

' 接続
Call objServer.Connect(DB_NAME, DB_USER, DB_PASSWD)

'DB選択
Set objDatabase = objServer.Databases(DB_USE)

'テーブル一覧
Set objTables = objDatabase.Tables

' テーブルの列挙
For Each curTable In objTables

If curTable.SystemObject Then
Debug.Print curTable.Name & " [system]"
Else
Debug.Print curTable.Name

'列名の列挙
For Each curCOl In curTable.Columns
Debug.Print curCOl.Name

'*!ここで列の説明は取得出来ないのでしょうか???
Next

End If
Next

' 切断
Call objServer.Disconnect


End Function

投稿日時 - 2005-10-11 17:37:36

QNo.1706893

暇なときに回答ください

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

VBAも久しく触ってないですし、
SQLDMOは使用したことはないので
コードはよく判りません。

SQLDMOの列の説明とEnterpriseManagerのデザイン画面の列の説明が
同じものをさしているのであれば以下のクエリで取得できます

select colid,col.[name] as column_name,value as comment from
(select [id],[name] from sysobjects) as tbl
join
(select [name],[id],colid from syscolumns) as col
on tbl.[name]=@TABLE_NAME and tbl.[id]=col.[id]
left join
(select [id],smallid,[value] from sysproperties) as cmt
on col.[id]=cmt.[id] and colid=smallid
order by colid


ただし権限調査やパフォチュはやってないのはご勘弁!

投稿日時 - 2005-10-14 13:12:05

お礼

ありがとうございます。なんとか記述の方法で取得することが出来ました!

投稿日時 - 2005-10-20 09:37:24

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問