|
導讀數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應... 數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。 從上面你一眼就可以看出來了,建立view要比建立function先,而不是根據依賴關系建立。毫無疑問,將會得到如下的嚴重的錯誤: 服務器: 消息 208,級別 16,狀態 1,過程 vwT1,行 4 對象名 'dbo.fnT1' 無效。 服務器: 消息 208,級別 16,狀態 1,過程 fnT2,行 5 對象名 'vwT1' 無效。 2. 作業腳本 這個我就不說了,bug還不是很嚴重,主要是中文“——”注釋符的問題。英文版我沒有測試過,不過猜想應當沒有這個bug,大家可以試試看。 3. 還有一個SP的問題 spGetIDStr和spAnalyseStrList的關系,是后者依賴于前者。可是spGetIDStr我并沒有調用任何的表,因此,每當運行SQL Server生成的腳本的時候,總是報告類似這樣的信息: spGetIDStr并不存在,無法在sysdepends里建立依賴關系,存儲過程spAnalyseStrList仍然建立。無論我手工修改其建立順序或是別的方面,用它生成的腳本就是有錯。這里,再看看第三個bug,看我下面的測試程序: (原理:當sp沒有對表或視圖等數據庫對象有依賴關系時,sp被別的sp引用時也將無法建立依賴關系) 形成依賴關系:spB1 <--- spA1 _NOBR> _CODE>create proc spB1 as return 11 go create proc spA1 as begin declare @i int exec @i=spB1 return @i*2 end go_CODE> _NOBR> 生成的腳本就為: _NOBR> _CODE>if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spA1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[spA1] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spB1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[spB1] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO Create proc spA1 As Begin Declare @i int Exec @i=spB1 Return @i*2 End GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO Create Proc spB1 As Return 11 GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO_CODE> _NOBR> 現在,大家應當明白我故意命名為spA1,spB1緣故了。因為如果沒有依賴關系的話,A自然排在B前面,你看微軟可不就是這么做的么?幸好這個bug還不是很大,怎么說SP還是建立了起來。 各位有興趣的可以試試別的,比如sp與fn,sp Group等等。 全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。 |
溫馨提示:喜歡本站的話,請收藏一下本站!