在sql server 中我們會通過郵件選單來檢視乙個物件的依賴關係,但有些意外情況會造成檢視結果並不是非常的準確!
可以嘗試以下例子 :
第一步:顛倒順序,建立乙個缺失依賴關係的儲存過程
code
create
proc
dbo.testrefresh1
asexec
dbo.testrefresh2
exec
dbo.testrefresh3
exec
dbo.testrefresh4
exec
dbo.testrefresh5
exec
dbo.testrefresh6
gocreate
proc
dbo.testrefresh2
asselect1go
create
proc
dbo.testrefresh3
asselect1go
create
proc
dbo.testrefresh4
asselect
1第二步: 檢視一下這個儲存過程的依賴關係
code
exec
sp_depends
@objname=n
'dbo.testrefresh1
'在結果中並沒有發現dbo.testrefresh1同其他物件有任何的依賴關係 ,細心的朋友早就發現這個問題是因為建立儲存過程時的順序問題所致。假設我們的資料庫中並不缺失相關物件,可以嘗試用如下**來更新他們的依賴關係:
code
declare
@cmd
asnvarchar
(max
);declare
c cursor
fast_forward
forselect
'exec sys.sp_refreshsqlmodule '+
''''
+schema_name(
[schema_id])
+'.'
+[name]+
''''
ascms
from
sys.objects
where
type='
p'open
cfetch
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
'看看結果吧!
其實,針對這些特性,我們可以用上面這段指令碼來檢查生產資料庫資料庫儲存過程的健康狀況,發現缺失的依賴關係!雖然用處不大,畢竟是乙個知識點。與大家分享
查詢資料庫物件依賴關係
use testdb1 goselect distinct object name object id as objname from sys.sql dependencies where referenced major id object id dbo.tblprojects order by ...
發現資料庫物件的依賴關係
sql server management studio中有乙個很有意思的工具,可以檢視某個物件的依賴和被依賴關係。如下圖所示 假設,我們自己的程式也要實現這樣的功能,那麼該怎麼做呢?1.首先,建立乙個專案,新增以下三個引用 2.用如下 測試 using system using system.co...
資料庫 關係模式函式依賴
關聯式資料庫邏輯設計 針對具體問題,如何構造乙個適合於它的資料模式 資料庫邏輯設計的工具 關聯式資料庫的規範化理論 關係模式由五部分組成,即它是乙個五元組 r u,d,dom,f r 關係名 u 組成該關係的屬性名集合 d 屬性組u中屬性所來自的域 dom 屬性向域的映象集合 f 屬性間資料的依賴關...