'DATABASE/SQLServer'에 해당되는 글 19건

  1. 2017.11.19 Oracle sequence구현하기
  2. 2011.08.11 [SQLServer] 소수점자리 절삭하기
  3. 2010.09.29 [SQLServer] 특정문자가 포함된 StoredProcedure 찾기
  4. 2010.09.01 [SQLServer] 동적 쿼리의 해결사 sp_executesql vs. exec
  5. 2010.08.31 [SQLServer] TRY..CATCH를 이용한 중첩 트랜잭션 예외처리.
  6. 2009.12.21 [SQLServer] 데이터의 길이 가져오기
  7. 2009.08.27 [SQLServer] Unix_timestamp 형식의 데이터를 일반시간으로 변환
  8. 2009.07.14 [SQLServer] SQLServer2005설치 후 확인하기
  9. 2009.05.18 [SQLServer] 날짜관련 함수
  10. 2009.04.20 [SQLServer]DBCC명령어 모음

Oracle sequence구현하기

DATABASE/SQLServer 2017. 11. 19. 17:46

Oracle sequence 구현하기


1. http://roqkffhwk.tistory.com/138


2. Sequence를 테이블로 만들어 관리하기

http://www.databaser.net/moniwiki/wiki.php/MS-SQL%EC%97%90%EC%84%9COracle%EC%9D%98Sequence%EB%94%B0%EB%9D%BC%ED%95%98%EA%B8%B0




Trackbacks 0 : Comments 0

Write a comment


[SQLServer] 소수점자리 절삭하기

DATABASE/SQLServer 2011. 8. 11. 13:45

오라클에서는 TRUNC함수로 소수점 이하 자리 절삭을 하는데,
SQLServer에서는 TRUNC함수가 없다.

그러면 어떻게 해야하는가?
이렇게 하면 된다.

SELECT ROUND(150.75665, 2, 1)
> 150.75000

SELECT ROUND(150.75665, 2, 0)
> 150.76000

정리하면...

ROUND ( numeric_expression, length [ , function ] )


numeric_expression
정확한 숫자 데이터 형식 또는 근사 숫자 데이터 형식이나 암시적으로 float로 변환할 수 있는 형식의 식입니다.

length
numeric_expression을 반올림할 전체 자릿수입니다. length가 양수이면 numeric_expression은 length에 지정한 소수 자릿수로 반올림됩니다. length가 음수이면 numeric_expression은 length에서 지정한 대로 소수점 왼쪽이 반올림됩니다.

함수
수행할 연산 유형입니다. function를 생략하거나 그 값이 0(기본값)이면 numeric_expression이 반올림됩니다. 0 이외의 값을 지정하면 numeric_expression이 잘립니다.



 

tags : SQLServer, 절삭
Trackbacks 0 : Comments 0

Write a comment


[SQLServer] 특정문자가 포함된 StoredProcedure 찾기

DATABASE/SQLServer 2010. 9. 29. 16:52
1. 특정 문자가 포함된 SP 검색

SELECT A.NAME
FROM SYSOBJECTS A, SYSCOMMENTS B
WHERE A.ID = B.ID
   AND B.TEXT LIKE '%' + '김승태' + '%'

2. 특정 이름의 SP 검색

SELECT A.NAME
FROM SYSOBJECTS A, SYSCOMMENTS B
WHERE A.ID = B.ID
   AND A.NAME LIKE '%' + @sp_name + '%'

tags : SQLServer
Trackbacks 0 : Comments 0

Write a comment


[SQLServer] 동적 쿼리의 해결사 sp_executesql vs. exec

DATABASE/SQLServer 2010. 9. 1. 00:07
/*
 동적 쿼리의 해결사 sp_executesql vs. exec


소개.
  Visual Basic, ASP, VB.NET에서 ADO, ADO.NET을 이용한
 Database 프로그램을 개발하는 경우    프로그램내에 SQL 구문을 문자열로
 연결한 후, 실행하도록 구성한 코드를 많이 보게 된다.

   이러한 코드 구성을 일반적으로 '동적 쿼리', '하드 코딩된 쿼리'라고
 부른다.

 ex. vb의 경우
 Dim strSQL As String

 strSQL="select orderid, orderdate, employeeid from orders"
 strSQL=strSQL+" where orderid=" & txtOrderID

 cnn.Execute strSQL

 그러나, 이러한 동적 쿼리의 사용은 가능한 배제하는 것이 권장 사항이다.
대신 SQL Server의 저장 프로시저를 이용해서, 처리 용량과 응답 속도의
향상 및 유지 보수 등, 저장 프로시저의 특징을 활용하는 것이다.

 그러나, 설계상의 문제나 또는 고객의 다양한 요구 구현 방법상의 이질적
문제로 인해서 동적 쿼리를 써야된 되는 상황이 자주 발생한다.
Q/A를 보면 질문의 유형 중에 이러 동적 쿼리 작성법에 대한 내용이 상당
 부분을 차지하고 있다는 사실을 통해서도 알 수가 있다.
 
 저장 프로시저를 통해서 코드를 구성하더라도, 저장 프로시저 내에서 다시
 동적 쿼리를 사용하게 되는 경우도 발생한다.
 -온라인 설명서에는 이를 '런타임 시 명령문 작성'이라고 주제를 붙여놨다-
 이 경우, SQL Server에서는 두 가지 명령을 사용할 수 있다.
 바로 sp_executesql, exec() 두 가지이다.
   
  클라이언트나 서버 사이드에서 동적 쿼리를 사용해야 하는
 상황이 되었을 때, 즉, 저장 프로시저를 직접 사용할 수 없는 상황에서는
 또 다른 해결 방법을 이용할 수 있다.

  다음 두 가지 상황에서의 해결 방법이다.

  - 클라인트 사이드에서 동적 쿼리가 필요한 경우
   ADO, ADO.NET에서는 파라미터를 가진 동적 쿼리를 지정할 수 있으며,
   일반적으로 아래와 코드 구성을 가진다.
           
   1. ADO, ODBC, Command 오브젝트 연동
     Dim strSQL As String

     strSQL="select orderid, orderdate, employeeid from orders"
     strSQL=strSQL+" where orderid = ?"

   2. ADO.NET, SqlClient 네임스페이스, SqlCommand 오브젝트와 연동
     Dim strSQL As String

     strSQL="select orderid, orderdate, employeeid from orders"
     strSQL=strSQL+" where orderid = @orderid"

  위에 코드를 실행하면 실제 SQL Server에서는 sp_executesql 시스템
 프로시저를 통해서 실행이 된다.
 특히 ADO.NET의 경우는 디자인 타임에 'SqlDataAdapter Configuration
 Wizard'를 사용하게 되면 위와 같은 코드를 작성해 준다.


  - SQL Server, 저장 프로시저에서 동적 쿼리가 필요한 경우
   exec() 아니라 sp_executesql 시스템 프로시저를 이용한다.

 결국, 클라이언트 사이드건 서버 사이드건 sp_executesql 이 사용되는 것을
알 수 있다.
 exec()를 쓴 경우와 sp_executesql를 사용한 경우의 성능과 SQL Server의
Cache 매니저의 상황 비교에 대한 내용을 마지막에 추가해 두었다.

 일반적으로 sp_executesql은 exec() 비해 몇 가지 추가 장점을 제공한다.

  - 쿼리문안에 매개변수(입력/출력)를 정의할 수 있다.
  - 매개변수 사용으로 인해 쿼리 최적화 프로그램이 컴파일된 실행 플랜을
   재 사용할 확률이 높아진다.

 실제로, exec()와 sp_executesql은 Cache 매니저의 처리 방법 및 활동 상태가
다르다는 것을 마지막에 추가한 성능 모니터링을 통해서 알 수가 있을 것이다.

 이번 기회의 sp_executesql 시스템 프로시저 다양한 사용법과 관련 지식을 얻는데
미력하나마 도움이 되었으면 한다.
 그럼, 구문부터 살펴보자.    


구문.

 sp_executesql [@stmt =] stmt
 [
   {, [@params =] N'@parameter_name  data_type [,...n]' }
   {, [@param1 =] 'value1' [,...n] }
 ]

 인수설명.
  @stmt: T-SQL문 또는 배치 명령. ntext 형으로 변환될 수 있는
      변수 또는 유니코드 상수 문자열.
      내부에 @name 형식의 파라미터를 포함할 수 있다.

   @params: @stmt에 포함된 모든 파라미터의 이름과 데이터 타입을 정의한다.
   @param1: @params 파라미터에서 첫번째 파라미터에 할당할 값
   n : 각 파라미터에 대한 값을 할당한다.


참고.
  - UNICODE 문자열 상수를 지정할 때는 N'...'형식을 사용한다.
 sp_executesql 프로시저에 선언되어 있는 파라미터가 ntext형이기 때문에 문자열을
 직접 지정하실 때는 위와 같은 형태를 사용하시면 됩니다.

  - sp_executesql은 sql로 구성된 시스템 프로시저가 아니라, 확장 프로시저이다.
*/



