728x90

[MSSQL Data Type 참고]

https://docs.microsoft.com/ko-kr/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-2017

Site 참고

 

Data Definition Language

 1. 데이터베이스 객체 생성(CREATE)

CREATE TABLE Company_CODE

(

Company_CODE INT

, CompanyID VARCHAR(10)

, ComapnyName VARCHAR(20)

, ComapnySite VARCHAR(20)

, CreateDate DATETIME

) 

  

 2. 데이터베이스 객체 수정(ALTER)

ALTER TABLE Company_CODE
ALTER COLUMN Company_CODE INT NOT NULL
GO 

 

ALTER TABLE Company_CODE
ADD Local VARCHAR(50)
GO
SELECT * FROM Company_CODE
GO 

 

ALTER TABLE Company_CODE
ADD TotalMemberCount INT  DEFAULT 0 NOT NULL
GO 

 

sp_rename 'Member.TotalMemberCount ,TotalMemberCnt ,'COLUMN'

--// sp_rename '테이블명.컬럼명','컬럼명','COLUMN'

 sp_rename(Transact-SQL): http://msdn.microsoft.com/ko-kr/library/ms188351.aspx

 

 3. 데이터베이스 객체 삭제(DROP) 

ALTER TABLE Company_CODE
DROP COLUMN Local
GO 

 

 

ALTER TABLE Company_CODE
DROP COLUMN TotalMemberCnt
GO

개체 'DF__Company__TotalMemberCnt __124B482B'은(는) 열 'TotalMemberCnt'에 종속되어 있습니다.

-- default 제약 조건에 포함이 되어있기 때문에 먼저 삭제를 해야 삭제가 가능

 

ALTER TABLE Company_CODE
DROP CONSTRAINT DF__Company__TotalMemberCnt __124B482B

GO

 

ALTER TABLE Company_CODE
DROP COLUMN TotalMemberCnt
GO

 

 4. 데이터베이스 이름 변경(RENAME)

sp_renamedb [ @dbname = ] 'old_name' , [ @newname = ] 'new_name'

USE master; 
GO 
CREATE DATABASE Accounting; 
GO 
EXEC sp_renamedb N'Accounting', N'Financial'; 
GO 
SELECT name, database_id, modified_date 
FROM sys.databases 
WHERE name = N'Financial'; 
GO

 

sp_renamedb(Transact-SQL): https://docs.microsoft.com/ko-kr/sql/relational-databases/system-stored-procedures/sp-renamedb-transact-sql?view=sql-server-2017

 

 5. 테이블 초기화(TRUNCATE)

TRUNCATE TABLE Company_CODE

TRUNCATE :

https://docs.microsoft.com/ko-kr/sql/t-sql/statements/truncate-table-transact-sql?view=sql-server-2017

728x90
728x90

Database 생성하는 방법

 

- Logical Name: 논리적인 이름

- File Type: Rows Data(MDF 파일), Log(LDF 파일)

- Filegroup: 파일 그룹(기본값 PRIMARY)

- Initial Size (MB): 기본적인 파일 사이즈(단위: MB)

- Autogrowth / Maxsize: 자동 증가 설정 및 최대 사이즈 설정 값

- Enable Autogrowth: 자동증가 활성 여부

   File Growth: 파일 증가 방법

     1. In Percent: 퍼센트

     2. In Megabytes: MB 량으로 늘리기


   Maximun File Size: 최대 파일 사이즈

     1. Limited to (MB): 지정된 파일 사이즈

     2. Unlimited: 제한 없음

 

 

- Path: 실제 파일이 위치할 경로

- File Name: 실제 파일 이름

 

명령으로 생성 방법

CREATE DATABASE TestDB ON

(

NAME = N'TestDB'

, FILENAME = 'C:\TestDB_DATA.MDF'

, SIZE = 1024MB

, MAXSIZE = UNLIMITED

, FILEGROWTH = 1MB

)

LOG ON

(

NAME = N'TestDB_log'

, FILENAME = 'C:\TestDB_LOG.LDF'

, SIZE = 1024MB

, MAXSIZE = 2048GB

, FILEGROWTH = 10%

); 

 

 

 

