WEB开发网
开发学院数据库MSSQL Server SQL Server 2008的Transact-SQL语言增强 阅读

SQL Server 2008的Transact-SQL语言增强

 2010-06-16 15:44:49 来源:WEB开发网   
核心提示:7.SQL 依赖关系报告SQL Server 2008 引入了新的目录视图和系统函数用以提供一致可靠的 SQL 依赖关系报告,所谓依赖关系,SQL Server 2008的Transact-SQL语言增强(7),通俗的讲:存储过程1需要使用存储过程2提供的结果,它们之间就是一种依赖关系,因为被引用实体没有使用有效的由四

7.SQL 依赖关系报告

SQL Server 2008 引入了新的目录视图和系统函数用以提供一致可靠的 SQL 依赖关系报告。所谓依赖关系,通俗的讲:存储过程1需要使用存储过程2提供的结果,它们之间就是一种依赖关系。可以使用 sys.sql_expression_dependencies、sys.dm_sql_referencing_entities 和 sys.dm_sql_referenced_entities 来报告架构绑定和非架构绑定对象的跨服务器、跨数据库和数据库 SQL 依赖关系。

下例将创建一个表、一个视图和三个存储过程。这些对象将用在后面的查询中以演示如何报告依赖关系信息。可看到 MyView 和 MyProc3 均引用 Mytable。MyProc1 引用 MyView,而 MyProc2 引用 MyProc1。

USE AdventureWorks;
GO
-- Create entities
CREATE TABLE dbo.MyTable (c1 int, c2 varchar(32));
GO
CREATE VIEW dbo.MyView
AS SELECT c1, c2 FROM dbo.MyTable;
GO
CREATE PROC dbo.MyProc1
AS SELECT c1 FROM dbo.MyView;
GO
CREATE PROC dbo.MyProc2
AS EXEC dbo.MyProc1;
GO
CREATE PROC dbo.MyProc3
AS SELECT * FROM AdventureWorks.dbo.MyTable;
  EXEC dbo.MyProc2;
GO

下面的示例查询 sys.sql_expression_dependencies 目录视图以返回由 MyProc3 引用的实体。

USE AdventureWorks;
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name
  ,referenced_server_name AS server_name
  ,referenced_database_name AS database_name
  ,referenced_schema_name AS schema_name
  , referenced_entity_name
FROM sys.sql_expression_dependencies
WHERE referencing_id = OBJECT_ID(N'dbo.MyProc3');
GO

下面是结果集:

referencing_entity server_name database_name schema_name referenced_entity
------------------  -----------  -------------   ----------- --  ---------------
MyProc3      NULL    NULL      dbo     MyProc2
MyProc3      NULL    AdventureWorks  dbo     MyTable

上面的查询返回了两个在 MyProc3 定义中按名称引用的实体。服务器名称为 NULL,因为被引用实体没有使用有效的由四部分组成的名称指定。返回的结果中显示了 MyTable 的数据库名称,因为在存储过程中是使用由三部分组成的有效名称定义此实体的。

上一页  2 3 4 5 6 7 8  下一页

Tags:SQL Server Transact

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接