/*
기본 예제.  
    TOP 절의 값을 동적으로 지정하고자 하는 경우
    (아래 구문은 set rowcount n 세션 옵션으로 대치할 수도 있다.)
*/
    declare @cnt as nvarchar(5)
    declare @stmt as nvarchar(100)
    set @cnt = '5'
    set @stmt = 'select top ' + @cnt + ' * from northwind.dbo.orders'
   
    exec sp_executesql @stmt



/*
기본 예제.  
    단순히 SQL을 동적으로 작성하고자 하는 경우로, @db의 값이 실행 시마다
    다른 데이터베이스명이 올 수 있다고 가정한다. 테이블명은 동일한다.
*/
    declare @db as nvarchar(20)
    declare @stmt as nvarchar(100)
    set @db = 'northwind'
    set @stmt = 'select * from '+ @db +'.dbo.orders'
   
    exec sp_executesql @stmt



/*
기본 예제.  
    하나 이상의 명령을, 배치로 실행
*/
    declare @stmt as nvarchar(500)
    set @stmt = 'use northwind; '
    set @stmt = @stmt + 'select top 5 * from dbo.orders where
orderid=10248; '
    set @stmt = @stmt + 'select top 5 * from dbo.[order details] where
orderid=10248'
   
    exec sp_executesql @stmt


/*
입력 파라미터를 적용한 예제.  

    @orderid 입력 파라미터를 이용해서 해당 주문 번호를 가진
 [order details] 테이블의 주문 제품 정보를 출력
*/
    use northwind

    declare @stmt as nvarchar(100)
    declare @params as nvarchar(100)
    set @stmt = 'select productid, quantity, unitprice from '
  set @stmt = @stmt + 'dbo.[order details] where orderid=@orderid'
    set @params = '@orderid int'
   
    exec sp_executesql @stmt, @params, @orderid=10248


/*
입력 파라미터를 적용한 예제.  

    위 예제를 실제로 저장 프로시저 안에서 연동한 경우.
*/
    use northwind

    create proc upOrderDetailsSel
        @porderid    int
    as
        declare @stmt as nvarchar(100)
        declare @params as nvarchar(100)
        set @stmt = 'select productid, quantity, unitprice from '
      set @stmt = @stmt + 'dbo.[order details] where orderid=@orderid'
        set @params = '@orderid int'
       
        exec sp_executesql @stmt, @params, @orderid=@porderid
    go
    exec upOrderDetailsSel @porderid = 10248



/*
input 파라미터를 적용한 예제.  

    @table을 입력 파라미터를 이용해서 실제 입력할 대상 테이블을 결정,
    입력될 컬럼값들 또한 입력 파라미터로 처리한 예제.

*/
    -- 아래 테스트용 테이블을 우선 작성할 것.
    create table northwind.dbo.table1 (
        a    int
    ,    b int
    , c int
    )

    use northwind

    declare @table as nvarchar(20)
    declare @stmt as nvarchar(100)
    declare @params as nvarchar(100)

    set @table = 'dbo.table1'
    set @stmt = 'insert into ' + @table + ' '
  set @stmt = @stmt + 'values (@a, @b, @c)'
    set @params = '@a int, @b int, @c int'
   
    exec sp_executesql @stmt, @params, @a=1, @b=2, @c=3

    -- 확인    
    select * from table1



/*
output 파라미터를 적용한 예제.  

     동적 SQL문 내에도 출력(OUTPUT) 파라미터를 선언하고
    결과 값을 리턴 받을 수 있다. 저장 프로시저에서 출력 파라미터를
    사용하는 것과 동일하게, 선언부와 호출부에 반드시 OUTPUT 키워드를
    지정한다.
*/
    use northwind

    declare @stmt as nvarchar(100)
    declare @params as nvarchar(100)
    declare @orderret as int

    set @stmt = 'select @ordercnt = count(*) from dbo.orders'
    set @params = '@ordercnt as int OUTPUT' -- OUTPUT 키워드에 주의

    -- 여기도 OUTPUT 키워드를 지정한다.
    exec sp_executesql @stmt, @params, @ordercnt = @orderret OUTPUT

    -- 확인    
    select @orderret




/*
이런 것은 지원이 안된다.

 *. sp_executesql은 배치, 저장 프로시저, 트리거처럼 한 배치로 실행된다.

 1. 동적 SQL문에서는 RETURN 문을 사용할 수 없다.

 2. 로컬 변수를 액세스 할 수 없다.
    declare @chr char(3)
    set @chr = 'abc'
   
    sp_executesql N'PRINT @CharVariable'
    GO

 3. 현재 데이터베이스가 변경되지 않는다.
    use pubs
    go
    sp_executesql N'use northwind'
    select * from shippers    -- shippers 테이블은 northwind에 있다.
    go

*/


