【发布时间】:2011-05-24 18:59:48
【问题描述】:
我有一个要求,我必须更改我的数据库的排序规则,因为我需要 drop all the constraints and recreate them after running the collation 在我的数据库中更改脚本。我可以知道如何生成我的数据库的所有约束的脚本吗?
【问题讨论】:
标签: sql sql-server sql-server-2005 sql-server-2008
我有一个要求,我必须更改我的数据库的排序规则,因为我需要 drop all the constraints and recreate them after running the collation 在我的数据库中更改脚本。我可以知道如何生成我的数据库的所有约束的脚本吗?
【问题讨论】:
标签: sql sql-server sql-server-2005 sql-server-2008
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
获取数据库上的所有约束,然后过滤您的表
【讨论】:
这将为您提供数据库中的所有约束,您可以根据需要对其进行过滤:
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'
我认为您可能还需要查看任何索引、统计信息等也可能阻止您删除该列。
【讨论】:
这可以通过 SQL Server Management Studio 轻松完成。
右键单击数据库并转到Tasks、Generate Scripts...。
这将打开一个脚本生成向导,该向导将为您选择的任何架构构造生成 DROP 和 CREATE 脚本。
选择你的数据库
确保选择 Script Drop to True
选择表格
选择 New Query Editor Window 并单击 Finish。
【讨论】:
您可以使用 SMO 进行类似的编程,或者更简单的是仅使用 SSMS 中的脚本向导。在对象资源管理器中转到您的数据库并右键单击它。选择任务-> 生成脚本(不是“脚本数据库为”)。在向导中,您可以确保约束已编写脚本并删除其他项目。检查生成的脚本并确保它可以满足您的需要。如果没有,请再次通过向导进行必要的调整。
【讨论】: