2

PowerShellを使用してSQLServerのテーブルの次のメタデータ情報のリストを取得したい:

列名、null許容列、主キー、外部キー、データ型、および一意(または一意キーの一部に属する)

現在、一意キーの情報を取得せずに次のものを使用しています。

PS SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\MyDB\Tables\dbo.MyTable\Columns> Get-ChildItem | select Name, Nullable, IsPrimaryKey, IsForeignKey, DataType

次のようなものが欲しいのですが

Name         : MyID
Nullable     : False
IsPrimaryKey : True
IsForeignKey : False
DataType     : int
IsUnique     : True

何か案は

4

2 に答える 2

2

IsUnique プロパティがありますが、これはインデックスのプロパティであり、インデックスはテーブルのプロパティです。したがって、SqlProvider を使用する場合は、一意のインデックスの一部である列を取得し、列の出力にプロパティを追加する方法を次に示します。

PS SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\MyDB\Tables\dbo.MyTable>
$UQColumns = get-item . | foreach {$_.indexes} | where {$_.IsUnique} | foreach {$_.IndexedColumns} | select -expandproperty Name
cd Columns
Get-ChildItem | select Name, Nullable, IsPrimaryKey, IsForeignKey, DataType, @{n='IsUnique';e={$UQColumns -contains $_.Name}}
于 2012-04-07T01:18:47.887 に答える
0

PowerShell を使用してそれを行う方法はわかりませんが、MSDN のCatalog Viewsセクション、特にObject Catalog Viewsを調べる必要があると思います。アイデアを出すために、 という名前のテーブルの列に関する情報を取得するために使用できるコード スニペットを次に示しますSomeTable

select c.*
    from sys.objects o
        inner join sys.columns c on c.object_id = o.object_id
    where o.type = 'u' and o.name = 'SomeTable';
于 2012-04-06T16:33:24.443 に答える