2

我想使用 PowerShell 获取 SQL Server 中表的以下元数据信息列表:

列名、是否为空列、是否为主键、是否为外键、数据类型和是否唯一(或属于唯一键的一部分)

目前我正在使用以下内容而没有获取唯一键的信息:

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 回答