[解決済み] SQL ServerからADOを使ってビュー定義を取得する方法はありますか?
質問
ADO 接続を使用して、SQL サーバー上でホストされているデータベースからカラム定義を抽出することに成功しました。
OpenSchema()
呼び出しを使用して、SQL サーバー上でホストされているデータベースから列の定義を抽出することに成功しました。これまでのところ、とても順調です。
上記のテーブルとの主なやりとりは、複数のビューを使用して行われます。
OpenSchema()
はテーブルの列の定義を返すのと同じ方法でビューの列の定義を返すことができますが、重要な情報が欠落しています。
ADOX Catalog Views を使用してビューを作成するために使用した SQL コマンドにアクセスしようとしましたが、使用している SQL Server 用の OLEDB ドライバーはこの機能をサポートしていないようです。
ADO を介してビュー構成のこの情報を取得する方法はありますか?
どのように解決するのですか?
SQL Server のバージョンは?
SQL Server 2005 以降の場合、ビューの作成に使用した SQL スクリプトは以下のように取得することができます。
select definition
from sys.objects o
join sys.sql_modules m on m.object_id = o.object_id
where o.object_id = object_id( 'dbo.MyView')
and o.type = 'V'
これは、ビューを作成/変更するために使用されたスクリプトを含む単一の行を返します。
テーブルの他の列は、ビューがコンパイルされた時点で配置されているオプションについて教えてくれます。
注意事項
-
ビューがALTER VIEWで最後に修正された場合、スクリプトはCREATE VIEW文ではなくALTER VIEW文になります。
-
スクリプトは、作成されたときの名前を反映します。ALTER VIEWを実行した場合、または、CREATE VIEWでビューを削除し再作成した場合のみ、この名前は更新されます。ビューの名前が変更された場合(例えば
sp_rename
によって)ビューの名前が変更されたり、所有権が異なるスキーマに移った場合、戻ってくるスクリプトは元のCREATE/ALTER VIEWステートメントを反映したものとなり、オブジェクトの現在の名前は反映されません。 -
いくつかのツールは出力を切り捨てます。例えば、MS-SQLコマンドラインツールのsqlcmd.exeは、255文字でデータを切り捨てます。パラメータ
-y N
で結果を得るにはN
の文字になります。
関連
-
[解決済み] SQL Server : varchar を INT に変換する。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] SQL ServerでJOINを使用してテーブルを更新しますか?
-
[解決済み] SQL Server テーブルからランダムな n 行を選択する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
-
[解決済み】SQL Server。クエリーは高速ですが、プロシージャから遅い
-
[解決済み] SQL Serverでスキーマバインドビューから参照されるカラムのサイズを変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQL Server Error "String Data, Right Truncation "の意味と修正方法について教えてください。
-
[解決済み] SQL Server xp_delete_file パラメータ
-
[解決済み] 特別なプリンシパルdbo.を使用することはできません。エラー 15405
-
[解決済み] 階層テーブルの設計
-
[解決済み] テーブルの上位1レコードを更新する sql server [重複].
-
[解決済み] 関数内から実行できるのは、関数と一部の拡張ストアドプロシージャのみです。
-
[解決済み] SQL Serverのタイムスタンプ列をdatetime形式に変換する方法
-
[解決済み] SQL ServerでBegin / End BlocksとGoキーワードを使用する?
-
[解決済み] クエリでカラムを落とさずにデータ型を変更するには?
-
[解決済み] SQL ServerでGROUP BYと一緒にDISTINCTを使用する