1
我有我需要创建脚本的唯一约束列表。如何:脚本出独特的约束创建脚本
有没有简单的方法来做到这一点? (类似查询sp_help,sys.objects,..) 或者我是否需要手动为每个约束(在30多个表上)执行此操作?
解决方法我现在用的那一刻: 在SSMS
- 对象资源管理器
- 数据库
- 表
- 约束
- '脚本约束为'
- “CREATE到'
我有我需要创建脚本的唯一约束列表。如何:脚本出独特的约束创建脚本
有没有简单的方法来做到这一点? (类似查询sp_help,sys.objects,..) 或者我是否需要手动为每个约束(在30多个表上)执行此操作?
解决方法我现在用的那一刻: 在SSMS
你可以尝试这样的事情:
SELECT
ColumnName = c.name,
TableName = t.name,
CreateCmd = 'ALTER TABLE ' + OBJECT_SCHEMA_NAME(t.object_id) + '.' + t.name + ' ADD CONSTRAINT ' + i.name + ' UNIQUE(' + c.name + ')'
FROM
sys.indexes i
INNER JOIN
sys.index_columns ic ON i.index_id = ic.index_id AND i.object_id = ic.object_id
INNER JOIN
sys.columns c ON ic.column_id = c.column_id AND ic.object_id = c.object_id
INNER JOIN
sys.tables t ON c.object_id = t.object_id
WHERE
is_unique_constraint = 1
这样,您就唯一约束应用于列和表的列表,和它给你的T-SQL命令新创建UNIQUE CONSTRAINT
曾用Powershell?
$null = [Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");
$svr = New-Object Microsoft.SqlServer.Management.Smo.Server("YourServerInstance");
$svr.Databases["YourDatabase"].Tables[0].Indexes[0].Script();
Databases
,Tables
和Indexes
你可以遍历集合。