SQL中使用语句的位置

时间:2009-06-01 14:09:42

标签: sql sql-server-2005

我的数据主要用在数据库的一个表中,并在几个不同的表中引用。我需要纠正数据。是否可以编写一个“where-used”语句来搜索数据库中的每个表并返回引用数据的所有表?

我正在使用SQL 2005。

感谢。

5 个答案:

答案 0 :(得分:1)

我发现了这个sql语句here

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'
AND  OBJECT_NAME(OBJECT_ID) LIKE 'FK_%'

注意: - 我命名以 FK _ 开头的所有外键约束,以便过滤它们。

答案 1 :(得分:0)

尝试将图表添加到数据库中,并将所有表格放到其上。如果我正确解释了您的问题,那么您是否正在尝试了解已存在的数据库架构?如果您使用图表,它将在您的参考资料上绘制,这将允许您查看数据在表格结构中的链接位置。

对于SQL,您可以使用连接,或者使用条件链接来自不同表的数据。

你想要“纠正”什么?

答案 2 :(得分:0)

在Management Studio中,您可以右键单击表/视图/存储过程,然后选择查看Depenencies。在依赖项窗口中,您可以选择查看所选项目所依赖的对象,或查看依赖于所选项目的项目。

答案 3 :(得分:0)

事后你不能这样做,但是在桌子设计时你可以设置“ON UPDATE CASCADE”的关系。

答案 4 :(得分:0)

如果数据库中存在外键,您可以对数据库进行反向工程(请参阅this posting以获取执行此操作的脚本)。如果情况并非如此,那么您需要进行一些手动侦探工作。

Visio professional有一个反向工程数据库的工具。 2003与SQL Server 2005不兼容,所以你需要:

  • Visio 2007

  • 修改链接到上面的脚本,使其不生成架构引用并将脚本加载到SQL Server 2000数据库中。然后,从SQL 2000 DB进行逆向工程。

如果您没有外键或外键覆盖不完整,您可以手动查找(例如,查找具有类似外观代码的字段以引用数据)并手动注释图中的键。不要尝试使用SSMS中的图表工具执行此操作,因为它可以尝试将FK填充回数据库。