Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与视图相关的数据库对象-sql server 2005_Sql_Sql Server_Sql Server 2005_Views - Fatal编程技术网

与视图相关的数据库对象-sql server 2005

与视图相关的数据库对象-sql server 2005,sql,sql-server,sql-server-2005,views,Sql,Sql Server,Sql Server 2005,Views,如何知道SQLServer2005数据库中有多少数据库表、视图或任何其他对象附加到视图。 我尝试使用Sp_,但令人惊讶的是,它没有显示使用它的Sp名称 当我运行语句Sp_dependens vw_MyViewName时 我只得到我在vw_MyViewName中使用的表和列的名称。我需要知道与此视图相关的其他对象。我所知道的确定SQL Server数据库中对象依赖关系的唯一完全可靠的方法是将您的架构加载到Visual Studio database Edition(DBPro)中并检查其中的依赖关

如何知道SQLServer2005数据库中有多少数据库表、视图或任何其他对象附加到视图。 我尝试使用Sp_,但令人惊讶的是,它没有显示使用它的Sp名称

当我运行语句Sp_dependens vw_MyViewName时


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

我所知道的确定SQL Server数据库中对象依赖关系的唯一完全可靠的方法是将您的架构加载到Visual Studio database Edition(DBPro)中并检查其中的依赖关系。我发现这是万无一失的,不像SQLServer跟踪依赖关系的方式


我不一定会因此责备SQL Server。我认为它从未声称能够100%准确地跟踪依赖关系,主要是因为它绑定对象的方式。

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

出现的窗口将显示从属对象和“从属”对象,只需在两个单选按钮之间切换即可;)

如果要手动执行,则需要在sys.sql\u dependencies系统视图上构建查询。用一些例子来说明


请注意,将创建依赖于不存在的表、视图和其他对象的存储过程,但它们不仅显然不起作用,而且在创建所有“依赖”对象并重新创建SP之前,不会添加依赖信息

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

您将收到一条警告消息,指出无法为缺少的对象添加依赖项信息,但仍将创建该对象


您可以在数据库中的所有对象上运行
sp\u refreshsqlmodule
,以重新创建此类缺失的依赖项信息(此处有一个示例脚本)

直到引入sys.sql\u expression\u dependencies(sql Server 2008),您需要进行查询


就个人而言,我会使用它来确保依赖项必须存在

不确定您使用的是什么版本。2008年的依赖关系视图比2005年可靠得多。唯一没有正确跟踪的依赖项是动态SQL AFAIK。@Martin-更可靠还是完全可靠?在DBPro中,它们是完全可靠的。据我所知,
sys.sql\u expression\u dependencies
是完全可靠的。2008年,当解析器在
CREATE
ALTER
中遇到对象名时,即使引用的对象丢失,它也会记录该对象名。有两列
依赖于调用方,不明确
,可以查看对象绑定点。
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE definition LIKE '%MyTable%'