/*
전문 개발자및 관리자를 위한 추가 정보

성능 비교.
    만일, 여러분이 Windows NT/2000의 성능 모니터의 사용법을 알고 있다면,
 아래 3가지 사용 예에 대한 모니터를 수행하고 각각 Cache Manager상의
 활동이 어떻게 다른지를 비교 해 보면 많은 도움이 될 것이다.
   
  아래에 성능 모니터에 모니터링할 관련 오브젝트 및 카운트을 적어 두었다.
        성능 개체
            SQL Server:Cache Manager
                - 모든 카운터
                - 다음 목록에서 인스턴스 선택
                    _Total
                    Adhoc Sql Plans
                    Execution Context
                    Procedure Plans
                    기타... (관심이 있다면)    
               

    참고.
        3개의 방법을 개별적으로 테스트할 때, Procedure Cache상에 동일한
    플랜이 재 사용되는 것을 방지하기 위해

        DBCC FREEPROCCACHE

     명령을 사용할 수 있다.
    이 명령은 프로시저 캐시에서 모든 요소를 제거한다.
  이 작업을 해 주어야, Cache Object Counter가 늘어나는 것을 볼 수 있다.

        그리고, 현재 Cache된 Object에 대한 정보를 보고자 하는 경우 아래

    쿼리를 이용하면 된다.
       
        select * from master..syscacheobjects
            where dbid = db_id('northwind')



1. 저장 프로시저 테스트용
    -- DROP PROC dbo.upOrderDetailsQuery
    CREATE PROC dbo.upOrderDetailsQuery
    @orderid int
    AS
        select productid, quantity, unitprice from dbo.[order details]
        where orderid = @orderid
    go

    EXEC dbo.upOrderDetailsQuery @orderid = 10248



2. sp_executesql

    USE Northwind

    declare @stmt as nvarchar(100)
    declare @params as nvarchar(100)
    set @stmt = 'select productid, quantity, unitprice from '
  set @stmt = @stmt + 'dbo.[order details] where orderid=@orderid'
    set @params = '@orderid int'
   
    exec sp_executesql @stmt, @params, @orderid=10248
    go
       


3. EXEC() 사용

    USE Northwind

    declare @stmt as nvarchar(100)
    declare @orderid varchar(10)
    set @orderid = '10248'
    set @stmt = 'select productid, quantity, unitprice from '
  set @stmt = @stmt + 'dbo.[order details] where orderid = '+ @orderid
       
    EXEC (@stmt)

*/

출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=39&MAEULNo=16&no=384&ref=201

Trackbacks 0 : Comments 0

Write a comment


[SQLServer] TRY..CATCH를 이용한 중첩 트랜잭션 예외처리.

DATABASE/SQLServer 2010. 8. 31. 10:17
TRY..CATCH를 이용한 중첩 트랜잭션 예외처리.  

개요.

TRY .. CATCH 구문 내에서의 트랙잭션 처리에 대해 어떻게 구현되는지 알아보는 것과 트랜잭션으로 처리하는 프로시저 내에서

다시 트랜잭션으로 처리하는 프로시저를 호출 시 제대로 작동하는지 확인하는 것이 이 문서의 목적입니다.


테스트 샘플.


테스트 샘플은 분모를 파라미터로 받아서 0을 제외한 값은 에러가 나지 않고 0인 값은 에러가 나는 예제입니다.



1. 테스트 테이블 생성

CREATE TABLE TryTest
(
       id1 int,
       id2 int
)

2. 부모 프로시저 작성.

CREATE PROCEDURE ParentTest

(
       @bunmo int
)
AS

BEGIN
SET NOCOUNT ON;

       BEGIN TRY

             BEGIN TRAN ParentTest1

                    INSERT INTO TryTest VALUES(2,1)

                    EXEC ChildTest @bunmo

                    PRINT('ParentTest')

                    INSERT INTO TryTest VALUES(2,2)

             COMMIT TRAN ParentTest1

       END TRY
       BEGIN CATCH

             ROLLBACK TRAN ParentTest1
             PRINT('Parent ERROR')

       END CATCH

       SET NOCOUNT OFF;

END 

3. 자식 프로시저 작성.

CREATE PROCEDURE ChildTest ( 
       @bunmo int
)

AS

BEGIN

SET NOCOUNT ON;

       BEGIN TRY

             BEGIN TRAN ChildTest1
                    INSERT INTO TryTest VALUES(1,1)
                    PRINT(1/@bunmo)
                    INSERT INTO TryTest VALUES(1,2)
                    COMMIT TRAN ChildTest1
       END TRY

       BEGIN CATCH
             ROLLBACK TRAN ChildTest1
             PRINT('Child ERROR')
       END CATCH

       SET NOCOUNT OFF;

END

4. 실행.

4.1. 에러 발생 시

EXEC ParentTest 0

실행 결과 : Parent ERROR
데이터 결과 : 데이터 쌓이지 않음.

흐름.

ParentTest
프로시저에 2,1 데이터를 등록 ChildTest 프로시저를 실행합니다.
ChildTest 내에서 1,1 인서트 0으로 나누려 했기 때문에 CATCH 구문으로 이동하여 롤백합니다.
'Child ERROR'
출력하지 않는 이유는 ROLLBACK TRAN ChildTest1 시점에 프로시저를 벗어나기 때문입니다.
다시 ParentTest으로 넘어온 ParentTest 출력하지 않고
부모에서 ROLLBACK 되었기 때문에
바로 CATCH 구문으로 이동합니다.
롤백 처리한 'Parent ERROR' 출력합니다.
결국 Parent, Child 모두 롤백되므로 인서트된 데이터들은 없습니다.

4.2. 정상 실행 시

EXEC ParentTest 1

실행 결과 :

1

ParentTest

데이터 결과 : 4건 등록됨.
2         1
1         1
1         2
2         2


흐름.
ParentTest 프로시저에 2,1 데이터를 등록 ChildTest 프로시저를 실행합니다.
ChildTest 내에서 1,1 인서트 1 나누려 했기 때문에 CATCH 구문으로 이동하지 않고 1,2 인서트 합니다.
트랜잭션을 COMMIT 시킨 Parent 돌아와서 ParentTest’ 출력 2,2 인서트하고 COMMIT 시킵니다.
 

5. 결론

TRY..CATCH 이용하여 중첩 프로시저 호출로 인한 트랜잭션 처리는 데이터 무결성을 보장합니다.

출처 : http://www.mobilepro.pe.kr/trackback_post_122.aspx

tags : SQLServer
Trackbacks 0 : Comments 0

Write a comment


[SQLServer] 데이터의 길이 가져오기

DATABASE/SQLServer 2009. 12. 21. 16:26

