我有一个要求,我必须更改数据库的排序规则,因为我需要在我的数据库中drop all the constraints and recreate them after running the collation更改脚本。我可以知道如何生成DB数据库的所有约束?
答案 0 :(得分:5)
SELECT top 1
'ALTER TABLE '+ SCHEMA_NAME(schema_id) + '.' + OBJECT_NAME(parent_object_id) +
' ADD CONSTRAINT ' + dc.name + ' DEFAULT(' + definition
+ ') FOR ' + c.name
FROM sys.default_constraints dc
INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
脚本生成所有约束
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
获取db上的所有约束,然后对表进行过滤
答案 1 :(得分:3)
这将为您提供数据库中的所有约束,您可以根据需要对其进行过滤:
SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'
我认为您可能还需要查看任何索引,统计信息等,这些索引,统计信息等也可能会阻止您删除列。
答案 2 :(得分:1)
这可以从SQL Server Management Studio轻松完成。
右键单击数据库,然后转到任务,生成脚本... 。
这将打开一个脚本生成向导,它将为您选择的任何模式结构生成DROP和CREATE脚本。
选择您的数据库
确保选择Script Drop to True
选择表格
选择New Query Editor窗口,然后单击Finish。
答案 3 :(得分:1)
您可以使用SMO编写类似这样的内容,或者更简单的方法就是在SSMS中使用脚本向导。在对象资源管理器中转到数据库,然后右键单击它。选择任务 - >生成脚本(不是“脚本数据库”)。在向导中,您可以确保编写约束并删除其他项。检查生成的脚本,确保它能满足您的需求。如果没有,请再次通过向导进行必要的调整。