Sql server 查找sql数据库中表之间的依赖项

Sql server 查找sql数据库中表之间的依赖项,sql-server,Sql Server,我有一个包含数据的Sql数据库。我被要求用所有必需的主数据填充一个全新的相同数据库,以便应用程序能够为新客户启动和运行 第一次进近 删除数据库中的所有数据,运行应用程序,确保我甚至无法登录。观察错误,确定需要主数据的表(至少确保Usertable),插入数据。然后假设我要访问一个模块。但是如果没有一些主数据,它会给我错误。观察错误,确定需要主数据的表,插入数据。 但这似乎不切实际 第二种方法 在将数据保留在数据库中的同时,使用查询或SQLServerManagementStudio工具,一次获取

我有一个包含数据的Sql数据库。我被要求用所有必需的主数据填充一个全新的相同数据库,以便应用程序能够为新客户启动和运行

第一次进近

删除数据库中的所有数据,运行应用程序,确保我甚至无法登录。观察错误,确定需要主数据的表(至少确保
User
table),插入数据。然后假设我要访问一个模块。但是如果没有一些主数据,它会给我错误。观察错误,确定需要主数据的表,插入数据。 但这似乎不切实际

第二种方法

在将数据保留在数据库中的同时,使用查询或SQLServerManagementStudio工具,一次获取一个表,查找所有依赖表。保留父表数据并删除子表数据。对所有表执行此操作。在第二轮中考虑剩余父表。某些表的数据是从应用程序插入的。识别并删除它们。这样我可以在最后得到相关的主数据。但我不知道如何处理这个问题


这些都是我的想法。当然,可能还有更多的方法比这些更精确、更简单。我不知道该怎么做。请引导我。谢谢

下面是一些查询,您可以使用它们来确定哪个表和列引用了哪个表和列

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
select * from INFORMATION_SCHEMA.columns
select * from INFORMATION_SCHEMA.tables
select * from sys.foreign_keys
select * from sys.foreign_key_columns
select * from [sys].[objects] where [name] = 'your_tablename'
有关详细信息,请打开对象资源管理器(查看菜单)并展开:

数据库/系统数据库/主控/视图/系统视图

此外,请查看对象资源管理器中可能存在的任何数据库关系图:

数据库/您的数据库名称/数据库关系图


下面是一些查询,您可以使用它们来确定哪个表和列引用了哪个表和列

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
select * from INFORMATION_SCHEMA.columns
select * from INFORMATION_SCHEMA.tables
select * from sys.foreign_keys
select * from sys.foreign_key_columns
select * from [sys].[objects] where [name] = 'your_tablename'
有关详细信息,请打开对象资源管理器(查看菜单)并展开:

数据库/系统数据库/主控/视图/系统视图

此外,请查看对象资源管理器中可能存在的任何数据库关系图:

数据库/您的数据库名称/数据库关系图


数据库有多大

无论你做什么,都要做适当的文档?所以最好从文档开始。 如果是主表,则必须逐个列出所有表和标识

记住删除和截断之间的区别

而doucmenting上述查询将派上用场

保存查询和文档以备将来需要


最重要的是,即使任何表为空,也不应出现任何错误。

数据库有多大

无论你做什么,都要做适当的文档?所以最好从文档开始。 如果是主表,则必须逐个列出所有表和标识

记住删除和截断之间的区别

而doucmenting上述查询将派上用场

保存查询和文档以备将来需要


最重要的是,即使任何表为空,也不应出现任何错误。

要查找表之间的外键依赖关系,可以使用

SELECT FKT.name 'Parent table', CHT.name 'Child table' FROM sys.foreign_keys FK
JOIN sys.tables CHT ON FK.parent_object_id = CHT.object_id
JOIN sys.tables FKT ON FK.referenced_object_id = FKT.object_id

还可以使用系统视图在数据库视图中查找依赖项。

要查找表之间的外键依赖项,可以使用

SELECT FKT.name 'Parent table', CHT.name 'Child table' FROM sys.foreign_keys FK
JOIN sys.tables CHT ON FK.parent_object_id = CHT.object_id
JOIN sys.tables FKT ON FK.referenced_object_id = FKT.object_id

还有一些方法可以使用系统视图在数据库视图中查找依赖项。

我希望它有帮助,使用
sp_dependens
获取依赖项:我希望它有帮助,使用
sp_dependens
获取依赖项: