• Increase font size
  • Default font size
  • Decrease font size
BI를 / 데이터웨어 하우스 메타 - 데이터웨어 하우스의 테이블 성장

메타 - 데이터웨어 하우스의 테이블 성장

전자 메일 인쇄
(0 표)

unlock_refresh_128 메타 데이터 (데이터베이스에 메타 데이터 스토리지의 관리의 기초) 우리의 데이터웨어 하우스에 중 일부는 '테이블 성장'전진했다. 데이터웨어 하우스에서는 알면 도움이 얼마나 많은 테이블과 이러한 테이블의 성장 발전입니다.

그래서 당신은 이례적인 조치를하고 적시에 최적의 성능을 기존 데이터를 통해 아카이브에 별도의 테이블에 예 수 있도록 인식할 수 있습니다. 이 문서에서는 제가 예제를 어떻게 성장 테이블을 모니터할 수 있습니다주세요.

성장 테이블 당신에게 매일을 인식 테이블의 상태의 스냅샷을 만들합니다. 존재하는 얼마나 많은 레코드를 한 테이블에서 SQL Server의 통계를 유지합니다. 당신은 테이블에 계산하지 않습니다. 당신의 SQL 인스턴스에서 모든 데이터베이스에 대해이 필요 할 수 있습니다. 그럼 당신은 테이블에있는 테이블의 상태를 쓰고 싶어, 매일.

