0

我需要为 SQL 服务器数据库中的所有键、约束生成删除和创建脚本。本练习是为目标环境中的数据库生成升级脚本。我有脚本,但它失败了,因为我需要找到正确的数据库对象顺序,例如父表级别、子表级别才能创建它们。例如,要创建/删除索引,基本上我使用以下查询捕获索引

'SELECT object_name(si.object_id)
,si.object_id
,si.NAME
,si.index_id
FROM sys.indexes si
LEFT JOIN information_schema.table_constraints tc ON si.NAME = tc.constraint_name AND object_name(si.object_id) = tc.table_name
WHERE objectproperty(si.object_id, 'IsUserTable') = 1    
ORDER BY object_name(si.object_id)
,si.index_id'

让我们知道如何包含索引的顺序/级别。同样需要在生成脚本时确保主要、外部、约束。

你能告诉我什么是捕捉这个的正确方法吗?

4

1 回答 1

0

如果你有所有的 FK 等,那么你可以使用 sys.dependencies 来找出正确的顺序。一种懒惰的方法是继续运行脚本,它们最终都会成功。例如,如果创建表 1 依赖于表 2,那么您第一次运行表 2 时会创建表 2,第二次会创建表 1。很容易编写脚本...

于 2017-02-24T15:19:13.577 回答