• Increase font size
  • Default font size
  • Decrease font size
商業智能/數據倉庫 元數據-數據倉庫表的增長

元數據-表增長的數據倉庫

電子郵件 打印
(0票)

unlock_refresh_128 在起草過程中的管理元數據(元數據存儲在數據庫中)我們的數據倉庫的一部分'表增長的向前發展。 在數據倉庫,它是有用的知道有多大的增長表和如何開發這些表。

如果你認識到異常,及時採取措施,以確保最佳性能等數據,歸檔保存在單獨的舊表。 在本文中,我舉一個例子,你怎樣可以監察增長表。

的增長表來識別您每天作快照狀態表。 SQL Server中保持統計的數量在一個表中的記錄存在。 你不這樣做的罪名在桌子上。 也許你想這對每個數據庫中的SQL實例做。 然後,你想寫的狀態表中的一個表,每一天。

下表是一個你可以創建示例表的統計數字給我們寫信。 你可以明顯地擴大你的列是有道理的。

  [ dbo ] . [ Tablerowcount ] ( 的CREATE TABLE [dbo的]。[Tablerowcount](
  TableRowCountID ] [ VARCHAR ] ( 128 ) NOT NULL, [TableRowCountID] [的VARCHAR](128)NOT NULL的,
  RegistrationDate ] [ DATETIME ] NULL, [登記日期] [日期時間]為NULL,
  DatabaseName ] [ VARCHAR ] ( 64 ) NULL, [數據庫名] [的VARCHAR](64)NULL,則
  TableName ] [ VARCHAR ] ( 64 ) NULL, [表名] [的VARCHAR](64)NULL,則
  NrOfRecords ] [ INT ] NULL, [NrOfRecords] [詮釋]為NULL,
  [ PK_Tablerowcount ] PRIMARY KEY CLUSTERED 約束 [PK_Tablerowcount] PRIMARY KEY的群集 
 
  TableRowCountID ] ASC [TableRowCountID] 升序
 WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ] 與(PAD_INDEX = OFF,則關閉 = STATISTICS_NORECOMPUTE,IGNORE_DUP_KEY =  =  ALLOW_ROW_LOCKS,ALLOW_PAGE_LOCKS = ON)的[小學]
 ON [ PRIMARY ]  [小學] 