아래 표는 당신이 통계를 작성하는 만들 수 있습니다 예제 테이블이다. 당신은 분명히 당신을 위해 열을 확장할 수 있습니다 의미가 있습니다.

  [ dbo ] . [ Tablerowcount ] ( 테이블 만들기는 [dbo가]. [Tablerowcount] (
  TableRowCountID ] [ VARCHAR ] ( 128 ) NOT NULL, [가] [VARCHAR]을 (128) NULL을하지 TableRowCountID
  RegistrationDate ] [ DATETIME ] NULL, [등록 일자] [정보 DATETIME] 제 NULL을,
  DatabaseName ] [ VARCHAR ] ( 64 ) NULL, [데이터베이스 이름] [VARCHAR] (64) NULL을,
  TableName ] [ VARCHAR ] ( 64 ) NULL, [테이블 이름] [VARCHAR] (64) NULL을,
  NrOfRecords ] [ INT ] NULL, [국가 NrOfRecords은, [INT가] NULL이]
  [ PK_Tablerowcount ] PRIMARY KEY CLUSTERED 제약 [PK_Tablerowcount] PRIMARY 키 클러스터된 
 (
  TableRowCountID ] ASC [는 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은 = 끄기, 켜기 끄기 ALLOW_ROW_LOCKS = STATISTICS_NORECOMPUTE IGNORE_DUP_KEY = 끄기 =,, ALLOW_PAGE_LOCKS = on 일)] 켜짐 [PRIMARY
 ON [ PRIMARY ] )] 켜짐 [PRIMARY 



그럼 우리가 테이블에있는 각 데이터베이스에 대한 통계를 작성하는 저장 프로 시저를 만듭니다. 일부 하드 코딩된이 없습니다 물건 당신이 BI2_METABASE에 삽입하기 위해 데이터베이스 이름 (으로 적응해야합니다)은 데이터베이스 이름으로 대체해야합니다.

  [ dbo ] . [ sp_tablerowcount ] ( @DEBUG BIT = 0 ) 작성 절차는 [dbo가]. [Sp_tablerowcount] (@ DEBUG 비트 = 0)
 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 그대로 / * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ 
  SPC 목적 : 하루 날짜마다 데이터베이스 당 레코드의 번호를 수집 
  작성자 : 로널드 Kraijesteijn을 
  만든날짜 : 2010 3월 
  업데이트 : 엑스 
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ 

   
  EXEC의 sp_tablerowcount 1 

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~ ~ * /를

  하는 BEGIN 
  설정의 NOCOUNT 켜기

  @ SQL AS NVARCHAR ( MAX ) 있는 그대로 공표할 @ SQL 데이터 nvarchar (MAX는)
  @DB AS VARCHAR ( 32 ) ) 32있는 그대로의 DB를 공표할 @ VARCHAR를 (
  @RC AS INT INT를 RC 그대로 공표할 @
  @ DATE AS INT 일자로 INT @ 공표할

  @ DATE = CAST ( YEAR ( GETDATE ( ) ) * 10000 + MONTH ( GETDATE ( ) ) * 100 세트 @ 날짜 = CAST (1 년 (getdate ()) * 10000 +  (getdate ()) * 100
  ( GETDATE ( ) ) AS VARCHAR ( 8 ) ) + 하루 (getdate ()) 그대로) VARCHAR (8)

  - 깨끗한 하루 등록을 기존의 최대 수를 하나의 듀얼이 없었 으면 우리가 할 일은 (오늘!)
  Tablerowcount 삭제 Tablerowcount로부터
  CAST ( YEAR ( RegistrationDate ) * 10000 + MONTH ( RegistrationDate ) 어디 CAST (일년 (등록 일자) * 10000 +  (등록 일자)
  + DAY ( RegistrationDate ) AS VARCHAR ( 8 ) ) = @ DATE * 100 + 1  (등록 일자)로 날짜 VARCHAR (8)) = @
  @RC = @@ROWCOUNT 세트 @ RC =에 @ @ ROWCOUNT
  @DEBUG = 1 @ 경우 디버그 = 1 
  CAST ( @RC AS VARCHAR ( 16 ) ) 도서 검색 캐스트 (@ RC 그대로) VARCHAR (16)
  +는 " '님의 삭제됨'때문에 이미 그들은 오늘 통계
  - 데이터베이스 테이블을 검색하는 시스템
  CUR_DB CURSOR 공표할 커서 CUR_DB
  [ name ] ]를 선택 [이름
  sys. databases 시스템 기술자로부터. 데이터베이스
  [ name ] NOT IN ( 'master' , 'tempdb' , 'model' , 'msdb' ) [이름]어디로 ( '마스터', 'tempdb를', '모델', 'msdb를')

  레코드 당 테이블의 번호 등록 -
  CUR_DB 오픈 CUR_DB
  CUR_DB INTO @DB FETCH 반했어요 @ DB를의 CUR_DB
  @@FETCH_STATUS = 0 0 이왕 @ @ FETCH_STATUS =
  하는 BEGIN
  @DEBUG = 1 PRINT 'Loading table statistics to metabase for database: ' + @DB 데이터베이스 @ 1면 인쇄 "로드 테이블 통계가 메타베이스에 대한 = DEBUG : '+ @ DB를
  @ SQL = 'INSERT INTO BI2_METABASE.dbo.Tablerowcount @ SQL = '삽입으로 발달 BI2_METABASE.dbo.Tablerowcount  
   선택 
   (CAST (일년 (getdate ()) * 10000 + 달 (getdate ()) * 100 + 날 (getdate ()) 그대로 + VARCHAR (8)) + '_'  
  + '_' '+ O.name)로 TableRowCountID DB를 정보 @ 
   , 날짜 getdate (등록)로 
   , @ 이름 데이터베이스 DB를 그대로  
   , 이름 그대로 O.name 테이블 
   , NrOfRecords 그대로 I.rowcnt 
   + @DB + '.dbo.sysobjects AS O 'DB를 프로그램에서 + @'+. O를 그대로 Dbo.sysobjects 
   + @DB 내부는 DB를 '가입 + @
  + '. I.id O.id = on 일 Dbo.sysindexes 난있는 그대로 
   장소에 I.indid (0, 1) 
   그리고 O.xtype = '' u 개 " 
   및 O [이름)]하지 인디애나 (sysdiagrams '' '' '' ''의 dtproperties 
   주문 인한 사망 [이름] "

  TRY 시도하는 BEGIN
  SP_EXECUTESQL @ SQL , N '@DB AS VARCHAR(32)' , @DB = @DB EXEC sp_executesql에 정보는 @ SQL은 N '을 @ DB를있는 그대로 "VARCHAR (32), @ @ DB를 = DB를
  @RC = @@ROWCOUNT 세트 @ RC =에 @ @ ROWCOUNT
  @DEBUG = 1 PRINT 'Records loaded: ' + CAST ( @RC AS VARCHAR ( 8 ) ) )있다면 @ DEBUG = 1 인쇄 '를 기록로드 :'+ 캐스트 (@ RC 그대로 VARCHAR (8)
  TRY  시도 
  CATCH 따라가려하는 BEGIN
  ERROR_MESSAGE ( ) 도서 검색 Error_Message () 
  'Error: processing table rowcount data for database ' 정자로 '오류 : 테이블 RowCount 데이터를 데이터베이스에 대한 처리'를
  + @ DB를
  @ SQL 정자로 @ SQL
  CUR_DB 닫기 CUR_DB
  CUR_DB 찾습니다 CUR_DB을 처리
  @RC 귀환 @ RC 
  CATCH  따라가려면
  CUR_DB INTO @DB FETCH 반했어요 @ DB를의 CUR_DB
  
  CUR_DB 닫기 CUR_DB
  CUR_DB 찾습니다 CUR_DB을 처리 
   




참고 : 저는 디버깅에 설정되어있는 추가 옵션이 있습니다. 경우 하나의 저항 값을 저장 프로 시저를 볼 수있는 출력. 당신이 원하기 때문에 더 나아가, 그는 멀리 이미 이전에 하루에 만들어진 모든 통계를 던져 하루 스냅샷.

이것은 SQL Server 에이전트 작업 스케줄링 있도록 밤에는 자동으로 호출 수 있으며, 그러면 통해 저장 프로 시저를하고 통계를 씁니다.

메시지를 남겨주 의견이나 질문을하십시오. 잘하면 당신이 뭔가.

저작권 2008. 판권 소유.

트랙백 (0)

트랙백 URI가 게시물에 대한이

댓글 (0)

RSS 피드 댓글

덧글 쓰기

대담한 이탤릭체로 인쇄하다 밑줄 스트라이크 홈페이지 영상 시세 smile wink laugh grin angry sad shocked cool tongue kiss cry
| groter 더 작은 더 큰 |
보안 이미지
쓰기 표시된 문자

바쁜