Active Directory 파티션에서 개체에 대한 정보를 저장할 때

(DC=test, DC=pe, DC=com>CN=Users>CN=홍 길동)

이런 규칙으로 데이터를 저장하게 되는 데, 이 저장에 필요한 프로토콜이

LDAP(Lightweight Directory Access Protocal)

 

LDAP 프로토콜은 도메인 컨트롤러에서 만들어지는 개체를 개별적인 이름(DC는 DC대로 관리하고 CN은 CN대로)으로 세부화해서 관리

LDAP 프로토콜이 표현하는 방식은 2가지가 있음

 

DC(Domain Componentname) 도메인 구성요소

OU(Organizational UnitName) 조직 단위

CN(Common Name) 일반 이름



1. UI 프레임워크

http://jqtouch.com/

http://code.google.com/p/iui/

http://webapp-net.com/

jqtouch + ext js + raphael
http://www.sencha.com/

iAd JS : Apple`s Javascript Web UI Library

monocle : 모바일 E-Book
http://monocle.inventivelabs.com.au/


2. Native App Framework

Phone Gap

http://www.phonegap.com/

 

Titanium

http://www.appcelerator.com/

 

QuickConnect

http://quickconnectfamily.org/


Nimble Kit

http://www.nimblekit.com/index.php

SQL Server 2005에서는 소유자 스키마를 소유하고 스키마 오브젝트를 소유합니다.

> 기호의 벌어진 쪽이 좁혀진 쪽을 소유한다는 의미로 사용했을 , 다음과 같이 표현할 있습니다.

소유자 > 스키마 > 오브젝트

 

따라서 소유자를 삭제할 경우에는 삭제할 소유자가 소유한 스키마의 소유권을 새로운 소유자에게 이전한 기존 소유자를 삭제하면 됩니다.

다음의 쿼리를 줄씩 실행해보시면 소유자 확인 이전, 삭제의 방법을 알게 되시리라 생각합니다.

반드시 충분한 테스트를 해보시고 실전에 사용하시기 바랍니다. ^^;;;

 

 

- SQL Server 2005 경우

 

00

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

01

-- 사용자와 관련 오브젝트 목록 확인 사용자 삭제 - SQL Server 2005

02

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

03

USE master;

04

GO

05

 

06

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

07

/**-- 테스트를 위한 사용자, 스키마, 테이블 생성--------------------------*/

08

 

09

-- 테스트 데이터 베이스 생성

10

CREATE DATABASE AccTestDB;

11

 

12

-- 로그인 생성

13

CREATE LOGIN AccountTestA WITH PASSWORD = 'test1';

14

CREATE LOGIN AccountTestB WITH PASSWORD = 'test2';

15

GO

16

 

17

-- 사용자 생성

18

USE AccTestDB;

19

GO

20

CREATE USER AccountTestA FOR LOGIN AccountTestA WITH DEFAULT_SCHEMA = AccSchema;

21

CREATE USER AccountTestB FOR LOGIN AccountTestB WITH DEFAULT_SCHEMA = AccSchema;

22

GO

23

 

24

-- 테이블 생성 권한을 위한 역할 추가

25

EXEC sp_addrolemember 'db_owner', 'AccountTestA';

26

EXEC sp_addrolemember 'db_owner', 'AccountTestB';

27

GO

28

 

29

-- 스키마 생성

30

CREATE SCHEMA AccSchema AUTHORIZATION AccountTestA;

31

 

32

-- 사용자 생성 확인

33

SELECT * FROM sys.sysusers;

34

SELECT * FROM sys.schemas;

35

 

36

-- SQL Server 2005에서는 소유자.테이블이 아닌 스키마.테이블로 테이블을 생성

37

EXECUTE AS LOGIN = 'AccountTestA';

38

GO

39

CREATE TABLE AccSchema.AccTable (Col1 int);

40

GO

41

 

42

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

43

/**-- AccountTestA 소유자인 오브젝트 목록 조회-------------------------*/

44

SELECT u.name as UserName, s.name as SchemaName, o.Type as ObjectType, o.name as ObjectName

45

FROM sys.sysusers u

46

JOIN sys.schemas s ON u.uid = s.principal_id

47

JOIN sys.objects o ON s.schema_id=o.schema_id

48

WHERE u.name = 'AccountTestA'

49

 

50

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

51

/**-- SQL Server 2005에서는 소유자가 스키마를 소유하고

52

스키마가 오브젝트를 소유하기 때문에

53

        소유자를 삭제할 경우에는 오브젝트를 삭제하지 않고

54

삭제할 소유자가 소유한 스키마의 소유권을 이전한 ,

55

소유자를 삭제한다. --*/

56

 

57

-- 소유자삭제

58

DROP USER AccountTestA

59

/*

60

메시지15138, 수준16, 상태1, 1

61

데이터베이스 보안 주체는 데이터베이스의 스키마을() 소유하며 삭제할 없습니다.

62

*/

63

 

64

-- AccountTestA 소유자인 테이블 목록 조회

65

SELECT u.name as UserName, s.name as SchemaName

66

FROM sys.sysusers u JOIN sys.schemas s ON u.uid = s.principal_id

67

WHERE u.name = 'AccountTestA'

68

 

69

-- 소유권 이전

70

ALTER AUTHORIZATION ON SCHEMA::AccSchema TO AccountTestB;

71

GO

72

 

73

-- 삭제하려는 소유자를 가진 테이블 삭제 , 사용자 삭제

74

DROP USER AccountTestA;

75

GO

76

SELECT * FROM sys.sysusers WHERE name = 'AccountTestA';

77

GO

78

/*

79

메시지916, 수준14, 상태1, 1

80

현재 보안 컨텍스트로는 서버 보안 주체 "AccountTestA"() 데이터베이스 "AccTestDB" 액세스 없습니다.

81

 

82

*/

83

 

84

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

85

-- 데이터베이스 삭제

86

REVERT;

87

 

88

USE master;

89

DROP DATABASE AccTestDB;

90

 

91

-- 로그인 삭제

92

DROP LOGIN AccountTestA;

93

DROP LOGIN AccountTestB;

 

 

 

- SQL Server 2000 경우

 

00

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

01

-- 사용자와 관련 오브젝트 목록 확인- SQL Server 2000

02

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

03

USE master;

04

GO

05

 

06

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

07

/**-- 테스트를 위한 사용자 테이블 생성----------------------------------------------*/

08

 

09

-- 테스트 데이터베이스 생성

10

CREATE DATABASE AccTestDB

11

GO

12

 

13

-- 로그인 생성

14

EXEC sp_addlogin 'AccountTest', 'test', 'AccTestDB'

15

 

16

-- 사용자 생성

17

USE AccTestDB

18

GO

19

EXEC sp_adduser 'AccountTest'

20

GO

21

 

22

-- 테이블 생성 권한을 위한 역할 추가

23

EXEC sp_addrolemember 'db_owner', 'AccountTest'

24

 

25

-- 사용자 생성 확인

26

SELECT * FROM sysusers WHERE name = 'AccountTest'

27

 

28

-- 실행 사용자를 AccountTest 변경

29

SETUSER 'AccountTest'

30

 

31

-- 관련 테이블 생성

32

CREATE TABLE AccTable (Col1 int)

33

 

34

 

35

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

36

/**-- AccountTest 소유자인 오브젝트 목록 조회-------------------------------------*/

37

SELECT o.xType as ObjectType, u.name as UserName, o.name as ObjectName

38

FROM sysusers u JOIN sysobjects o ON u.uid=o.uid

39

WHERE u.name = 'AccountTest'

40

 

41

 

42

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

43

/**-- 소유자 삭제 테스트-------------------------------------------------------------------*/

44

-- 소유자 삭제

45

EXEC sp_dropuser 'AccountTest'

46

/*

47

서버: 메시지15183, 수준16, 상태1, 프로시저sp_MScheck_uid_owns_anything, 17

48

데이터베이스의 개체를 소유하고 있으므로 사용자를 삭제할 없습니다.

49

*/

50

 

51

-- AccountTest 소유자인 테이블 목록 조회

52

SELECT u.name, o.name FROM sysusers u JOIN sysobjects o ON u.uid=o.uid

53

WHERE u.name = 'AccountTest' and o.xType='U'

54

 

55

-- 로그인 생성

56

SETUSER

57

EXEC sp_addlogin 'AccountTest2';

58

 

59

-- 사용자 생성

60

EXEC sp_adduser 'AccountTest2';

61

 

62

-- 소유자 이전

63

EXEC sp_changeobjectowner 'AccountTest.AccTable' , 'AccountTest2';

64

/*

65

주의: 개체 이름부분을 변경하면 스크립트나 저장프로시저를 손상시킬 있습니다.

66

*/

67

 

68

-- 소유자 삭제 재시도

69

EXEC sp_dropuser 'AccountTest'

70

 

71

-- 로그인 삭제

72

EXEC sp_droplogin 'AccountTest'

73

 

74

-- 확인

75

SELECT * FROM master.dbo.SYSXLOGINS

76

SELECT * FROM SYSUSERS

77

 

78

/**--테스트 완료------------------------------------------------------------------------*/

79

-- 데이터베이스 삭제

80

USE master

81

DROP DATABASE AccTestDB

82

 

83

-- 로그인 삭제

84

EXEC sp_droplogin 'AccountTest2'

85

 

86

-- 확인

87

SELECT * FROM master.dbo.SYSXLOGINS

88

SELECT * FROM SYSUSERS

 

 

[출처] [MS SQL] 사용자 계정과 관련된 오브젝트 확인 및 삭제 (서버관리 마스터 - OS, WAS, DB, Network)



 

기존 로그인 확인


sp_hleplogins -- 기존 로그인 전체를 보여줌

sp_helplogins 'sa'  -- sa 계정에 대한 로그인 정보


로그인 생성과 삭제 


----- window 계정 --------------------------------------------------------------------

exec sp_grantlogin 'testuser' -- db접근 포함, 비번필요없음

exec sp_revokelogin 'testuser'

--------------------------------------------------------------------------------------


----- sql server 계정 -----------------------------------------------------------------  

exec sp_addlogin 'kimes','pwd123','test' -- '계정이름', '비밀번호','디폴트DB'

exec sp_droplogin 'kimes'

---------------------------------------------------------------------------------------


----- 로그인 유저 확인 ----------------------------------------------------------------

select name from master.dbo.sysxlogins

---------------------------------------------------------------------------------------


----- 암호 변경------------------------------------------------------------------------

exec sp_password 'kimes','kimes1234','kimes' -- '기존비번','새 비번','계정이름'

--------------------------------------------------------------------------------------


DB에 사용자 등록 


----- DB접근 권한 -------------------------------------------------------------------

use TEST

exec sp_grantdbaccess 'kimes'      -- 사용자 'kimes'에게 TEST DB에 접근허가(등록)

exec sp_revokedbaccess 'kimes'     -- 'kimes'의 TEST DB의 접근권한을 빼앗음(제거)

--------------------------------------------------------------------------------------


----- 현재 DB의 사용자 확 ---------------------------------------------------------

use TEST

select name from sysusers where islogin = 1

-------------------------------------------------------------------------------------


권 한 


----- OBJECT 사용권한 --------------------------------------------------------------

use TEST


grant select,delete,update,insert        -- select,delete,update,insert 권한을 

   on a                                  -- TEST DB의 a 라는 테이블에

   to kimes                              -- 'kimes'에게 허락


revoke delete                            -- delete 권한 취소

    on a

    to kimes


exec sp_helprotect a,null                -- a 테이블에 대해 주어진 권한보기


grant select(id,name)                    -- id,name이라는 특정 컬럼에만 select권한 허락

   on a

   to kimes


exec sp_helprotect null,kimes            -- 특정 컬럼에만 주어진 권한보기

-------------------------------------------------------------------------------------


----- statement 사용권한 -----------------------------------------------------------


grant create table                         -- create table 권한을                                      

   to kimes                                -- 'kimes'에게 허락


revoke create table                        -- create table 권한 취소

    to kimes

-------------------------------------------------------------------------------------


역 할 


----- server 역할 -------------------------------------------------------------------


exec sp_addsrvrolemember 'kimes','sysadmin'       -- system Administrator 권한 허락                                      


exec sp_dropaddsrvrolemember 'kimes','sysadmin'   -- system Administrator 권한 취소


exec sp_helpsrvrolemember 'sysadmin'              -- 서버역할 구성원 확인 

                                                  -- sysadmin 생략하면 전체 구성원 확인

-------------------------------------------------------------------------------------


----- database 역할 -----------------------------------------------------------------


exec sp_addrolemember 'db_owner','kimes'          -- DB 소유자 권한 허락


exec sp_droprolemember 'db_owner','kimes'         -- DB 소유자 권한 취소


exec sp_helprolemember 'db_datawrite'             -- DB역할 구성원 확인


-------------------------------------------------------------------------------------


from : http://yyrooyhh.tistory.com/

PHP코드를 C++코드로 변환, g++로 빌드할 수 있게 하는 물건. 
결과물로 libevent 를 사용한 독립 웹서버 실행파일이 떨어진다. 
페이스북에서 쓰이고 있으며 성능 개선이 상당하다고 한다. 
모든 PHP 코드가 다 동작하는 것은 아니겠지만 관심이 무럭무럭!!

일단 홈페이지. 
https://github.com/facebook/hiphop-php/wiki/

한글로 된 소개글
http://enzine.tistory.com/entry/HipHop-for-PHP-%EB%8D%94-%EB%B9%A0%EB%A5%B8-PHP%EB%A5%BC-%EC%9C%84%ED%95%B4

KLDP의 새소식
http://kldp.org/node/112325

먼저 써보신 분의 의견. 
http://code.p-ark.co.kr/167 





레드마인을 위해 설치해 둔 우분투 10.04에 깔아보자. 9.10에 설치하는 참고링크는 여기.
https://github.com/facebook/hiphop-php/wiki/Building-and-Installing-on-Ubuntu-9.10
10.10용은 여기. (명색이 LTS인 10.04만 빠져있네...) 
https://github.com/facebook/hiphop-php/wiki/Building-and-Installing-on-Ubuntu-10.10


먼저 관련프로그램 설치. 

sudo apt-get install git-core cmake g++ libboost-dev libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev wget memcached libreadline-dev libncurses-dev libbz2-dev libc-client2007e-dev



9.10과 마찬가지로 10.04의 libmemcached 는 버전이 0.31이므로 쓸 수 없다. 0.39 이상이 필요하므로 따로 빌드. 

HipHop 소스 얻기. 

mkdir hiphop
cd hiphop
git clone git://github.com/facebook/hiphop-php.git
cd hiphop-php
export CMAKE_PREFIX_PATH=`/bin/pwd`/../
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
git submodule init
git submodule update
cd ..



LIBEVENT 빌드.

wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar -xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
cp ../hiphop-php/src/third_party/libevent-1.4.13.fb-changes.diff .
patch -p1 < libevent-1.4.13.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..



ICU4 빌드

wget http://download.icu-project.org/files/icu4c/4.2.1/icu4c-4_2_1-src.tgz
tar -xvzf icu4c-4_2_1-src.tgz
cd icu/source
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ../../




LIBCURL 빌드. 시스템 시간 잘 맞추지 않으면 ./configure 가 실패한다네. 
중간에 패치가 필요하므로 지정된 버전을 쓸 것. 

wget http://curl.haxx.se/download/curl-7.20.0.tar.gz
tar -xvzf curl-7.20.0.tar.gz
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
patch -p1 < libcurl.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..



LIBMEMCACHED 빌드. 현재 최신버전인 0.49로

wget http://launchpad.net/libmemcached/1.0/0.49/+download/libmemcached-0.49.tar.gz
tar -zxvf libmemcached-0.49.tar.gz
cd libmemcached-0.49
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..



HipHop 빌드. 걸어놓고 밥먹고 오자. 

cd hiphop-php
cmake . <- 점 주의!
make



hphp 바이너리가 src/hphp 에 생성된다. 

  



테스트. 사용법은 일단 여기.
https://github.com/facebook/hiphop-php/wiki/Running-HipHop


먼저 hphp를 체크아웃 한 디렉토리로 이동. 

export HPHP_HOME=`pwd`
export HPHP_LIB=`pwd`/bin



우분투에서는 추가로 이렇게 해주라는군.

export CMAKE_PREFIX_PATH=`/bin/pwd`/../



예전 GD 가지고 놀 때 코드를 한번 컴파일 해보자. 
적당한 디렉토리에 예제 php 파일 생성. 


ip-test.php
 

<?php
$img_number = imagecreate(140,25);
$backcolor = imagecolorallocate($img_number,255,255,255);
$textcolor = imagecolorallocate($img_number,50,104,28);

imagefill($img_number,0,0,$backcolor);
$number = "IP - $_SERVER[REMOTE_ADDR]";

Imagestring($img_number,3,0,5,$number,$textcolor);

header("Content-type: image/jpeg");
imagejpeg($img_number);
?>



컴파일

$HPHP_HOME/src/hphp/hphp ip-test.php -k 1 --log=3 --force=1 




임시 디렉토리 (내 경우에는 /tmp/hphp_TFludl) 에 실행파일이 생성된다. 
관리자 권한으로 실행. 

sudo /tmp/hphp_TFludl/program -m server -p 8080


 
해당 서버에 접속해보자. http://my-ubuntu:8080/ip-test.php
결과는 짜잔~~





GD 테스트를 조금 더 해본다. 
프리타입이 동작하는지도 확인해보자. 윈도의 gulim.ttc 를 /tmp 에 복사해넣자. 

gd-test.php

<?php
// 이미지 생성
$image_test = ImageCreate(200,150);

// 색의 설정
$grey = ImageColorAllocate($image_test,200,200,200);
$blue = ImageColorAllocate($image_test,0,0,255);

imagefill($image_test,10,0,$grey);

// 내장폰트 사용 예
Imagestring($image_test,3, 25,50,"hahaha",$blue);

// 프리타입으로 TTF 폰트 사용 예
Imagefttext($image_test,10, 0, 25, 100, $blue, "/tmp/gulim.ttc", "우하히");

header("Content-type: image/png");
imagepng($image_test);
ImageDestroy($image_test);
?>



HipHop은 컴파일 이전에 이 PHP가 제대로 동작할지를 미리 확인해볼 수 있는 hphpi 를 제공한다. 

$HPHP_HOME/src/hphpi/hphpi  -m server -p 8080



현재 디렉토리를 기준으로 서버가 동작한다. 매번 빌드하는 것도 시간이 걸리는 일이므로, 이걸 쓰면 지금 작성중인 코드가 HipHop에서 잘 동작하는지 확인해 볼 수 있다. 

접속해보면 잘 처리되는데... 



이 PHP 파일에 include, 또는 include_once 를 써서 다른 PHP 유니트를 포함시키면 이미지 출력이 제대로 되지 않는다. 
이미지 출력을 위해 사용되는 header(), imagepng() 등의 함수가 아예 동작하지 않는 듯 하다. 
현 시점에서 GD 관련해서는 단일 유니트만 사용 가능할 듯. 진심으로 아쉬운 부분... 










예전 게임서버는 DB 입출력을 담당하는 에이전트 서버를 통해 각종 정보를 저장해 왔었다. 
이 경우 운영도 귀찮고 뭐 하나 바꾸려 할때 만져야 할 부분이 참 많다. 

때문에 로그 저장 서버는 상대적으로 편한 PHP + xmlrpc 를 써서 만들었었고
나중에 게임서버를 새로 만든다면 DB 입출력은 이 방식으로 하리라 마음먹었었는데...

HipHop을 이용하면 그 부분도 네이티브 바이너리로 굴릴 수 있다는 이야기. 
퍼블리셔에 텍스트로 된 PHP 파일을 그대로 전달해야 하는 찝찝함도 더불어 해결. 

다만 생성된 실행파일의 크기가 약 20메가 정도로 큰 편인데, UPX로 압축하면 7메가 정도로 줄어든다. 

# sudo apt-get install upx-ucl
# upx program


서버에서 실행파일의 크기야 별 의미가 없겠지만... 

언제 시간날 때 VCL4PHP 를 빌드해봐야겠다. 

from : http://oranke.tistory.com/173

1. 기능
파일을 검색하는 명령어이다. Find와 유사한 기능이나 DB를 이용한 검색이므로 검색 속도가 빠르다.

2. 문법
# locate

3. 옵션
-e : 검색에서 배제 할 디렉토리를 지정한다.
-n : 결과물의 개수를 지정된 숫자로 제한한다.

4. 사용방법 및 정보
가) 처음으로 locate를 실행할 때는 아래와 같이, updatedb 명령어나 cron 작업을 이용하여 데이터베이스를 갱신시켜

# updatedb &


이 작업은 root로 실행하여야 한다. 매일 DB를 갱신하여 사용의 효율을 높인다. cron에 대해서는 후에 다루게 된다.

# /etc/cron.daily/slocate.cron &


나) inittab 이라는 패턴이 포함된 파일 들을 모두 출력한다.

# locate inittab
/etc/inittab
/root/inittab
/usr/share/vim/vim63/syntax/inittab.vim
/usr/share/man/ko/man5/inittab.5.gz
/usr/share/man/man5/inittab.5.gz
/usr/share/terminfo/a/ansi+inittabs

'OS > LINUX' 카테고리의 다른 글

리눅스 사양 확인  (0) 2012.05.29
리눅스 NFS 설정하기  (0) 2012.05.18
부팅시 자동실행 서비스 관리 ( ntsysv, chkconfig )  (0) 2011.06.21
chkconfig  (0) 2011.06.21
사용자 프로그램 부팅시 자동 실행  (0) 2011.06.21

DBCC 명령어

설명

DBCC CHECKALLOC

지정된 데이터베이스에 대한 디스크 공간 할당 구조의 일관성을 검사합니다.

DBCC CHECKCATALOG

지정한 데이터베이스 내의 카탈로그 일관성을 검사합니다.

DBCC CHECKCONSTRAINTS

현재 데이터베이스의 지정한 테이블에서 특정 제약 조건이나 모든 제약 조건의 무결성을 검사합니다.

DBCC CHECKDB

현재 데이터베이스에 있는 모든 테이블의 할당과 구조적 무결성을 검사합니다.

DBCC CHECKFILEGROUP

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

DBCC CHECKIDENT

지정한 테이블의 현재 ID 값을 검사하고 필요에 따라 변경합니다.

DBCC CHECKTABLE

특정 테이블 또는 특정 인덱싱된 뷰를 구성하는 모든 페이지 구조의 무결성을 검사합니다.

DBCC DBREINDEX

지정한 데이터베이스의 테이블에 대해 하나 이상의 인덱스를 다시 작성합니다. 그렇지만 기능은 다음 버전에서 제거될 예정이므로 ALTER INDEX 사용하는 것을 권고합니다.

DBCC DROPCLEANBUFFERS

버퍼 풀에서 버퍼를 모두 제거하는 명령어입니다. DBCC DROPCLEANBUFFERS 사용하면 서버를 종료하고 다시 시작하지 않아도 완전히 버퍼 캐시를 사용하여 쿼리를 테스트할 있습니다. 성능 튜닝 테스트에 활용할 있습니다.

DBCC FREEPROCCACHE

프로시저 캐시를 비우는 명령어입니다

 

DBCC 명령어

설명

DBCC FREESESSIONCACHE

분산 쿼리에서 Microsoft SQL Server 인스턴스에 대해 사용한 분산 쿼리 연결 캐시를 플러시합니다.

DBCC FREESYSTEMCACHE

모든 캐시의 사용하지 않는 캐시 항목을 모두 해제합니다. SQL Server 2005 데이터베이스 엔진은 현재 항목에 필요한 메모리 확보를 위해 사용하지 않는 캐시 항목을 백그라운드에서 미리 정리합니다. 하지만 명령을 사용해 사용하지 않는 항목을 모든 캐시에서 직접 제거할 있습니다.

DBCC HELP

지정한 DBCC 명령의 구문 정보를 제공합니다.

DBCC INDEXDEFRAG

지정된 테이블 또는 뷰의 인덱스를 조각 모음합니다.

기능은 다음 버전에서 제거될 예정이므로, 명령어대신 ALTER INDEX 사용하는 것을 권고합니다..

DBCC INPUTBUFFER

클라이언트가 Microsoft SQL Server 2005 인스턴스로 마지막으로 전송한 SQL 문을 반환합니다.

DBCC OPENTRAN

지정한 데이터베이스에서 가장 오래된 활성 트랜잭션과 가장 오래된 분산 비분산 복제 트랜잭션에 대한 정보를 표시합니다. 활성 트랜잭션이 있거나 데이터베이스에 복제 정보가 있는 경우에만 결과가 반환됩니다.

DBCC OUTPUTBUFFER

지정한 session_id 현재 출력 버퍼를 16진수와 ASCII 형식으로 반환합니다.

DBCC PINTABLE

제거된 기능입니다. 오류 메시지는 반환하지 않지만 실제로는 효력이 없습니다. 마찬가지로 DBCC UNPINTABLE 제거되었습니다.

DBCC PROCCACHE

프로시저 캐시에 대한 정보를 테이블 형식으로 반환합니다.

DBCC SHOW_STATISTICS

지정한 테이블에서 특정 대상에 대한 현재 배포 통계를 제공합니다.

 

DBCC SHOWCONTIG

지정한 테이블의 데이터와 인덱스에 대한 조각화 정보를 제공합니다. 기능은 다음 버전에서 제거될 예정이므로 대신 sys.dm_db_index_physical_stats 사용하는 것을 권고합니다.

DBCC SHRINKDATABASE

지정한 데이터베이스의 데이터 파일의 크기를 축소합니다.

DBCC SHRINKFILE

지정한 데이터베이스에서 지정한 파일(데이터 파일이나 로그 파일) 크기를 축소합니다.

DBCC SQLPERF

모든 데이터베이스의 트랜잭션 로그 공간에 관한 통계를 제공합니다.

DBCC TRACEON

지정한 추적 플래그를 활성화합니다.

DBCC TRACEOFF

지정한 추적 플래그를 해제합니다.

DBCC TRACESTATUS

추적 플래그의 상태 정보를 제공합니다.

DBCC UPDATEUSAGE

카탈로그 뷰의 부정확한 페이지와 개수를 보고하고 수정합니다. 페이지와 개수가 부정확하면 sp_spaceused 시스템 저장 프로시저에서 반환하는 공간 사용 정보가 정확하지 않게 됩니다. SQL Server 2005 에서는 항상 정확한 값이 유지 관리되기 때문에 SQL Server 2005 에서 만든 데이터베이스에서는 개수가 부정확한 경우가 없지만 SQL Server 2005 업그레이드한 데이터베이스에는 올바르지 않은 개수가 포함될 있으므로 SQL Server 2005 업그레이드한 다음에는 DBCC UPDATEUSAGE 실행하여 올바르지 않은 개수를 수정하는 것이 좋습니다.

DBCC USEROPTIONS

현재의 연결에 설정되어 있는 SET 옵션 정보를 제공합니다.

[출처] DBCC명령어|작성자 팬더

다들 알고 계시겠지만 TRUNCATE 와 DELETE의 비교입니다.

 

TRUNCATE 명령은 WHERE 절이 없는 DELETE와 유사하나, 아래 내용들에 있어 차이를 보인다.

 

  • TRUNCATE는 테이블 크기에 관계없이 매우 빠르다. DELETE는 롤백이 발생될 경우에 대비하여 언두 정보를 생성하여 로그 파일에 기록하지만, TRUNCATE는 언두를 생성하지 않는다.

 

  • TRUNCATE는 DDL로서 다른 DDL과 마찬가지로 묵시적으로 커밋을 수행하기 때문에 롤백 할 수 없다. 커밋되지 않은 상태의 DML변경 또한 TRUNCATE 명령과 함께 커밋 될 것이다.

 

  • TRUNCATE는 테이블과 모든 인덱스의 HWM(high-water mark)을 리셋한다. 전체 테이블 스캔 및 인덱스 전체-고속 스캔(index fast-full scan)은 HWM까지의 모든 데이터 블록을 읽기 때문에 DELETE 후에는 전체 스캔 작업이 향상되지 않지만, TRUNCATE 후 이 작업은 매우 빨라진다.

 

  • TRUNCATE는 어떤 DELETE 트리거도 발생시키지 않는다.

 

  • 한 사용자가 다른 사용자의 테이블을 TRUNCATE 하도록 허용하는 객체 권한은 존재하지 않는다. 다른 스키마의 테이블을 TRUNCATE하기 위해서는 DROP ANY TABLE 시스템 권한이 요구된다.

 


+ Recent posts