更新資料庫物件依賴關係

2022-03-20 11:12:50 字數 1610 閱讀 9086

在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 屬性間資料的依賴關...