SQL Server에서 컬럼 값의 길이를 가져와야 할 경우, 크게
- 그냥 길이
- byte수
로 구분할 수 있다.

오라클에서는

1) SELECT LENGTH('모델링월드')   FROM DUAL;
2) SELECT LENGTHB('모델링월드') FROM DUAL;
일 경우


1)은 5, 2)는 10을 리턴한다.

이건 이전 부터 알고있었는데, 요걸 SQLServer에서 사용할 일이 생겼다.
열심히 찾아 보았다. ^^;
역시 있었다.

문법도 오라클과 동일하다.

DATALENGTH ( expression )


-인수
expression
임의 데이터 형식의 식입니다.

-반환 값
int

1) SELECT LEN('모델링월드')
2) SELECT DATALENGTH('모델링월드')
일 경우
1)은 5, 2)는 10을 리턴한다.

여기서 주의할 것은 오라클은 문자열 뒤의 공백을 길이 또는 바이트수에 포함시키는 반면
SQLServer는 문자열 뒤의 공백은 포함하지 않는다.

1) SELECT LEN('모델링월드 ')
2) SELECT DATALENGTH('모델링월드 ')

1)일 경우 6이 아닌 5를 리턴한다.(DATALENGTH는 데이터 길이 그대로 11을 리턴한다)

tags : SQLServer, 길이
Trackbacks 0 : Comments 0

Write a comment


[SQLServer] Unix_timestamp 형식의 데이터를 일반시간으로 변환

DATABASE/SQLServer 2009. 8. 27. 20:03

DATEADD(hh, 9, DATEADD(s, regdate, '1970-01-01'))

tags : SQLServer
Trackbacks 0 : Comments 0

Write a comment


[SQLServer] SQLServer2005설치 후 확인하기

DATABASE/SQLServer 2009. 7. 14. 10:46
SQLServer2005설치 후 잘 설치가 되었는지 확인해보자.

1. 실행 에서services.msc입력 후 확인



2. 서비스 창에
- SQL Server(ADMIN1)
- SQL Server Agent(ADMIN1)
- SQL Server Analysis Services(ADMIN1)
- SQL Server FullText Search(ADMIN1)
등 의 서비스가 "시작됨"으로 되어있으면 정상적으로 설치된것이다.
"ADMIN1"은 명명된 인스턴스로 설치했을 경우 입력한 이름입니다.




혹! 틀린부분이 있다면 의견 바랍니다~^^
tags : 2005, SQLServer
Trackbacks 0 : Comments 0

Write a comment


[SQLServer] 날짜관련 함수

DATABASE/SQLServer 2009. 5. 18. 16:41

-- 15일 후 날짜구하기
SELECT GETDATE(), DATEADD(DD, 15, getdate())
-- 3달 후 날짜구하기
SELECT GETDATE(), DATEADD(MM, 3, getdate())

-- 기간차이 구하기(날짜 사이의 간격)
SELECT DATEDIFF(year, '20051220', '20060101')
SELECT DATEDIFF(month, '20051220', '20060101')
SELECT DATEDIFF(day, '20051220', '20060101')
SELECT DATEDIFF(hh, date1, date2)
SELECT DATEDIFF(mi, date1, date2) -- 분
SELECT DATEDIFF(ss, date1, date2) -- 초
SELECT DATEDIFF(ms, date1, date2) -- 밀리세컨드


--현재 달의 첫 째날 구하기
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--현재주의 월요일 구하기
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
--현 재해의 첫 째날 구하기
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
--현재분기의 첫 째날 구하기
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
--현재 날의 자정주의 구하기
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)



select dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate() ), 0))
--지난달의 마지막 날 구하기

select dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate() ), 0))
--지난해의 마지막 날 구하기

select dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate() )+1, 0))
--현재 달의 마지막 날 구하기

select dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate() )+1, 0))
--현재 해의 마지막 날 구하기

그럼 마지막으로 한번 더 응용해서 해당 달의 첫째 주 월요일을 구해보자
select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
--현재 달의 첫째 주 월요일 구하기

Trackbacks 0 : Comments 0

Write a comment


[SQLServer]DBCC명령어 모음

DATABASE/SQLServer 2009. 4. 20. 16:35

============================================================================
1. DBCC CHECKALLOC

- 디스크 공간 할당 구조의 일관성을 검사
============================================================================

   DBCC CHECKALLOC
     ( '데이터베이스이름'
             [ , NOINDEX -- 시스템 테이블이 아닌 테이블의 클러스터되지 않은 인덱스를 검사하지 않음
                |
                 { -- 단일사용자모드에서만 사용가능
         REPAIR_ALLOW_DATA_LOSS  -- 일부데이터손실 될 수 있음
                     | REPAIR_FAST   -- 대충복구
                     | REPAIR_REBUILD   -- 모든복구작업수행 (인덱스다시생성)
                } ]
    )     [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ] -- 에러메시지 표시여부
                     [ , [ TABLOCK ] ]   -- 공유잠금 (여기서는 무시)
                     [ , [ ESTIMATEONLY ] ]   -- 명령의 실행에 필요한 tempdb 공간의 예상크기를 표시
                }
        ]



============================================================================
2. DBCC CHECKCATALOG

- 시스템 테이블의 일관성과 시스템 테이블 간의 일관성을 검사
============================================================================

 DBCC CHECKCATALOG
      ( '데이터베이스이름'
     )    
 [ WITH NO_INFOMSGS ] 
 


============================================================================
3. DBCC CHECKCONSTRAINTS

- 지정한 테이블에서 특정 제약 조건이나 모든 제약조건의 무결성을 검사
============================================================================

 DBCC CHECKCONSTRAINTS
      [( '테이블이름' | '제약조건' )]
 [ WITH { ALL_ERRORMSGS | ALL_CONSTRAINTS } ]


============================================================================
4. DBCC CHECKDB

- 지정한 데이터베이스에서 모든 개체의 할당과 구조적 무결성을 검사
- 데이터베이스안에 있는 모든 내용의 무결성을 검사
- 가장 안정한 복구문
- DBCC CHECKDB 문을 최근에 실행했다면 CHECKALLOC, CHECKTABLE 을 실행할 필요가 없다.
- 병렬로 검사 수행 ( 추적 플래그 2528 을 쓰면 병렬검사를 해제할수 있다 )

- 검사내용
 - 인덱스와 데이터 페이지가 제대로 연결되어있는가?
 - 인덱스 정렬순서가 제대로 인가?
 - 포인터가 일치하는가?
 - 각 페이지의 데이터가 적절한가?
 - 페이지 오프셋이 적절한가?
