2010년 1월 30일 토요일
PortqryV2.EXE
Portqry.exe는 TCP/IP 연결 문제를 해결하는 데 도움을 줄 수 있는 명령줄 유틸리티입니다. Portqry.exe는 Windows 2000 기반 컴퓨터, Windows XP 기반 컴퓨터 및 Windows Server 2003 기반 컴퓨터에서 실행됩니다. 이 유틸리티는 사용자가 선택한 컴퓨터에서 TCP 및 UDP 포트의 포트 상태를 보고합니다.
>PortQry.exe -n 192.168.1.11 -p tcp -e 1060
-n 서버이름 | 아이피
-p 통신규칙
-e 포트번호
Listening이라고 나오면 정상임
DBCC명령어에 대해 알아보자 (1)
DBCC CONCURRENCYVIOLATION
SQL SERVER 2000 Desktop Engine 또는 SQL SERVER 2000 Personal Edition에서 다섯 개가 넘는 일괄 처리가 동시에 실행되는 횟수에 대한 통계를 표시합니다. 이 외의 버전에서는 실행되지 않습니다.
구문
DBCC CONCURRENCYVIOLATION [(DISPLAY | RESET | STARTLOG | STOPLOG )]
동시성 위반이 발생할 시 DISPLAY명령으로 보거나 로그로 남길 수 있습니다.
2005이상에서는 호환성 이유로 명령어만 남겨져 있습니다.
2010년 1월 26일 화요일
insert 문에 subquery 넣기
다중행 입력도 가능하며 컬럼수를 맞추어야 한다.
insert into last_send_log (reg_dt) (select max(reg_dt) from imt_billusage)
2. 여러 컬럼을 입력할때 혼동하지 말자 sub쿼리 안에 넣어서 입력하는것이지 서브쿼리 밖에 입력하는것이
O = insert into last_send_log (reg_dt,abc) (select max(reg_dt),'abc' from imt_billusage)
X = insert into last_send_log (reg_dt,abc) (select max(reg_dt) from imt_billusage),'abc
아니다.
2010년 1월 25일 월요일
프로시져 권한부여 생성 쿼리
FROM dbo.sysobjects WITH (nolock)
where xtype in ('P','X','FN','IF','TF')
and category <> 2
and name not like 'dt%'
order by NAME
2010년 1월 18일 월요일
데이터 삽입문 만들기 쿼리
select top 1000 'insert into dbo.imt_billusage(seqNo,reg_dt,game_code,price,purchase_count) values ('+''''+ rtrim(convert(char,seqno)) + ''''+','+'''' +rtrim(convert(char,reg_dt))+ ''''+','+'''' +rtrim(convert(char,game_code))+ ''''+','+'''' +rtrim(convert(char,price))+ ''''+','+'''' +rtrim(convert(char,purchase_count))+ ''''+')'from dbo.imt_billusage
2010년 1월 8일 금요일
2010년 1월 7일 목요일
MSSQL 2005설치시 생성되는 기본 로그인
전체 텍스트 검색 인스턴스를 위한 로그온 계정에 부여된 특권을 가진다.
SQL Server2005 전체 텍스트 검색 기능이 동작하려면 꼭 필요하다.
컴퓨터이름\SQLServer2005MSSQLUser$컴퓨터이름$인스턴스
이 그룹의 구성원들은 SQL서버 인스턴스를 위한 로그온 계정에 부여된 특권을 가진다.
SQL서버가 설치될 당시에 로컬 서비스 계정을 SQL서버의 서비스 계정으로 사용하게 설정되어
있으므로 이 계정은 SQL Server2005가 동작하는데 꼭 필요하다.
컴퓨터이름\SQLServer2005SQLAgentUser$컴퓨터이름$인스턴스
SQL Server 에이전트를 위한 로그온 계정에 부여된 특권을 가진다.
이 계정은 SQL Server 2005 에이전트가 동작하려면 꼭 필요하다.
SSIS 컨테이너
FOR루프 컨테이너
동일한 저장 프로시저를 100회 반복 수행하고 싶을 경우
FOREACH 루프 컨테이너
폴더에 있는 텍스트 파일들을 DB에 입력해야 할 경우
수행되어야 할 배치쿼리가 많은 경우
시퀀스 컨테이너
데이터처리과정에서 일부 작업에 대해 트랜잭션관리가 필요한 경우
FOR루프 컨테이너 루프속성
InitExpression -> 변수의 초기값 지정
EvalExpression ->루핑을 계속 수행할지 계산식이며 이조건이 참일때까지 수행
AssignExpression -> 값을 증가 또는 감소시키는 작업을 반복적으로 실행하는 식
FOREACH 루프컨테이너
열거자라는 특정 개체, 집합체를 지정해주면 조건을 충족시킬때까지 수행
열거자의 종류 : File열거자, ITEM열거자, ADO열거자, ADO.NET열거자, FromVariable(변수)열거자, Nodelist열거자, SMO열거자
Foreach루프컨테이너를 이용하면 특정 폴더의 데이터를 다른 곳으로 복사하는 작업구현이 가능합니다.(흐름제어의 파일시스템작업 개체)
시퀀스컨테이너는 관련이 있는 여러 작업들을 하나로 묶어주는 그룹핑이나 여러작업을 대상으로 트랜잭션을 관리하거나 일괄 속성을 지정해야 할 경우에 사용됩니다.
시퀀스컨테이너는 그룹과 차이가 있다.
2010년 1월 6일 수요일
DBCC show_statistics 문 자동만들기
on xtype='U'
and a.id=b.object_id
join sys.schemas c
on a.uid=c.schema_id
and 'DBCC SHOW_STATISTICS ("'+c.name+'.'+a.name+'",'+ b.name+')' is not null
SQL Trace
GUI환경에서는 아무래도 CPU나 메모리 리소스를 많이 사용하므로 운영중인 서버에서는
수동수집을 이용하자.
아래 있는 함수나 프로시저로 수동 수집을 시작하거나 정보를 조회할 수 있다.
| 저장 프로시저 | 수행된 작업 |
|---|---|
추적에 포함된 이벤트에 대한 정보를 반환합니다. | |
지정한 추적이나 모든 기존 추적에 대한 정보를 반환합니다. | |
추적 정의를 만듭니다. 새 추적은 중지됩니다. | |
사용자 정의 이벤트를 만듭니다. | |
추적에서 이벤트 클래스나 데이터 열을 추가 또는 제거합니다. | |
추적을 시작, 중지 또는 닫습니다. | |
추적에 적용되는 필터에 대한 정보를 반환합니다. | |
추적에 새 필터 또는 수정된 필터를 적용합니다. |
sp_trace_setstatus 5,1 --지정한 추적의 현재 상태를 수정합니다.
문법 sp_trace_setstatus [ @traceid = ] trace_id
, [ @status = ] status
| 상태 | 설명 |
|---|---|
0 | 지정한 추적을 중지합니다. |
1 | 지정한 추적을 시작합니다. |
2 | 지정한 추적을 닫고 서버에서 해당 정의를 삭제합니다. |
EX: Sqler에서 참고
CREATE PROCEDURE _duration_trace
@file_name nvarchar(155), -- 주의: 파일확장자는 제외
@trace_id int output
AS
DECLARE @rc int
DECLARE @traceID int
DECLARE @maxfilesize bigint
SET @maxfilesize = 5
/* "InsertFileNameHere"부분을 전달받은 파일명으로 치환 */
EXEC @rc = sp_trace_create @traceID output, 0, @file_name, @maxfilesize, NULL
-- goto 구문 제거
IF (@rc != 0)
RAISERROR ('Error with the sp_trace_create', 16,1)
ELSE
BEGIN
DECLARE @on bit
SET @on = 1
-- 10 = RPC:Completed
-- 12 = SQL:BatchCompleted
/* sp_trace_setevent 저장 프로시저에 대한 자세한 정보는 SQL Server 온라인 도움말 참조 */
EXEC sp_trace_setevent @traceID, 10, 1, @on --1 = 텍스트 데이터
EXEC sp_trace_setevent @traceID, 10, 3, @on --3 = 데이터베이스ID
EXEC sp_trace_setevent @traceID, 10, 13, @on --13 = 동작시간
EXEC sp_trace_setevent @traceID, 10, 14, @on --14 = 시작시간
EXEC sp_trace_setevent @traceID, 10, 15, @on --15 = 종료시간
EXEC sp_trace_setevent @traceID, 10, 16, @on --16 = 읽기수
EXEC sp_trace_setevent @traceID, 10, 17, @on --17 = 쓰기수
EXEC sp_trace_setevent @traceID, 12, 1, @on
EXEC sp_trace_setevent @traceID, 12, 3, @on
EXEC sp_trace_setevent @traceID, 12, 13, @on
EXEC sp_trace_setevent @traceID, 12, 14, @on
EXEC sp_trace_setevent @traceID, 12, 15, @on
EXEC sp_trace_setevent @traceID, 12, 16, @on
EXEC sp_trace_setevent @traceID, 12, 17, @on
-- 필터 설정
DECLARE @intfilter int
DECLARE @bigintfilter bigint
EXEC sp_trace_setfilter @traceID, 10, 0, 7, N'SQL Profiler'
SET @bigintfilter = 1000
EXEC sp_trace_setfilter @traceID, 13, 0, 4, @bigintfilter
-- 추적을 실행하기 위해 추적 상태 설정
EXEC sp_trace_setstatus @traceID, 1
SET @trace_id = @traceID -- 추적ID를 반환
END
DECLARE @file_name nvarchar(155),
@trace_id int
exec _duration_trace @file_name='C:\tracess',@trace_id =5
select * FROM fn_trace_geteventinfo(1)--추적에 포함된 이벤트에 대한 정보를 반환합니다.
SELECT * FROM fn_trace_getinfo(0) --지정한 추적이나 모든 기존 추적에 대한 정보를 반환합니다.
SELECT * FROM fn_trace_getfilterinfo (1) --지정된 추적에 적용되는 필터에 대한 정보를 반환합니다.
sp_trace_setstatus 5,1 --지정한 추적의 현재 상태를 수정합니다.
문법 sp_trace_setstatus [ @traceid = ] trace_id
, [ @status = ] status
추적의 속성입니다.
1= 추적 옵션. 자세한 내용은 sp_trace_create(Transact-SQL)의 @options를 참조하십시오.
2 = 파일 이름
3 = 최대 크기
4 = 중지 시간
5 = 현재 추적 상태. 0 = 중지됨. 1 = 실행 중.
SELECT * FROM ::fn_trace_gettable('C:\Documents and Settings\feelanet\바탕 화면\joytrace.trc',default)
2010년 1월 5일 화요일
제약조건 조회
select * from sys.check_constraints where name ='FK_Documentlist_Document'
select * from sys.default_constraints where name ='FK_Documentlist_Document'
select * from sys.foreign_keys where name ='FK_Documentlist_Document'
select * from sys.foreign_key_columns where constraint_object_id=2043154324
select * from sys.columns where
sp_help Documentlist
sp_helptext sp_helpconstraint Documentlist
select * from INFORMATION_SCHEMA.CHECK_CONSTRAINTS --이외에도 다양한 뷰가있다.
select * from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
sp_helptext "INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS"
LOCK 관련 힌트
SELECT, INSERT, UPDATE 및 DELETE 문으로 테이블 수준 잠금 힌트의 범위를 지정하여 Microsoft SQL Server 2005 Mobile Edition(SQL Server Mobile)의 기본 잠금 동작을 수정할 수 있습니다. 잠금 힌트는 절대적으로 필요한 경우에만 사용하십시오. 잠금 힌트를 사용하면 동시성이 저하될 수 있습니다.
| 중요: |
|---|
| SQL Server Mobile 은 작업에 필요한 잠금을 자동으로 획득합니다. 다음 표에 나열된 잠금 힌트를 사용하면 SQL Server Mobile 에서 발생하는 잠금 크기가 늘어납니다. 잠금 힌트를 사용하여 리소스 잠금을 방지할 수는 없습니다. |
다음 표에서는 SQL Server Mobile 에서 사용할 수 있는 잠금 힌트에 대해 설명합니다.
| 잠금힌트이름 | 힌트 설명 | ||
|---|---|---|---|
GRANULARITY | |||
ROWLOCK | 데이터를 읽거나 수정할 때 행 수준 잠금을 사용합니다. 이러한 잠금은 적절한 시기에 획득 및 해제됩니다. SELECT 작업은 행에 대해 S 잠금을 수행합니다. | ||
PAGLOCK | 데이터를 읽거나 수정할 때 페이지 수준 잠금을 사용합니다. 이러한 잠금은 적절한 시기에 획득 및 해제됩니다. SELECT 작업은 페이지에 대해 S 잠금을 수행합니다. | ||
TABLOCK | 데이터를 읽거나 수정할 때 테이블 잠금을 사용합니다. 이 잠금은 문 끝까지 유지됩니다. SELECT 작업은 테이블에 대해 S 잠금을 수행합니다. | ||
DBLOCK | 데이터를 읽거나 수정할 때 데이터베이스 잠금을 사용합니다. 이 잠금은 문 끝까지 유지됩니다. SELECT 작업은 데이터베이스에 대해 S 잠금을 수행합니다. | ||
LOCKMODES | |||
UPDLOCK | 테이블을 읽는 동안 공유 잠금 대신 업데이트 잠금을 사용하고 문이나 트랜잭션 끝까지 유지 잠금을 사용합니다. UPDLOCK을 사용하여 다른 판독기를 차단하지 않고 데이터를 읽을 수 있으며, 마지막으로 데이터를 읽은 후 데이터가 변경되지 않았다는 확신을 가지고 나중에 업데이트할 수 있습니다. SELECT 작업은 U 잠금을 수행합니다. 기본 세분성은 ROWLOCK입니다. | ||
XLOCK | 테이블을 읽는 동안 공유 잠금 대신 단독 잠금을 사용하고 문이나 트랜잭션 끝까지 유지 잠금을 사용합니다. SELECT 작업은 X 잠금을 수행합니다. 기본 세분성은 ROWLOCK입니다. | ||
DURATION | |||
HOLDLOCK | 필요한 테이블, 행 또는 데이터 페이지가 더 이상 필요하지 않게 되는 즉시 잠금을 해제하는 대신 유지 잠금을 사용하여 트랜잭션이 완료될 때까지 잠금을 유지합니다. 세분성을 지정하지 않으면 ROWLOCK이 적용됩니다. | ||
NOLOCK | 잠금을 실행하지 않습니다. SELECT 작업의 기본값입니다. 이 설정은 INSERT, UPDATE 및 DELETE 문에 적용되지 않습니다.
|
잠금 힌트 사용 방법은 SQL Server 온라인 설명서에서 "잠금 힌트"를 참조하십시오.
NOLOCK 힌트
SQL Server Mobile 과 SQL Server 의 잠금 힌트 사용은 유사합니다. 그러나 SQL Server Mobile 의 경우 NOLOCK 힌트는 SQL Server 의 경우와 매우 다른 동작을 수행합니다. SQL Server Mobile 에서 NOLOCK 힌트는 SELECT 문의 기본값이지만 커밋된 읽기 동작을 적용합니다.
SQL Server 에서 기본 격리 수준이 커밋된 읽기인 SELECT 문은 행을 읽을 때 행에 대한 S 잠금이 수행되고 해제되도록 합니다. 즉, 격리 수준을 적용하기는 하지만 S 잠금이 필요한 행에 호환되지 않는 잠금이 있으면 SELECT 문이 대기한다는 의미입니다. NOLOCK 힌트를 지정하면 SELECT 작업은 S 잠금을 수행하지 않고 데이터를 읽습니다. 즉, 작업은 성공할 수 있지만 SELECT 문이 커밋되지 않은 데이터를 읽을 수 있다는 의미이기도 합니다.
SQL Server Mobile 은 커밋된 읽기 데이터가 되도록 S 잠금을 사용하지는 않습니다. SQL Server Mobile 은 데이터를 변경할 때 페이지 버전 관리 메커니즘을 사용하므로 SELECT 문에 필요한 데이터는 적절한 페이지 복사본에서 읽을 수 있습니다. 그러므로 S 잠금을 수행하여 커밋된 읽기를 보장할 필요가 없습니다. 따라서 SQL Server Mobile 은 SELECT 문에 NOLOCK을 사용하지만 커밋된 읽기 격리 수준에서 데이터를 읽을 수 있습니다. SQL Server Mobile 에서는 커밋되지 않은 읽기를 사용할 수 없습니다.
| 참고: |
|---|
| NOLOCK 힌트는 Sch-S 또는 Sch-X 잠금에 영향을 주지 않습니다. |
서버의 권한 계층 조회 sys.fn_builtin_permissions
서버의 기본 제공 사용 권한 계층에 대한 설명을 반환합니다.
sys.fn_built_permissions( [ DEFAULT NULL ]
empty_string '' } ) ::=
APPLICATION ROLE ASSEMBLY ASYMMETRIC KEY
CERTIFICATE CONTRACT DATABASE ENDPOINT FULLTEXT CATALOG
LOGIN MESSAGE TYPE OBJECT REMOTE SERVICE BINDING ROLE
ROUTE SCHEMA SERVER SERVICE SYMMETRIC KEY TYPE
USER XML SCHEMA COLLECTION
| 열 이름 | 데이터형식 | 데이터정렬 | 설명 |
|---|---|---|---|
class_desc | nvarchar(60) | 서버의 데이터 정렬 | 보안 개체 클래스에 대한 설명입니다. |
permission_name | sysname | 서버의 데이터 정렬 | 사용 권한 이름입니다. |
type | char(4) | 서버의 데이터 정렬 | 단축 사용 권한 유형 코드입니다. 다음 표를 참조하십시오. |
covering_permission_name | sysname | 서버의 데이터 정렬 | NULL이 아니면 이 클래스에 대한 다른 사용 권한을 포함하는 사용 권한의 이름입니다. |
parent_class_desc | nvarchar(60) | 서버의 데이터 정렬 | NULL이 아니면 현재 클래스를 포함하는 부모 클래스의 이름입니다. |
parent_covering_permission_name | sysname | 서버의 데이터 정렬 | NULL이 아니면 부모 클래스에 대한 다른 모든 사용 권한을 포함하는 사용 권한의 이름입니다. |
서비스팩 누적 업데이트 패키지 종류
SQL Native Client(SNAC)은 SQL Server 2005에 새로이 추가된 Data Access Libary로 이해하면
됩니다.
간단히 말하면, SNAC은 OLE DB와 ODBC 모두를 지원하는데 사용하는 Stand-alone Data Access API입니다. Microsoft Data Access Components(MDAC)이 지원하는 기능에 더하여 새로운 기능을 지원하며, SQL OLE DB Provider와 SQL ODBC Driver를 하나의 Native Dynamic Link Library(DLL)로 결합시켰습니다.
SNAC은 응용프로그램에서 SQL Server 2005의 새로운 기능(MARS:Multiple Active Result Sets, UDT:User-Defined Types, XML Data Type) 등을 활용하는데 필요합니다.
OLE DB Provider와 SQL ODBC Driver를 하나의 라이브러리로 결합한 SNAC을 새로이 공급하는 이유는 MDAC의 제한이나 문제점을 해결하기 위한 것입니다. 현재 MDAC은 윈도우 운영체제의 컴포넌트로 제공됩니다. 따라서 MDAC 기반의 응용프로그램을 개발하고 유지보수하는데 운영체제 유지보수 체계와의 문제로 인하여, 설치, 배포, 업그레이드 등과 관련된 이슈와 문제점이 많습니다. SNAC이 제공은 이러한 이슈들을 MDAC과 분리하기 위한 것으로 이해할 수 있습니다.
SNAC은 SQL Server를 위한 ODBC와 OLE DB API만을 지원하고 SQL Server 릴리스와 서비스 팩에서만 업그레이드 됩니다. MDAC은 계속해서 SNAC을 포함하는 모든 드라이버/프로바이더릉 위한 핵심적인 Data Access Service를 지원하지만 윈도우 릴리스와 서비스 팩에서만 업그레이드 됩니다.
그렇다고 무조건 SNAC을 쓰라는 것은 아닙니다. 이미 구축되어 있는 응용프로그램을 SQL 2005의 새로운 특징들을 활용할 수 있도록 업그레이드하거나 새로문 COM-기반 또는 Native 응용프로그램을 개발할 때 사용하기를 권고하고 있습니다. SQL 2005의 새로운 특징들을 사용할 필요가 없다면, 기존의 OLE DB나 ODBC 코드로 충분합니다. 물론, 데이터 접근에 있어 관리되는 코드 기반으로 가고자 한다면, .Net Framework의 ADO.NET Data Access 클래스가 필요합니다.
2010년 1월 4일 월요일
WITH GRANT OPTION 으로 연결된 권한 철회
create login test with password='mssql'
create user test for login test
grant alter on test to test -- 권한상속권한을 같이 부여
with grant option
grant select on test to test
with grant option
create login test2 with password='mssql'
create user test2 for login test2
user test connect
grant alter on test2 to test2 -- 위에서 권한상속권한을 부여받았으므로 권한부여가능
grant select on test2 to test2
select * from test
alter table test add d int
revoke alter on test from test -- 권한을 뺏으려고 하면 하위 계정의 권한때문에 뺏지못함
revoke alter on test from test cascade --모든 하위계정 권한 뺏기 cascade
데이터 파일 및 로그 파일 늘리기 및 축소
늘어난 영역을 축소 시킬 수 있다.
축소 시킬때에는 조각모음만 하거나 조각모음후 빈영역에 대해서 원하는 사이즈 만큼 줄이거나
사용중인 영역까지 줄일 수 있다.
이때 사용하는 명령어가 DBCC shrinkdatabase와 DBCC shrinkfile이다.
용량을 늘릴때는 보통 자동증가가 되어 있을 시 데이터베이스가 알아서 증가 시켜주지만 자동
증가 옵션은 용량부족시 데이터베이스에 치명적인 영향을 끼치게 되므로 자동증가는 OFF시켜놓고 ALTER DATABASE 명령어로 데이터파일을 추가하거나 MODIFY로 용량을 수정할 수 있다.
로그파일 축소
로그파일은 데이터베이스에 행해진 이력을 저장하는 파일로 순차쓰기 형식으로 되어 있다.
트랜잭션이 종료되고 디스크에 안전하게 쓰여진 로그레크드들은 저장되어있을 필요가 없으므로 불필요하게 용량을 차지하지 않도록 로그파일 또한 축소를 시켜주어야 한다.
데이터 베이스 옵션에 Autoshrink옵션이 있어 백업 완료된 트랜잭션 영역에 대해서 자동주기적으로 축소를 해주고 있다.
사용자가 수동으로 해줄때의 예를 보도록 하겠다.
create database test
on primary
(name = 'PRI', filename='c:\MSSQLTEST\Primarytest.mdf',size=3)
log on
(name = 'LOG', filename='c:\MSSQLTEST\Primarytestlog.ldf',size=1)
use test
create table test (a int, sysdate smalldatetime default CURRENT_TIMESTAMP)
begin tran --트랜잭션을 활성상태로 유지하도록
insert into test values(rand()*10000,'')
go 10000
sp_helpdb test --활성트랜잭션들로 인하여 로그파일 증가가 되어있음
DBCC log(5) --로그내부정보를 보여주는 히든 DBCC 5는 DBID이다.
select @@trancount
commit tran --활성되어있는 트랜잭션을 모두 종료
go 10100
select @@trancount
dbcc shrinkfile ('log') -- 최종적으로 로그파일 축소
--기타 백업정보
backup database test to disk='c:\test.bak'
backup log test to disk='c:\testlog.bak' with truncate_only --truncate_only혹은 NO_LOG도 가능(동의어)
Version 조회
xp_msver
select @@version as "SQL 및 Window버전"
select SERVERPROPERTY('BuildClrVersion') as ".Net version"--SQL Server 2005 인스턴스를 구축하는 과정에서
--사용된 Microsoft .NET Framework CLR(공용 언어 런타임)의 버전입니다.
select SERVERPROPERTY('Collation')"기본정렬이름"--서버의 기본 데이터 정렬 이름입니다.
select SERVERPROPERTY('CollationID')"정렬아이디"--SQL Server 데이터 정렬의 ID입니다.
select SERVERPROPERTY('ComparisonStyle')"데이터정렬 비교스타일"--데이터 정렬의 Windows 비교 스타일입니다.
select SERVERPROPERTY('ComputerNamePhysicalNetBIOS')"NetBIOS이름"--SQL Server 인스턴스가 현재 실행되고
--있는 로컬 컴퓨터의 NetBIOS 이름입니다.
--장애 조치(Failover) 클러스터의 SQL Server 클러스터형 인스턴스에서 SQL Server
--인스턴스가 장애 조치 클러스터의 다른 노드로 장애 조치되면 이 값이 변경됩니다.
select SERVERPROPERTY('Edition')"설치된 제품버전"--SQL Server 인스턴스의 설치된 제품 버전입니다.
--이 속성 값을 사용하여 설치된 제품에서 지원하는 기능 및 최대 CPU 수와 같은 제한을 확인합니다
select case SERVERPROPERTY('EngineEdition') when 1 then 'personal or Desktop Engine'
when 2 then 'Standard'
when 3 then 'Enterprise'
when 4 then 'Express' end as "엔진버전"--서버에 설치된 SQL Server 인스턴스의 Database Engine 버전
--1 = Personal 또는 Desktop Engine
--2 = Standard
--3 = Enterprise(Enterprise, Enterprise Evaluation 및 Developer 버전인 경우 이 값이 반환됩니다)
--4 = Express
select SERVERPROPERTY('InstanceName') "연결된 인스턴스 이름"--사용자가 연결된 인스턴스의 이름입니다.
select case SERVERPROPERTY('IsClustered')
when 1 then '클러스터형'
when 2 then '비클러스터형'
else '해당사항없음'
end as "장애조치여부"--서버 인스턴스가 장애 조치 클러스터에 구성되어 있습니다.
--1 = 클러스터형입니다.
--0 = 비클러스터형입니다.
select SERVERPROPERTY('IsFullTextInstalled')--전체 텍스트 구성 요소가 SQL Server 의
--현재 인스턴스에 설치되었습니다.
--1 = 전체 텍스트가 설치되었습니다.
--0 = 전체 텍스트가 설치되지 않았습니다.
select SERVERPROPERTY('IsIntegratedSecurityOnly')--서버가 통합 보안 모드입니다.
--1 = 통합 보안 모드입니다.
--0 = 통합 보안 모드가 아닙니다.
select SERVERPROPERTY('IsSingleUser')--서버가 단일 사용자 모드입니다.
--1 = 단일 사용자 모드입니다.
--0 = 단일 사용자 모드가 아닙니다.
select SERVERPROPERTY('LCID')--데이터 정렬의 Windows LCID(로캘 ID)입니다.
select SERVERPROPERTY('LicenseType')--이 SQL Server 인스턴스의 모드입니다.
--PER_SEAT = 사용자 단위 모드입니다.
--PER_PROCESSOR = 프로세서 단위 모드입니다.
--DISABLED = 라이센스가 해제되었습니다
select SERVERPROPERTY('MachineName')--서버 인스턴스가 실행 중인 Windows 컴퓨터 이름입니다.
--Microsoft Cluster Server의 가상 서버에서 실행되는 SQL Server 클러스터형 인스턴스인 경우에는
--가상 서버의 이름을 반환합니다.
select SERVERPROPERTY('NumLicenses')--사용자 단위 모드일 경우 SQL Server 인스턴스에 대해 등록된
--클라이언트 라이센스의 수입니다.
--프로세서 단위 모드일 경우 SQL Server 인스턴스에 대해 허가된 프로세서의 수입니다.
--서버가 이 중 어느 것에도 해당하지 않으면 NULL을 반환합니다.
select SERVERPROPERTY('ProcessID') as "SQLSERVER.EXE PID"--SQL Server 서비스의 프로세스 ID입니다.
--ProcessID는 인스턴스에 속하는 Sqlservr.exe를 식별하는 데 유용합니다.
select SERVERPROPERTY('ProductVersion') as Version--SQL Server 인스턴스의 버전으로 'major.minor.build' 형식입니다.
select SERVERPROPERTY('ProductLevel') as "Release or servicepack"--SQL Server 인스턴스의 버전 수준입니다.
--다음 중 하나를 반환합니다.
--'RTM' = 초기 릴리스 버전
--'SPn' = 서비스 팩 버전
--'Bn' = 베타 버전
select SERVERPROPERTY('ResourceLastUpdateDateTime')--리소스 데이터베이스를 마지막으로 업데이트한 날짜와 시간을 반환합니다
select SERVERPROPERTY('ResourceVersion')--리소스 데이터베이스 버전을 반환합니다.
select SERVERPROPERTY('ServerName')--Windows 서버 및 지정된 SQL Server 인스턴스에 대한 인스턴스 정보입니다.
select SERVERPROPERTY('SqlCharSet')--데이터 정렬 ID의 SQL 문자 집합 ID입니다.
select SERVERPROPERTY('SqlCharSetName')--데이터 정렬의 SQL 문자 집합 이름입니다.
select SERVERPROPERTY('SqlSortOrder')--데이터 정렬의 SQL 정렬 순서 ID입니다.
select SERVERPROPERTY('SqlSortOrderName')--데이터 정렬의 SQL 정렬 순서 이름입니다.
2010년 1월 3일 일요일
권한조회 SQL
select name, owner = user_name(uid), crdate, objtype = sysstat & 0xf, id, deltrig from dbo.sysobjects o where power(2, sysstat & 0xf) & 31 != 0 and not (OBJECTPROPERTY(id, N'IsDefaultCnst') = 1 and category & 0x0800 != 0) and o.name not like N'#%' order by name, owner
select a = o.name, b = user_name(o.uid), user_name(p.uid), o.sysstat & 0xf, p.id, action, protecttype from dbo.sysprotects p, dbo.sysobjects o, master.dbo.spt_values a where o.id = p.id and (( p.action in (193, 197) and ((p.columns & 1) = 1) ) or ( p.action in (195, 196, 224, 26) )) and (convert(tinyint, substring( isnull(p.columns, 0x01), a.low, 1)) & a.high != 0) and a.type = N'P' and a.number = 0 and p.uid = 0 order by a, b
user_name 함수는 uid를 받아서 user_name으로 표시해준다.
select * from sys.database_role_members as a join sys.sysusers as b ona.role_principal_id = b.uid or a.member_principal_id = b.uid
현재 데이터베이스 유저들의 권한조회