列から名前を取得する次のクエリがあります。
SELECT syscolumns.name
FROM syscolumns
WHERE sysobjects.name = 'MNT_SCENARIO_EXERCICE'
order by syscolumns.colId
しかし、それはこの例外をスローします:
メッセージ 4104、レベル 16、状態 1、行 1
マルチパート識別子 'sysobjects.name' をバインドできませんでした。
列から名前を取得する次のクエリがあります。
SELECT syscolumns.name
FROM syscolumns
WHERE sysobjects.name = 'MNT_SCENARIO_EXERCICE'
order by syscolumns.colId
しかし、それはこの例外をスローします:
メッセージ 4104、レベル 16、状態 1、行 1
マルチパート識別子 'sysobjects.name' をバインドできませんでした。
FROM syscolumns WHERE sysobjects.name
から選択するsyscolumns
と参照sysobjects
できませんか?あなたが望むのはおそらくこれです:
SELECT sc.name
FROM sys.syscolumns sc
JOIN sys.sysobjects so ON sc.id = so.id
WHERE so.name = 'MNT_SCENARIO_EXERCICE'
ORDER BY sc.colId;
OBJECT_ID('...')
結合を回避するために直接使用することもできます。
SELECT sc.name
FROM sys.syscolumns sc
WHERE sc.id = OBJECT_ID('MNT_SCENARIO_EXERCICE')
ORDER BY sc.colId;
はい、すべてのレガシ カタログ ビューは、sys
スキーマによってスコープされる必要があります。では、なぜ従来のカタログ ビューを使用して開始するのでしょうか。適切なカタログ ビューを使用しないのはなぜですか?
SELECT sc.name
FROM sys.columns sc
WHERE sc.object_id = OBJECT_ID('MNT_SCENARIO_EXERCICE')
ORDER BY sc.column_id;