質問

テーブルから列メタデータを決定するにはどうすればよいですか シノニム SQL Server 2005データベースで? 「プロジェクト」と呼ばれるテーブルの「ProjectSyn」と呼ばれる同義語がありますが、同義語の列メタデータは見つかりません。

私の推測では、どこかで同義語の「ベーステーブル」を決定し、そのテーブルの列メタデータをクエリすることです。これは正しいアプローチですか、そうでない場合はどうなりますか?

役に立ちましたか?

解決

このようなもの? (編集)

select c.*
from
   sys.columns c
   inner join sys.synonyms s on c.object_id = object_id(s.base_object_name)
where
   s.name = 'ProjectSyn'

他のヒント

これは、さまざまなデータベースの同義語で機能する私のソリューションです。

SELECT TOP 0 * INTO #TEMP1 FROM YourTable 
SELECT
    [column_name] = c.name,
    [data_type] = t.name,
    [character_maximum_length] = c.max_length
FROM tempdb.sys.columns c
inner join tempdb.sys.types t on t.system_type_id = c.system_type_id
WHERE [object_id] = object_id('tempdb..#TEMP1');
DROP TABLE #TEMP1

はい、ベースオブジェクトを取得してから列を取得することがあなたの唯一のオプションだと思います。

同義語のベースオブジェクト名を取得するには、ビューを照会するだけです sys.synonyms

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top