============================================================================

 DBCC CHECKDB
      ( '데이터베이스명'
              [ , NOINDEX   -- 시스템 테이블이 아닌 테이블의 클러스터되지 않은 인덱스를 검사하지 않도록 지정합니다.
                 | { REPAIR_ALLOW_DATA_LOSS
                     | REPAIR_FAST
                     | REPAIR_REBUILD
                    } ]
     )    
 [
  WITH { [ ALL_ERRORMSGS ] -- 개체당 오류수를 무제한으로 표시
                     [ , [ NO_INFOMSGS ] ] -- 모든 정보 메시지와 사용한 공간보고서를 표시안함
                     [ , [ TABLOCK ] ]  -- 공유테이블 잠금
                     [ , [ ESTIMATEONLY ] ]  -- DBCC CHECKDB 실행에 필요한 tempdb 공간의 예상크기와 지정된 다른 옵션을 모두 표시
                    [ , [ PHYSICAL_ONLY ] ]  -- 검사를 제한 (페이지와 레코드헤더의 실제구조의 무결성, 페이지의 개체ID 와 인덱스 ID 간의 일관성 및 할당구조로 검사를 제한
                    }
        ]



============================================================================
5. DBCC CHECKFILEGROUP

- 지정한 파일 그룹에서 현재 데이터 베이스에 있는 모든 테이블의 할당과 구조적 무결성을 검사
============================================================================

 DBCC CHECKFILEGROUP
      ( [ { 'filegroup' | filegroup_id } ]
         [ , NOINDEX ]
     )    
 [
  WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ]
                     [ , [ TABLOCK ] ]
                     [ , [ ESTIMATEONLY ] ]
                    }
        ]


============================================================================
6. DBCC CHECKIDENT

- 지정한 테이블의 현재 ID 값을 검사하고 필요하면 수정합니다.
============================================================================

 DBCC CHECKIDENT
      ( '테이블 이름'
          [ ,  { NORESEED
                      | { RESEED [ , new_reseed_value ] }
             }
          ]
     )


============================================================================
7. DBCC CHECKTABLE

- 지정한 테이블이나 인덱스된 뷰에 대해 데이터, 인덱스, text, ntext, image 페이지의 무결성을 검사합니다.
- 검사내용
 - 인덱스와 데이터 페이지가 제대로 연결되어 있는가?
 - 인덱스 정렬순서가 제대로 되어 있는가?
 - 포인터가 일치하는가?
 - 각 페이지의 데이터가 적절한가?
 - 페이지 오프셋이 적절한가?

- 테이블 잠금을 얻지 못하여 데이터 변경은 허용되지만 메타데이터의 변경을 방지하는 스키마 잠금을 허용
============================================================================

 DBCC CHECKTABLE
      ( '테이블이름' | '뷰명'

          [ ,  NOINDEX
              |  index_id   -- 인덱스 ID 번호
              | {  
    REPAIR_ALLOW_DATA_LOSS
                  |  REPAIR_FAST
                  |  REPAIR_REBUILD
    }
         ]

     )    
 [ WITH {
  [  ALL_ERRORMSGS
      |  NO_INFOMSGS
  ]
                [ , [ TABLOCK ] ]
                [ , [ ESTIMATEONLY ] ]
                [ , [ PHYSICAL_ONLY ] ]
               }
        ]


============================================================================
8. DBCC CLEANTABLE

- 삭제된 가변길이 열과 텍스트 열의 공간을 다시 사용
- ALTER TABLE DROP COLUMN 문을 사용하여 가변길이 열이나 text 열을 삭제한 후 공간을 반환하지만 고정길이 열이 삭제된 후에는 공간을 반환하지 않는다.

============================================================================

 DBCC CLEANTABLE
      ( { '데이터베이스이름' | 데이터베이스아이디 }
         , { '테이블이름' | 테이블아이디 | '뷰명' | 뷰아이디 }
         [ , batch_size ]  - 트랜잭션 당 처리되는 행 수 ( 값 지정 않으면 한 트랜잭션에서 전체테이블을 처리 )
     )



============================================================================
9. DBCC DBREINDEX

- 지정한 데이터베이스의 테이블에 대해 하나 이상의 인덱스를 다시 작성
- 시스템 테이블에 대해 사용할 수 없습니다.
============================================================================

 DBCC DBREINDEX
     (    
  [  'database.owner.table_name'   
               [ , index_name
    [ , fillfactor ]
   ]
         ]
     )    
 [ WITH NO_INFOMSGS ]


============================================================================
10. DBCC DBREPAIR

- 손상된 데이터베이스를 삭제합니다.
- 손상된 데이터베이스를 삭제할 경우에는 DROP DATABASE 를 사용하는 것이 좋습니다.

============================================================================



============================================================================
11. DBCC dllname(FREE)

- 지정한 확장 저장 프로시저의 동적 연결 라이브러리를 메모리에서 언로드합니다.

============================================================================

 DBCC DLL이름 ( FREE )


============================================================================
12. DBCC DROPCLEANBUFFERS

- 버퍼 풀에서 빈 버퍼를 모두 제거

============================================================================
 
 DBCC DROPCLEANBUFFERS



============================================================================
13. DBCC FREEPROCCACHE

- 프로시저 캐시에서 모든 요소를 제거
- 프로시저 캐시를 해제하면 임의 SQL 문이 캐시에서 다시 사용되지 않고 다시 컴파일됩니다.
============================================================================

 DBCC FREEPROCCACHE

============================================================================
14. DBCC INDEXDEFRAG

- 지정한 테이블이나 뷰의 클러스터된 인덱스와 보조 인덱스의 조각을 모음
- 인덱스 스캔성능을 향상시키기 위해 페이지의 물리적 순서가 왼쪽에서 오른쪽으로 잎 노드의 논리적 순서와 일치하다고 인덱스 잎 수준의 조각을 모음
============================================================================

 DBCC INDEXDEFRAG
      (
  { 데이터베이스이름 | 데이터베이스아이디 | 0 }
     ,  { 테이블이름 | 테이블아이디 | '뷰명' | 뷰아이디 }
            ,  { 인덱스이름 | 인덱스아이디 }
     )   


============================================================================
15. DBCC INPUTBUFFER

- 클라이언트에서 MSSQL 로 보낸 최종 명령문을 표시
- SP_WHO2 를 이용해서 spid 를 얻은후에 해당 spid 쿼리를 볼 수 있다.
- EventType, Parameters, EventInfo
============================================================================

 DBCC INPUTBUFFER (spid)


============================================================================
16. DBCC OPENTRAN

- 지정한 데이터베이스에서 가장 오래된 활성 트랜잭션과 가장 오래된 분산 및 비분산 복제된 트랜잭션에 대한 정보를 표시
============================================================================

 DBCC OPENTRAN
     (     { '데이터베이스이름' | 데이터베이스아이디} )
        [ WITH TABLERESULTS
             [ , NO_INFOMSGS ]
        ]


============================================================================
17. DBCC OUTPUTBUFFER

