我的数据主要用于数据库中的一个表中,并在几个不同的表中引用。我需要更正这些数据。是否可以编写一个“where-used”语句来搜索数据库中的每个表并返回引用数据的所有表?SQL中使用的语句
我正在使用SQL 2005.
谢谢。
我的数据主要用于数据库中的一个表中,并在几个不同的表中引用。我需要更正这些数据。是否可以编写一个“where-used”语句来搜索数据库中的每个表并返回引用数据的所有表?SQL中使用的语句
我正在使用SQL 2005.
谢谢。
我发现这条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_所以很容易对其进行过滤。
尝试向数据库中添加一个图表,并将所有表格放到它上面。如果我已经正确地解释了你的问题,你正试图理解一个已经存在的数据库模式?如果您使用该图表,它将绘制您的引用,这将允许您查看数据在表格结构中的链接位置。
至于SQL你可以使用连接,或条件来链接不同表中的数据。
你想“纠正”什么?
我们描述符在defs表中输入两次。我需要消除其中的一个,但ID已被用于多个不同的数据库中。我需要映射正确的ID并删除现有的副本。 – 2009-06-01 14:44:09
在Management Studio中,您可以右键单击表格/视图/存储过程,然后选择查看偏移量。在依赖关系窗口中,您可以选择查看所选项目所依赖的对象,或者查看依赖于所选项目的项目。
事后你不能这样做,但在桌面设计时,你可以建立关系到“ON UPDATE CASCADE”。
如果数据库中存在实际存在的外键,则可以对数据库进行逆向工程(请参阅this posting)。如果情况并非如此,那么你需要做一些手工侦探工作。
Visio professional拥有反向工程数据库的工具。 2003不与SQL Server 2005中发挥很好,所以你需要或者:
Visio 2007年
修改链接到上述所以它不会产生架构引用和脚本加载到脚本一个SQL Server 2000数据库。然后,从SQL 2000 DB反向工程。
如果没有外键或有不完整的外键的覆盖范围,你可以手动查找(例如,寻找与外观类似的代码字段引用数据)和手动标注在按键图。不要试图用SSMS中的图表工具来做到这一点,因为它可以尝试将FKs填充回数据库。
这是否处理传递引用,其中:TableA定义主键列A1; TableB有一个引用A1的外键列B1,但在(B1,B2)上有一个复合主键;并且TableC在列(C1,C2)上具有复合外键。通常,对于使用C1引用A1的TableC,您不会有明确的外键约束,但是如果您绘制它,您将看到C1列中的所有值也必须是A1列中的值。这不是一个普遍的问题;它可能已被避免 - 但这是一个真正的问题。 – 2009-06-01 14:36:40