2012-04-06 42 views
2

我想用PowerShell來獲得在SQL Server中的表下面的元數據信息的列表:如何使用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 

任何想法

回答

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}} 
+0

偉大的東西,男人! – 2012-04-07 13:46:25

0

我不知道如何使用PowerShell來做到這一點,但我認爲你應該看看Catalog Views部分MSDN上,尤其是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'; 
+0

謝謝您的回答,但我需要能夠使用PowerShell使用其他過濾器。 – rcarrillopadron 2012-04-06 16:53:07

相關問題