更新数据库对象依赖关系
可以尝试以下例子 :
第一步:颠倒顺序,创建一个缺失依赖关系的存储过程
Code
CREATE PROC dbo.TestRefresh1
as
EXEC dbo.TestRefresh2
EXEC dbo.TestRefresh3
EXEC dbo.TestRefresh4
EXEC dbo.TestRefresh5
EXEC dbo.TestRefresh6
GO
CREATE PROC dbo.TestRefresh2
AS SELECT 1
GO
CREATE PROC dbo.TestRefresh3
AS SELECT 1
GO
CREATE PROC dbo.TestRefresh4
AS SELECT 1
第二步: 查看一下这个存储过程的依赖关系
Code
EXEC sp_depends @objname = N'dbo.TestRefresh1'
在结果中并没有发现dbo.TestRefresh1同其他对象有任何的依赖关系 ,细心的朋友早就发现这个问题是因为创建存储过程时的顺序问题所致。假设我们的数据库中并不缺失相关对象,可以尝试用如下代码来更新他们的依赖关系:
Code
declare @cmd as nvarchar(max);
declare c cursor fast_forward for
select 'EXEC sys.sp_refreshsqlmodule ' '''' schema_name([schema_id]) '.' [Name] '''' as cms from sys.objects where type='p'
open c
fetch next from c into @cmd ;
while @@fetch_status = 0
begin
exec(@cmd);
fetch next from c into @cmd;
end
close c;
deallocate c;
完成之后再次执行
Code
EXEC sp_depends @objname = N'dbo.TestRefresh1'
看看结果吧!
其实,针对这些特性,我们可以用上面这段脚本来检查生产数据库数据库存储过程的健康状况,发现缺失的依赖关系!虽然用处不大,毕竟是一个知识点。与大家分享...
- 排行
- 推荐
- 最新
- C# Socket多线程编程实例
- Asp.net Ajax 中的脚本错误: Sys未定义 的解决方法
- 身份证号码15位升18位(C#)
- DataGrid 控件的使用
- Visual Basic 界面设计大观
- asp.net ajax学习系列功能强大的UpdatePanel控件
- Session丢失问题解决方案
- Javascript与asp.net 实现Ajax多文件无刷新上传
- Web Service描述语言 WSDL 详解(1)--为什么使用WSDL?[转]
- XP下java jdk环境变量设置
- Linux多线程编程
- JSP Struts之HTML标签库详解
- Java GUI:SWT/Swing/AWT的介绍及比较
- C#连接mysql
- asp http 500 - 内部服务器错误 请求的资源在使用中
- 教你在VB中操作 DataGrid 视图
- 关于ASP.NET调用JavaScript的实现
- 使用VB实现Excel自动获取外部数据
- 从资源文件里加载文件(C#)
- 怎样在JAVA文件中获取该项目的相对路径
- Asp.Net Unleashed 2nd Edition 学习笔记 第三部分
- 使用AJAX技术实现网页无闪自动局部刷新
- UpdatePanel与UrlRewrite
- 新手入门:介绍JSP中request属性的用法
- 基于ASP.NET AJAX的WebPart开发与部署