- 지정한 시스템 프로세스 ID 의 현재 출력버퍼를 16진수와 ASCII 형식으로 반환
============================================================================

 DBCC OUTPUTBUFFER ( spid )


============================================================================
18. DBCC PINTABLE / DBCC UNPINTABLE (해제)

- 테이블을 메모리에 고정 (플러시 하지 않음)
- 정말 자주 쓰이는 테이블의 경우
- 주의 : PINTABLE 은 성능을 향상시킬 수 있지만 주의해서 사용해야 합니다.
 커다란 테이블을 고정할 경우 많은 용량의 버퍼캐시를 사용하므로 다른 테이블에서 사용할 캐시가 부족하게 되어 성능저하가 발생 할 수 있음.

- UNPINTABLE 로 해제
============================================================================

 DBCC PINTABLE ( database_id , table_id )
 DBCC UNPINTABLE ( database_id , table_id )



============================================================================
19. DBCC PROCCACHE

- 프로시저 캐시에 대한 정보를 테이블 형식으로 반환
- SQL Server 성능 모니터는 프로시저 캐시에 대한 정보를 얻기위해 DBCC PROCCACHE 를 사용함
- 결과 집합

 num proc buffs    프로시저 캐시에 저장할 수 있는 저장 프로시저의 개수
 num proc buffs used   저장 프로시저를 보관하는 캐시 슬롯의 개수
 num proc buffs active   현재 실행 중인 저장 프로시저를 보관하는 캐시 슬롯의 개수
 proc cache size   프로시저 캐시의 전체 크기
 proc cache used   저장 프로시저를 보관하는 프로시저 캐시의 용량
 proc cache active   현재 실행 중인 저장 프로시저를 보관하는 프로시저 캐시의 용량

============================================================================

 DBCC PROCCACHE


============================================================================
20. DBCC SHOW_STATISTICS

- 지정한 테이블에서 특정 대상의 현재 배포 통계를 표시
- 결과집합

 Updated   통계가 마지막으로 업데이트된 날짜와 시간
 Rows    테이블의 행 수
 Rows Sampled   통계 정보를 위해 샘플링된 행 수
 Steps    배포 단계 수
 Density   첫 번째 인덱스 열 접두사의 선택도(자주 사용하지 않음)
 Average key length  첫 번째 인덱스 열 접두사의 평균 길이
 All density   인덱스 열 접두사 집합의 선택도(자주 사용함)
 Average length   인덱스 열 접두사 집합의 평균 길이
 Columns   전체 밀도 및 평균 길이가 표시되는 인덱스 열 접두사의 이름
 RANGE_HI_KEY   히스토그램 단계의 상위 바운드 값
 RANGE_ROWS   상위 바운드를 제외한 히스토그램 단계에 해당하는 예제의 행 수
 EQ_ROWS   히스토그램 단계의 상위 바운드 값과 동일한 예제의 행 수
 DISTINCT_RANGE_ROWS  상위 바운드를 제외한 히스토그램 단계에 있는 고유한 값 수
 AVG_RANGE_ROWS   상위 바운드(DISTINCT_RANGE_ROWS에 대해 RANGE_ROWS / DISTINCT_RANGE_ROWS > 0)를 제외한, 히스토그램 단계에 있는 중복 값의 평균 수
 
============================================================================
 
 DBCC SHOW_STATISTICS ( table , target )



============================================================================
21. DBCC SHOWCONTIG

- 지정한 테이블의 데이터와 인덱스에 대한 조각화 정보를 표시
- 인덱스가 심하게 조각난 경우에 조각난 정보를 감소시키는 방법
 - 클러스터된 인덱스를 삭제한 후 다시 만듬
 - DBCC INDEXDEFRAG | DBCC DBREINDEX 로 인덱스 다시 구성
- 결과집합

 Pages Scanned   테이블이나 인덱스의 페이지 수입니다.

 Extents Scanned  테이블이나 인덱스의 익스텐트 수입니다.

 Extent Switches  DBCC 문이 테이블이나 인덱스 페이지를 스캔하는 동안의 익스텐트 전환 횟수입니다.

 Avg. Pages per Extent  페이지 체인에서 익스텐트 당 페이지 수입니다.

 Scan Density [Best Count: Actual Count]
    Best count는 모든 데이터가 인접하여 있는 경우 이상적인 익스텐트 변경 횟수이고 
    Actual count는 실제 익스텐트 변경 횟수입니다. 스캔 밀도가 100이면 모든 데이터가 인접해 있고 100보다 작으면 일부 데이터가 조각화된 것입니다. 스캔 밀도는 % 단위입니다.

 Logical Scan Fragmentation
    인덱스의 잎 페이지 스캔에서 반환된 순서가 바뀐 페이지의 비율입니다. 이 값은 힙이나 텍스트 인덱스와는 관계가 없습니다.
    (순서가 바뀐 페이지란 IAM에 지정된 다음 페이지가 잎 페이지의 다음 페이지 포인터에서 가리키는 페이지와 다른 경우입니다.)

 Extent Scan Fragmentation
    인덱스의 잎 페이지 스캔에서 순서가 바뀐 익스텐트의 비율입니다. 이 값은 힙과는 관계가 없습니다.     (순서가 바뀐 익스텐트란 인덱스의 현재 페이지가 포함된 익스텐트가 물리적으로 이전 페이지가 포함된 익스텐트의 다음 익스텐트가 아닌 경우입니다. )

 Avg. Bytes free per page
    스캔된 페이지에서 사용 가능한 평균 바이트 수입니다. 이 값이 클수록 페이지의 채우기 비율이 낮으므로 값이 작을수록 좋습니다. 이 값은 행 크기에 따라 달라지며 행 크기가 크면 값이 커집니다.

 Avg. Page density (full) 평균 페이지 밀도입니다(단위: %). 이것은 행 크기를 고려한 값이므로 페이지의 채우기 비율을 더욱 정확하게 알 수 있습니다. 값이 클수록 좋습니다.

============================================================================

 DBCC SHOWCONTIG
     [    
  ( { table_name | table_id | view_name | view_id }
              [ , index_name | index_id ]
        )
     ]
      [ WITH {  ALL_INDEXES
                 |  FAST    -- 인덱스의 잎 또는 데이터 수준 페이지를 읽지 않음 (빠름)
   [ , ALL_INDEXES ]
                 |  TABLERESULTS   --결과를 추가 정보와 함께 행 집합으로 표시
   [ , { ALL_INDEXES } ]
                 [ , { FAST | ALL_LEVELS } ]
            }
     ]



============================================================================
22. DBCC SHRINKDATABASE