然後,我們創建了一個存儲過程,將寫入統計為每個數據庫表中。 有一些硬編碼的東西,你必須適應作為數據庫名稱(插入到BI2_METABASE)代替你的數據庫的名稱。

  [ dbo ] . [ sp_tablerowcount ] ( @DEBUG BIT = 0 ) 的CREATE PROCEDURE [dbo的]。[Sp_tablerowcount](@調試 = 0)
 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 由於 / * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ 
  SPC的目的:收集號碼記錄每個數據庫每天每日期 
  創建人:羅納德Kraijesteijn 
  建立時間:2010年3月 
  更新:十 
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ 

  例子 
  Exec的sp_tablerowcount 1 

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜〜〜* /

  動工 
  設定SET NOCOUNT ON

  @ SQL AS NVARCHAR ( MAX ) 隨著的DECLARE @ 的SQL數據類型為 nvarchar(MAX)
  @DB AS VARCHAR ( 32 ) 隨著數據庫的DECLARE @ VARCHAR(32)
  @RC AS INT 作為區局的DECLARE @ 詮釋
  @ DATE AS INT 日期為int的DECLARE @

  @ DATE = CAST ( YEAR ( GETDATE ( ) ) * 10000 + MONTH ( GETDATE ( ) ) * 100 科協 的SET @ 日期=(年 (的getDate())* 10000 + 月份 (的getDate())* 100
  ( GETDATE ( ) ) AS VARCHAR ( 8 ) ) +  (getdate()的) varchar(8))

  -清理現有數目今天(我們不希望有一天雙註冊!)
  Tablerowcount 需要刪除 Tablerowcount
  CAST ( YEAR ( RegistrationDate ) * 10000 + MONTH ( RegistrationDate ) 在WHERE 科協 (年 (註冊日期)* 10000 + 月份 (註冊日期)
  + DAY ( RegistrationDate ) AS VARCHAR ( 8 ) ) = @ DATE * 100 +  (註冊日期) varchar(8))= @ 日期
  @RC = @@ROWCOUNT鋼筋混凝土的SET @ @ @行數 =
  @DEBUG = 1 如果 @調試= 1 
  CAST ( @RC AS VARCHAR ( 16 ) ) 打印 科協 (@鋼筋混凝土varchar(16))
  +刪除,因為他們已經在今天的統計'
  -數據庫檢索系統表
  CUR_DB CURSOR DECLARE CURSOR的 CUR_DB
  [ name ] 對於SELECT [名字]
  sys. databases  sys。 數據庫
  [ name ] NOT IN ( 'master' , 'tempdb' , 'model' , 'msdb' ) 其中,[ 名稱]不中('師父','tempdb中','模式','msdb資料')

  -註冊人數的記錄每個表
  CUR_DB 開放 CUR_DB
  CUR_DB INTO @DB數據庫CUR_DB 的FETCH改成 @
  @@FETCH_STATUS = 0 在WHILE @ @的fetch_status = 0
  動工
  @DEBUG = 1 PRINT 'Loading table statistics to metabase for database: ' + @DB 如果 @調試= 1 打印 加載數據庫表統計元數據庫:'+ @數據庫
  @ SQL = 'INSERT INTO BI2_METABASE.dbo.Tablerowcount 設置 @ 的SQL ='的INSERT INTO BI2_METABASE.dbo.Tablerowcount  
   選擇 
   (科協(年(的getDate())* 10000 +月份(的getDate())* 100 +天(getdate()的)為varchar(8))+ '' '' + _  
  @數據庫+'_'+ O.name)作為TableRowCountID 
   ,getdate()的作為登記日期 
   ,@數據庫作為數據庫名  
   作為O.name表名稱 
   作為I.rowcnt NrOfRecords 
   + @DB + '.dbo.sysobjects AS O 從'+ @數據庫+'。Dbo.sysobjects為O 
   + @DB 內部聯接'+ @數據庫
  +'。Dbo.sysindexes正如我在= O.id I.id 
   在WHERE中I.indid(0,1) 
   與O.xtype = ''' 
   和O. [名稱]不是在('' '' '' dtproperties sysdiagrams '') 
   令由O. [名稱]

  TRY嘗試動工
  SP_EXECUTESQL @ SQL , N '@DB AS VARCHAR(32)' , @DB = @DB Exec的 sp_executesql的 @ SQL中,'@ 數據庫為varchar(32),@ @數據庫=數據庫
  @RC = @@ROWCOUNT鋼筋混凝土的SET @ @ @行數 =
  @DEBUG = 1 PRINT 'Records loaded: ' + CAST ( @RC AS VARCHAR ( 8 ) ) 如果 @調試= 1 打印 '記錄加載:'+ 科協 (為varchar @ 區局)(8)
  TRY 嘗試 
  CATCH漁獲物的BEGIN
  ERROR_MESSAGE ( ) 打印Error_Message() 
  'Error: processing table rowcount data for database ' 打印 '錯誤:表行計數數據處理數據庫'
  + @數據庫
  @ SQL 打印 @ 的SQL
  CUR_DB 關閉 CUR_DB
  CUR_DB 的LOCATE CUR_DB 
  @RC鋼筋混凝土的RETURN @ 
  CATCH 漁獲物
  CUR_DB INTO @DB數據庫的FETCH改成 @ CUR_DB
  
  CUR_DB 關閉 CUR_DB
  CUR_DB 的LOCATE CUR_DB  
   




注:我有一個額外的選項設置進行調試。 如果你的價值 1抗拒,看看存儲過程的輸出。 此外,他放棄了所有的統計數字,已在當天早些時候,因為你只是想要一個快照每天。

此存儲過程可以通過一個 SQL Server代理作業調度,使夜間自動調用和寫入數據。

如有意見或問題,留言。 希望你做點什麼。

版權2008。 保留所有權利。

引用(0)

引用地址為這個職位

評論(0)

RSS飼料評論

發表評論

大膽 斜體 強調 罷工 網址 圖片 引用 smile wink laugh grin angry sad shocked cool tongue kiss cry
| groter |
安全形象
寫顯示的字符

忙