본문 바로가기
Programming/MSSQL

MSSQL 파일, 페이지 번호 보기 (DBA 관리용 시스템 프로시저)

by 제타 2018. 4. 9.
반응형


/************************************************************************************************

-- sp_filepageno0

-- BINARY의 first값에서 파일번호와 페이지번호를 DECIMAL로 출력한다.

************************************************************************************************/

USE MASTER

GO


IF OBJECT_ID('sp_filepageno0') IS NOT NULL

   DROP PROCEDURE sp_filepageno0

GO


CREATE PROC sp_filepageno0 

  @first BINARY(6) = NULL

AS

  SET NOCOUNT ON


  DECLARE @msg VARCHAR(100)

  DECLARE @file_id INT

  DECLARE @page_id INT


  IF (@first IS NULL)

  BEGIN  

    SET @msg = '''@first'' parameter is null. You can get @first from Sysindexes Table...'

    RAISERROR(@msg, 16, 1, @first)      

  

    RETURN(1)  

  END  


  SET @file_id = convert(varchar(5), (convert(int, substring(@first, 6, 1)) * power(2, 8)) 

                                   + (convert(int, substring(@first, 5, 1))) 

                )


  SET @page_id = convert(varchar(11), (convert(int, substring(@first, 4, 1)) * power(2, 24)) 

                                    + (convert(int, substring(@first, 3, 1)) * power(2, 16)) 

                                    + (convert(int, substring(@first, 2, 1)) * power(2, 8)) 

                                    + (convert(int, substring(@first, 1, 1))) 

)

  

  SELECT @file_id "FILE_ID", @page_id "PAGE_ID"


  RETURN(0) --sp_filepageno0


  SET NOCOUNT OFF


GO

  

GRANT EXECUTE ON sp_filepageno0 TO PUBLIC

GO


반응형