sql-server - 如何使用 PowerShell 获取 SQL Server 中表的唯一键列表?

标签 sql-server powershell

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

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

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

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

任何想法

最佳答案

有一个 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}}

关于sql-server - 如何使用 PowerShell 获取 SQL Server 中表的唯一键列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046140/

相关文章:

sql-server - SQL预期0参数,得到1

sql - MS SQL Server 数据透视表,列子句中带有子查询

SQL 服务器 : how transactions work

sql-server - 将值插入 SQL Server 数据库

c# - 如何在没有管理员权限的情况下在 Azure Web 应用程序上安装 PowerShell 模块?

c# - 2.0版本的System.Management.Automation?

sql - 'for' SQL Server 附近的语法不正确

powershell - 是否可以不调用而解析PowerShell脚本 block 参数?

linux - 两台 Linux 服务器之间的 PowerShell 远程执行

function - PowerShell函数的返回值和返回变量的进一步使用