2011-02-10 45 views
0

如何知道有多少数据库表,视图或任何其他对象附加到sql server 2005数据库中的视图。 我试过用Sp_Depends,但令人惊讶的是它没有显示它正在使用的SP名称。与视图相关的数据库对象 - sql server 2005

当我运行语句Sp_depends vw_MyViewName。

我只获取我在vw_MyViewName中使用的表和列的名称。我需要知道与此视图相关的其他对象。

回答

0

直到sys.sql_expression_dependencies介绍(SQL Server 2008中),您需要查询sys.sql_modules

SELECT OBJECT_NAME(object_id) 
FROM sys.sql_modules 
WHERE definition LIKE '%MyTable%' 

个人而言,我会使用WITH SCHEMABINDING来确保依赖性必须存在

0

我知道在SQL Server数据库中确定对象依赖关系的唯一完全可靠的方法是将您的模式加载到Visual Studio数据库版本(DBPro)中,并检查其中的依赖关系。与SQL Server跟踪依赖关系的方式不同,我发现这是十分简单的。

我不一定会为此错误SQL Server。我认为它从来没有声称它能够以100%的精度跟踪依赖关系,主要是因为它绑定对象的方式。

+0

不确定您使用的是哪个版本。 2008年,依赖视图比2005年更可靠。唯一没有正确跟踪的依赖是动态SQL AFAIK。 – 2011-02-11 12:51:21

0

在SQL Server Management Studio的“对象浏览器”面板中,右键单击要检查的对象(存储过程,表,视图等),然后单击“显示相关性”。

出现的窗口中,会显示这两个依赖和“依靠”的对象,仅仅通过两个单选按钮之间进行切换;)

如果你想手工做,你需要建立在一个查询sys.sql_dependencies系统视图。 Here a link来说明一些例子

请注意,存储过程取决于nonexistants表,视图和其他对象,将被创建,但不仅它们显然不起作用,但依赖信息将不会被添加,直到所有“依赖”对象被创建,并且SP被重新创建!

1

在SQL Server 2005中,如果按照错误的顺序创建对象,会发生这种情况。

你会得到无法添加依赖信息丢失的对象,但对象仍然会创建

你可以在你的数据库上运行的所有对象​​重建这种缺少相关信息的警告消息(一个示例脚本这样做是在这里How do I find all stored procedures that insert, update, or delete records?