728x90
728x90

트랜잭션 로그의 관리

 

 

트랜잭션 로그를 자동증가 옵션으로 사용할 경우 무한적으로 증가할 수 있음.

Disk full을 막기 위하여 트랜잭션 로그의 관리가 필요함.


1. 트랜잭션 로그 삭제
- 트랜잭션 로그의 중요도가 낮아서 백업할 필요가 없는 경우 그냥 삭제

BACKUP LOG DB명 WITH {NO_LOG|TRUNCATE_ONLY}


2. 트랜잭션 로그 백업
- 트랜잭션 로그를 백업하면 자동으로 기존 로그 내용이 정리된다.
단, 이미 늘어나 있는 트랜잭션로그 파일(?.LDF)의 사이즈가 줄어드는건 아니고,
로그의 내용만 삭제된다.

BACKUP LOG DB명 TO DISK = <백업파일명>


3. 트랜잭션 로그 파일 사이즈 줄이기
- ?.LDF 파일의 실제 사이즈를 줄이고 싶을 경우

DBCC SHRINKDATABASE(DB명,TRUNCATEONLY)

or

BACKUP LOG DB명 WITH TRUNCATE_ONLY

트랜잭션 로그 내용이 있는 만큼의 사이즈로 줄어든다.

 


* 트랜잭션 로그의 MAX 사이즈 제한
- 특정 용량 이상으로 늘어나길 원치 않을 경우 사이즈를 제한한다.
제한사이즈를 넘어설 경우 옛 데이터부터 자동 삭제된다.

DBCC SHRINKDATABASE(DB명,1024)

DB명 뒤의 단위는 MB.

 

 

4. 확인 방법

MS-SQL Server Management Studio 등에서 SQL명령어로

 

Use <DB명>;

DBCC LOGINFO;             /* 로그파일 정보 보기 */

EXEC SP_HELPFILE;       /* 데이터파일,로그파일 정보 보기 */

select * from sysfiles          /* 데이터파일,로그파일 정보 보기 */

dbcc sqlperf(logspace);      /* 로그파일 사용량(%) 보기 */

 

 

참고(SQL 2008 이상 버젼)

TEMP DB 로그 축소 방법

방법1. DB Log를 TRUNCATEONLY 하는 방법(로그가 최소 사이즈 부터 시작)

         DBCC SHRINkFILE(templog)

         설명

         DBCC SHRINkFILE(DB로그명)

 

방법2.  DB Log 초기 크기를 지정하여 줄이는 방법

          -- Templog 사이즈를 300Gb로 초기 사이징 하여 시작하게 설정

          ALTER DATABASE tempdb MODIFY FILE  (NAME = 'templog', SIZE = 307200)  

         설명

          ALTER DATABASE DB명 MODIFY FILE  (NAME = 'file_log Name', SIZE = Mb단위 크기)

728x90
728x90

저장 프로시저들을 호출횟수나 CPU 소모시간 등의 통계요약 쿼리

 

SELECT DB_NAME(st.dbid) DBName

,OBJECT_NAME(st.objectid) StoredProcedure
,max(cp.usecounts) Execution_count
,sum(qs.total_worker_time) total_cpu_time
,sum(qs.total_worker_time) / (max(cp.usecounts) * 1.0) avg_cpu_time
FROM sys.dm_exec_cached_plans cp join sys.dm_exec_query_stats qs on cp.plan_handle = qs.plan_handle
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
where DB_NAME(st.dbid) is not null and cp.objtype = 'proc'
group by DB_NAME(st.dbid), OBJECT_NAME(objectid)
order by sum(qs.total_worker_time) desc

 

실행결과

DBName StoredProcedure Execution_count total_cpu_time avg_cpu_time
master    NULL                14                      280082            20005.85714285714285

master    NULL                14                      280082            20005.85714285714285
msdb     SP_SELECT1      12                     17372              1447.66666666666666
msdb     SP_SELECT2      48                     17072              355.66666666666666

.

.

.

.

.

 

728x90
728x90

 

/********************************************************************************
해당 데이터베이스의 모든 테이블의 인덱스 정보 보기
********************************************************************************/

DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES

