数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

使用SQL Server 2008中对象相关性[1]


发布日期:2018年06月24日
 
使用SQL Server 2008中对象相关性[1]

SQL Server的以前版本在跟蹤对象相关性方面做的并不好原因是所有的对象相关性都是由对象ID来跟蹤的这意味着对象一开始就必须存在但是通过根据对象名称来跟蹤对象SQL Server 极大地扩展了跟蹤对象的能力而不用再依赖ID该方法的好处是在一些对象已经从数据库中转移出去后还可以继续跟蹤对象甚至在对象没有建立时也可以进行跟蹤

新管理对象

SQL Server 引进了两个新动态管理函数和新系统视图用于跟蹤对象相关性这两个新对象包括Database Engine存储的有关相关性的信息这些相关性是在创建更改和放弃对象时建立的在一个对象以名称的形式出现于存储在另一个对象中的SQL表达式中时一个相关性就会在两个对象之间创建在表达式中出现的对象称为被引用实体而包含SQL表达式的对象称为引用实体

syssql_expression_dependencies

本视图含有当前数据库中用户定义的一个对象的每个相关性的一个记录这些用户定义的对象可以是存储在当前数据库中的对象或者存储在不同数据库中并利用部分命名规则(databasenameschemanameobjectname)被引用的对象在不同的服务器上并使用四部分命名规则(servernamedatabasenameschemanameobjectname)通过链接服务器被引用的对象以及在特定对象创建时不存在的对象(称为延迟对象)

sysdm_sql_referenced_entities

用户在定义特定引用实体时本函数为通过名称引用的每个用户定义的对象返回一个行例如如果视图vw_SampleView引用表Table 的Field Field和 Field则将返回四行针对被引用字段返回三行针对表引用返回一行

sysdm_sql_referencing_entities

该函数为用户在当前数据库中定义的每个对象返回一个记录这些对象通过名称引用另一个用户定义的对象例如如果视图vw_SampleView引用Table 和 Table则该函数返回两个记录针对每个表引用返回一个记录

举例

以下示例显示了如何通过创建一些对象和查询新DMV在数据库内部跟蹤相关性利用下边的脚本创建名称为SalesHistory的表

CREATE TABLE [dbo][SalesHistory](

[SaleID] [int] IDENTITY() NOT NULL PRIMARY KEY CLUSTERED

[Product] [char]() NULL

[SaleDate] [datetime] NULL

[SalePrice] [money] NULL

)

在下边的脚本中创建了名称为dbousp_GetSales的存储的过程该过程引用在以上脚本中创建的SalesHistory表

CREATE PROCEDURE dbousp_GetSales

(

@Product VARCHAR()

)

AS

BEGIN

SELECT COUNT(SaleID) AS SalesCount SUM(SalePrice) AS SalesAmount

FROM dboSalesHistory sh

END

[] []

               

上一篇:使用SQL Server 2008中对象相关性[2]

下一篇:MS SQL基础教程 SQL Server 2000 简介