- 지정한 데이터베이스에서 데이터 파일의 크기를 축소시킴
- 파일 단위로 데이터 파일을 축소
- 데이터 파일과 로그파일의 대상 크기는 파일의 최소크기보다 작을수 없음
- NOTRUNCATE / TRUNCATEOLNY 는 데이터파일에는 적용되나 로그파일에는 적용되지 않는다.
============================================================================

 DBCC SHRINKDATABASE
      ( 데이터베이스이름 [ , 데이터베이스에 남겨둘 여유공간비율 ]

          [ , {   NOTRUNCATE  - 해제된 파일 공간을 데이터베이스 파일에서 보유
   |  TRUNCATEONLY  - 해제된 파일 공간을 운영체제에 반환
      }
  ]
     )



============================================================================
23. DBCC SHRINKFILE

- 관련 데이터베이스에 대해 지정한 데이터 파일이나 로그파일의 크기를 축소 시킴
============================================================================

 DBCC SHRINKFILE
      ( 
  {
  파일이름 | 파일아이디 }
           { [ , 변경할크기 ]
               | [ ,
    {
     EMPTYFILE  -- 지정한 파일의 모든 데이터를 동일한 파일 그룹의 다른파일로 마이그레이션, 더 이상 데이터를 저장할 수 없음.
    |  NOTRUNCATE  -- 해제된 파일 공간을 파일에 보유
    |  TRUNCATEONLY  -- 해제된 파일 공간을 운영체제에 반환
    }
     ]
         }
     )



============================================================================
24. DBCC SQLPERF

- 모든 데이터베이스에서 트랜잭션 로그공간의 사용에 관한 통계를 제공


- DBCC SQLPERF(LOGSPACE)
 
 결과 집합
 
 Database Name   로그 통계가 표시될 데이터베이스의 이름입니다.
 Log Size(MB)   로그에 사용 가능한 실제 공간의 크기입니다. Microsoft?? SQL Server™는 내부 헤더 정보를 위해 적은 양의 디스크 공간을 예약하므로 이것은 로그 공간에 원래 할당된 크기보다 작습니다.
 Log Space Used (%)  로그 파일에서 현재 트랜잭션 로그 정보가 차지하는 비율입니다.
 Status    로그 파일의 상태입니다(항상 0임).


- DBCC SQLPERF(UMSSTATS) : This Option returns data about SQL Server thread management.

 결과 집합

 Statistic                        Value
 -------------------------------- ------------------------
 Scheduler ID                     0.0 
 num users                        18.0  -- This is the number of SQL Server threads currently in the scheduler.
 num runnable                     0.0  -- This is the number of actual SQL Server threads that are runnable.
 num workers                      13.0  -- This is the actual number of worker there are to process threads. (This is the size of the thread pool.)
 idle workers                     11.0  -- The number of workers that are currently idle.
 work queued                      0.0 
 cntxt switches                   2.2994396E+7 -- The number of context switches between runnable threads.
 cntxt switches(idle)             1.7793976E+7 -- The number of context switches to the idle thread.
 Scheduler ID                     1.0
 num users                        15.0
 num runnable                     0.0
 num workers                      13.0
 idle workers                     10.0
 work queued                      0.0
 cntxt switches                   2.4836728E+7
 cntxt switches(idle)             1.6275707E+7
 Scheduler ID                     2.0
 num users                        17.0
 num runnable                     0.0
 num workers                      12.0
 idle workers                     11.0
 work queued                      0.0
 cntxt switches                   1.1331447E+7
 cntxt switches(idle)             1.6273097E+7
 Scheduler ID                     3.0
 num users                        16.0
 num runnable                     0.0
 num workers                      12.0
 idle workers                     11.0
 work queued                      0.0
 cntxt switches                   1.1110251E+7
 cntxt switches(idle)             1.624729E+7
 Scheduler Switches               0.0
 Total Work                       3.1632352E+7



- DBCC SQLPERF(WAITSTATS) : This Option returns data about wait types for SQL Server  resources.

- DBCC SQLPERF(IOSTATS)  : This Option returns data about outstanding SQL Server  reads and writers.

- DBCC SQLPERF(RASTATS)  : SQL Server read-ahead activity

- DBCC SQLPERF(THREADS)  : I/O, CPU, and memory usage per SQL Server Thread.



============================================================================

 DBCC SQLPERF ( LOGSPACE )


============================================================================
25. DBCC TRACEON / TRACEOFF
 
- 지정한 추적플래그를 설정 / 해제

