■ 정보
_test → login 및 user명 suffix
db_mydb → DB명
<mypassword> → 비밀번호
■ jdbc 연결
jdbc:sqlserver://<host>:1433;database=mydb;connectionCollation=korean_wansung_cs_as;sendStringParametersAsUnicode=false
※ SQL Server 의 기본 Collation은 Korean_Wansung_CI_AS 로 구성되어 있다.
Korean / 한글
Wansung / 완성형
CI / Case Insensitive (대소문자 구분하지 않음)
CS / Case Sensitive (대소문자 구분)
AS / Accent Insensitive (악센트 구분하지 않음)
■ SQL
--초기화
DROP USER "usr_test";
DROP LOGIN "login_test";
DROP DATABASE "db_mydb";
--데이터베이스 생성
CREATE DATABASE "db_mydb" COLLATE korean_wansung_cs_as;
--사용자 생성
USE "db_mydb";
CREATE LOGIN "login_test" WITH PASSWORD='<mypassword>';
CREATE USER "usr_test" FOR LOGIN "login_test";
GRANT EXECUTE TO "usr_test";
ALTER LOGIN "login_test" WITH DEFAULT_DATABASE = "db_mydb";
EXEC SP_ADDROLEMEMBER 'db_owner', 'usr_test';
--DB의 모든 제약조건 해제1
USE "db_mydb";
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
--대소문자를 구분하는 비어 있지 않은 표를 찾는다.
USE "db_mydb";
EXEC sp_MSforeachtable 'IF EXISTS (SELECT 1 FROM ?) PRINT ''?'' '
--DB의 모든 제약조건 해제2
USE "db_mydb";
EXEC sp_MSforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
--DB 인덱스 재생성
USE "db_mydb";
DECLARE @TableName VARCHAR(255)
DECLARE @sql NVARCHAR(500)
DECLARE @fillfactor INT
SET @fillfactor = 80
DECLARE TableCursor CURSOR FOR
SELECT OBJECT_SCHEMA_NAME([object_id])+'.'+name AS TableName
FROM sys.tables
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0BEGIN
SET @sql = 'ALTER INDEX ALL ON ' + @TableName + ' REBUILD WITH
(FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')'
EXEC (@sql)
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
GO