-- ObjectName : 테이블이름
-- ObjectId : 테이블번호
-- IndexName : 인덱스이름
-- IndexId : 인덱스번호0:Heap, 1:Clustered 2:Nonclustered
-- Level : 인덱스수준0:인덱스의리프또는데이터, Heap 경우0
-- Pages : 페이지수
-- MinimumRecordSize : 최소레코드크기
-- MaximumRecordSize : 최대레코드크기
-- ForwardedRecords : 전달된레코드크기(8060byte가넘으면전달된레코드증가)
-- Extents : 익스텐트수
-- ExtentSwitches : 익스텐스간의이동횟수
-- AverageFreeBytes : 검색된페이지에서사용가능한평균바이트수(값이클수록페이지사용률낮음)
-- AveragePageDensity : 평균페이지밀도(백분율값이클수록좋음)
-- ScanDensity : 값이작을수록조각화가많이일어난것임(데이터가인접해있는비율)
-- BestCount : 모든데이터가인접해서연결되어있는경우인스텍트변경횟수
-- ActualCount : 실제익스텐트변경횟수
-- LogicalFragmentation : 논리적조각화(백분율이클수록안좋음)
-- ExtentFragmentation

 

or

 

SELECT Object_name(a.object_id) AS table_name -- 테이블이름
,
a.NAME AS index_name -- 인덱스이름
,
a.index_id -- 인덱스형태1:클러스터인덱스2: 이상이면넌클러스터인덱스
,
a.type -- 0:힙1:클러스터형2:비클러스터형3:XML 4:공간
,
a.type_desc -- HEAP, CLUSTERED, NONCLUSTERED, XML, SPATIAL
,
b.rowcnt -- 데이터수준행수
,
b.rows -- 데이터수준행수
,
b.rowmodctr -- 테이블에대해통계를마지막으로업데이트한이후에삽입, 삭제또는업데이트된행수
FROM sys.indexes AS a
INNER JOIN sys.sysindexes AS b
ON a.NAME = b.NAME
INNER JOIN sys.sysobjects AS c
ON a.object_id = c.idwhere c.xtype = 'U' -- 사용자가작성한테이블
ORDER BY table_name

SELECT Object_name(parent_obj) ,
*
FROM sys.sysobjects
WHERE xtype = 'PK'SELECT *
FROM sys.sysobjects
WHERE xtype = 'U'

 

 

 

728x90
728x90

https://technet.microsoft.com/ko-kr/library/bb838723(office.12).aspx

728x90
728x90

DECLARE @spName NVARCHAR(MAX)
 
SET @spName = 'sp_syspolicy_purge_history' -- 해당 프로그시명을 입력
 
SELECT
 
             S.name AS JobName,
    A.name AS SP_Name ,
              CONVERT(NVARCHAR(10), B.step_id) + ' 단계' AS Step

FROM msdb.dbo.sysjobs A
INNER JOIN msdb.dbo.sysjobsteps B
ON A.job_id = B.job_id  and command like '%' + @spName + '%'
INNER JOIN [msdb].[dbo].[sysjobs] S
ON A.job_id = S.job_id

728x90

'IT이야기 > MS-SQL' 카테고리의 다른 글

SQL Server 트랜잭션 로그 읽기  (0) 2016.06.29
SQL Server 상태 모니터링  (0) 2015.09.02
Instant SQL Formatter  (0) 2015.09.02
MS-SQL 원격 테이블 조회 간단 정리  (0) 2015.09.02
SPGen-Stored Procedure code Generation tool  (0) 2015.09.02
728x90

SQL Query를 보기 좋게 자동으로 표기 해주네요.

유용할 듯... 저처럼 무개념 쿼리는 굿~~~

http://www.dpriver.com/pp/sqlformat.htm

728x90
728x90

SELECT * FROM

OPENROWSET

(

'SQLOLEDB' ,

'IP , PORT ' ; 'ID' ; 'PW' ,

'SELECT * FROM 원격DB명.소유자.테이블명'

)

 

728x90
728x90

http://lattice-spgen-stored-procedure-generator.en.softonic.com/download?ex=SWH-1608.7

728x90

+ Recent posts