============================================================================

 DBCC TRACEON ( trace# [ ,...n ] )
 DBCC TRACEOFF ( trace# [ ,...n ] )


============================================================================
26. DBCC TRACESTATUS
 
- 추적 플래그의 상태를 표시
- DBCC TRACESTATUS(-1) 로 하면 모든 추적 플래그의 상태를 표시
============================================================================

 DBCC TRACESTATUS ( trace# [ ,...n ] )



============================================================================
27. DBCC UPDATEUSAGE
 
- sp_spaceused 시스템 저장프로시저에서 잘못된 공간 사용정보가 보고되도록 하는 sysindexes 테이블의 부정확성을 보고하고 수정
- 테이블과 클러스터된 인덱스에 대해 sysindexes 테이블의 rows, used, reserved, dpages 열을 수정함
============================================================================

 DBCC UPDATEUSAGE
     (     { 'database_name' | 0 }
          [ , { 'table_name' | 'view_name' }
          [ , { index_id | 'index_name' } ] ]
     )
      [
  WITH    
   [ COUNT_ROWS ]   -- sysindexes 의 rows 열이 테이블이나 뷰의 현재 행 개수로 업데이트되도록 지정함. 단 indid 가 0 또는 1 인 sysindexes 행에만 작용 (커다란테이블과 인덱스된 뷰의 성능에만 영향을 줌)
   [ , NO_INFOMSGS ]  -- 모든 정보 메시지를 표시하지 않음
        ]



============================================================================
28. DBCC USEROPTIONS
 
- 현재 연결에 활성화된 SET 옵션을 반환함
============================================================================

 DBCC USEROPTIONS


============================================================================
29. DBCC CACHESTATS
 
- 현재 버퍼캐시안에 있는 오프젝트에 대한 정보를 보여줌
 - hit rates
 - compiled objects and plans

- 결과집합
 - Hit Ratio : Displays the percentage of time that this particular object was found in SQL Server's cache.
     The bigger this number, the better

 - Object Count  : Displays the total number of objects of the specified type that are cached.

 - Avg. Cost : A value used by SQL Server that measures how long it takes to compile a plan, along with the amount of memory needed by the plan. This value is used by SQL Server to determine if the plan should be cached or not.

 - Avg. Pages  : Measures the total number of 8K pages used, on average, for cached objects.

 - LW Object Count, LW Avg Cost, WL Avg Stay, LW Ave Use :
   All these columns indicate how many of the specified objects have been removed from the cache by the Lazy Writer.
   The lower the figure, the better.


============================================================================

 DBCC CACHESTATS



============================================================================
30. DBCC ERRORLOG

- 현재의 에러로그를 TRUNCATE
- sp_cycle_errorlog 도 같은 역할
============================================================================

 DBCC ERRORLOG


============================================================================
31. DBCC FLUSHPROCINDB

- 지정한 데이터베이스에 있는 스토어드 프로시저 캐시를 지운다. (전체가아님)
============================================================================
 
 DBCC FLUSHPROCINDB (데이터베이스이름)


============================================================================
32. DBCC MEMORYSTATUS

- 버퍼 캐시안에 있는 메모리 상태를 보여줌
-
 Buffer Distribution
 Buffer Counts
 Procedure Cache
 Dynamic Memory Manager
 Global Memory Objects
 Query Memory Objects
 Optimization Queue

============================================================================
 
 DBCC MEMORYSTATUS


============================================================================
33. DBCC PAGE

- SQL Server 안에 저장된 데이터 페이지의 컨텐츠를 볼수 있는 명령
- View the data page structure

============================================================================
 
 DBCC PAGE (
   {dbid|dbname}
  ,  pagenum   - 페이지넘버
  [, print option ]  - 페이지 헤더 정보를 출력하는 옵션
       0 : This option causes DBCC PAGE to print out only the page header information. (default)
       1 : page header information, each row of information from the page, and then page's offset table.
       2 : the same as option 1, except a single block of information (rather then separating the individual rows)

  [, cache ]  - 0 : 디스크로부터 페이지 번호를 반환
        1 : 캐시로 부터 페이지 번호를 반환 (default)

  [, logical ]  - 0 : virtual page number
        1 : logical page number
    )



============================================================================
34. DBCC SQLMGRSTATS

- ad-hoc , prepared Transact-SQL 구문이 어떻게 캐싱이 되는 지를 알수 있도록 함
- 결과집합
 Memory Used (8k Pages) - 메모리 페이지의 사용량
 Number CSql Objects - 캐시된 전체 수
 Number False Hits - Hit 실패수 (적을수록 좋다)
============================================================================
 
 DBCC FLUSHPROCINDB (데이터베이스이름)


============================================================================
35. DBCC BUFFER

- This Command can be used to display buffer headers and pages from the buffer cache.

- ex )
 DBCC TRACEON (3604)
 DBCC BUFFER(master, 'sysobjects')
============================================================================
 
 DBCC BUFFER ( [dbid | dbname]
   [, objid | objname ]
   [, nbufs]  -- number of buffers to examine
   [, printopt ]
    -- 0 : print out only the buffer header and page header (default)
    -- 1 : print out each row separately and the offset table
    -- 2 : print out each row as a whole and the offset table
      )



============================================================================
36. DBCC BYTES

- This command can be used to dump out bytes from a specific address.

- ex )
 DBCC TRACEON (3604)
 DBCC BYTES (10000000, 100)
============================================================================

 DBCC BYTES (startaddress, length)


============================================================================
37. DBCC DBINFO

- Displays DBINFO structure form the specified database.

- ex )
 DBCC TRACEON (3604)
 DBCC DBINFO(master)
============================================================================

 DBCC DBINFO (dbname)


============================================================================
38. DBCC DBTABLE

- This command displays the contents of then DBTABLE structure.
- This parameter keeps track of how many users are in the database.

- ex )
 DBCC TRACEON (3604)
 DBCC DBTABLE (master)
============================================================================

 DBCC DBTABLE ( [ dbid | dbname ] )


============================================================================
39. DBCC DES

- Prints the contents of the specified DES(descriptor).

- ex )
 DBCC TRACEON (3604)
 DBCC DES
============================================================================

 DBCC DES


============================================================================
40. DBCC IND

- Shows all pages in use by indexes of the specified table.

- ex )
 DBCC TRACEON (3604)
 DBCC IND (master, sysobjects, 0)
============================================================================

 DBCC IND ( [dbid | dbname] , [objid | objname], printopt )


============================================================================
41. DBCC LOG

- This command is used to view the transaction log for the specified database.

- ex )
 DBCC TRACEON (3604)
 DBCC LOG (master)
============================================================================

 DBCC LOG (
   [ dbid | dbname ]
   [, type ]  -- 0 : minimum infomation (operation, context, transaction id)
      -- 1 : more information ( plus flags, tags, row length, description )
      -- 2 : very detailed infomation (plus object name, index name, page id, slot id)
      -- 3 : full information about each operation
      -- 4 : full information about each operation plus hexadecimal dump of then current transaction log's row
      -- -1 : full information about each operaion plus hexadecimal dump of then current transaction log's row, plus Checkpoint Begin, DB version, Max XDESID
   )   


============================================================================
42. DBCC PROCBUF

- This command displays procedure buffer headers and stored procedure headers from the procedure cache.

- ex )
 DBCC TRACEON (3604)
 DBCC PROCBUF (master, 'sp_help', 1, 0)
============================================================================

 DBCC PROCBUF (
    [ dbid | dbname ]
   , [ objid | objname ]
   , nbufs
   , printopt -- 0 : only the proc buff and proc header
      -- 1 : proc buff, proc header, and contents of buffer.
       )


============================================================================
43. DBCC PRTIPAGE

- This command prints the page number pointed to by each row on the specified index page.

- ex )
 DBCC TRACEON (3604)

 DECLARE @dbid  int
 , @objectid int
 select @dbid = DB_ID('master')
 select @objectid = object_id('sysobjects')

 DBCC PRTIPAGE (@dbid, @objectid, 1, 0)
============================================================================

 DBCC PRTIPAGE ( dbid, objid, indexid, indexpage )


============================================================================
44. DBCC PSS

- This command shows info about processes currently connected to the server.

- ex )
 DBCC TRACEON (3604)
 DBCC PSS
============================================================================

 DBCC PSS (
   suid
  , spid
  , printopt -- 0 : standard output
     -- 1 : all open DES's and current sequence tree
   )


============================================================================
45. DBCC RESOURCE

- This command shows the server's level RESOURCE, PERFMON, and DS_CONFIG information.
 RESOURCE - shows addresses of various data structures used by the server.
 PERFMON  - structure contains master..spt_monitor field info.
 DS_CONFIG - structure contains master..syscurconfigs field information.

- ex )
 DBCC TRACEON (3604)
 DBCC RESOURCE
============================================================================

 DBCC RESOURCE


============================================================================
46. DBCC TAB

- view the data pages structure (in comparison with DBCC PAGE, this command will return information about all data pages for viewed table, not only for particular number)

- ex )
 DBCC TRACEON (3604)

 DECLARE @dbid  int
 , @objectid int
 select @dbid = DB_ID('master')
 select @objectid = OBJECT_ID('sysdatabases')

 DBCC TAB (@dbid, @objectid)
============================================================================

 DBCC TAB(dbid, objid)


출처 : http://blog.daum.net/turnnig-pointer/15744200
tags : DBCC, SQLServer
Trackbacks 0 : Comments 0

Write a comment