'database'에 해당되는 글 18건


SQL Server 노출 영역 구성

SQL Server 2005는 기본적으로 외부 원격 컴퓨터와의 연결이 막혀 있다. 실무에서는 대부분 원격 컴퓨터에서 서버로 접속을 하는 환경이기 때문에 외부에서 접속이 가능하도록 노출 영역 구성을 통해 설정해주어야 한다.

0. [Microsoft SQL Server 2005] -> [구성도구] -> [SQL Server 노출 영역 구성]을 실행한다.

1. 외부 원격 컴퓨터에서 로컬 컴퓨터에 설치된 SQL Server 2005에 접속이 가능하도록 허용해 준다.

① 초기화면에서 '서비스 및 연결에 대한 노출 영역 구성'을 클릭한다.

② 기본 인스턴스(MSSQLSERVER)의 [Database Engine]에서 [원격 연결]을 선택하고 그림과 같이 TCP/IP만 사용하도록 선택한다.

- 특별한 경우가 아니면, 원격에서 연결하는 프로토콜은 'TCP/IP만 사용'만을 허용하는 것이 좋다. 이 경우에는 1433 포트를 사용하므로,

방화벽에서 1433번 포트만 허용해주면 클라이언트에서 서버로 접속할 수 있다.

- 1433번이라는 Well-known Port를 다른 포트로 변경하여 사용하는 경우에는 '명명된 파이프만 사용'을 허용하여 445, 139, 137, 138 등의 포트를

열여줘야 할 필요가 있다.

2. 데이터베이스 엔진 기능의 노출 영역을 구성해 준다.

① 초기화면에서 '기능에 대한 노출 영역 구성'을 클릭한다.

② Database Engine의 노출 영역 접근이 디폴트로 모두 비허용 상태이다. 필요로 하는 기능들을 체크해서 허용해 준다.

- 기본적으로는 [임시 원격 쿼리], [CLR 통합], [DAC] 정도만 허용해 준다.

③ 설정이 완료되었으면 설정 창을 닫고 SQL Server 데이터베이스 엔진을 다시 시작한다.

SQL Server 구성 관리자

서버 및 클라이언트의 프로토콜을 설정한다. 역시 외부에서 접속을 허용하기 위해 꼭 설정해줘야 하는 부분이다.

[서버 컴퓨터]

0. [SQL Server 구성 관리자]를 실행한다.

1. [SQL Server 2005 서비스] 항목에서서 SQL Server(MSSQLSERVER)만 현재 '실행중'이면 된다.

2. 외부에서 서버 컴퓨터에 접속하기 위해서는 'SQL Server Browser'를 실행시켜 줘야 한다.

① 만약 위와 같이 '중지됨' 상태에 시작 모드가 '기타' 라면 더블클릭하여 [서비스] 탭의 시작모드를 '자동'으로 변경해 준다.

② 'SQL Server Browser'를 선택하고 마우스 오른쪽 클릭으로 [시작]을 선택해 서비스를 시작한다.

3. 클라이언트에서 접속시에 허용할 프로토콜을 지정해 준다.

① [SQL Server 2005 네트워크 구성]을 선택하여, 기본 인스턴스인 [MSSQLSERVER에 대한 프로토콜]을 선택하고 'TCP/IP'를 더블클릭한다.

② [프로토콜] 탭에서 사용을 '예'로 설정한다.

[IP주소] 탭에서 IP1과 IP2의 사용 부분을 '예'로 선택하고 <확인>을 클릭한다.

③ [SQL Server 2005 서비스]에서 'SQL Server(MSSQLSERVER)'를 [다시 시작] 한다.

[클라이언트 컴퓨터]

4. 서버와 마찬가지로, 클라이언트에서도 TCP/IP를 사용할 수 있어야 한다.

① [SQL Native Client 구성]에서 [클라이언트 프로토콜] 항목에 아래 그림과 같이 TCP/IP가 사용상태여야 한다.

② 만약 TCP/IP가 '사용 안함'으로 되어 있다면 더블클릭해서 '사용'으로 바꿔준다.

[서버 컴퓨터]

5. Windows 방화벽에서 1433 포트를 허용해 준다.

① 제어판의 [Windows 방화벽]을 실행한다. 방화벽을 사용 안함 상태로 두지 않을 거라면, 아래와 같이 '예외 허용 안함'은 체크하지 않아아 한다.

② [예외] 탭을 선택하고 SQL Server의 포트인 1433을 추가해 준다.

6. 허용된 사용자는 모두 접속이 가능하도록 SQL Server 인증 모드를 변경한다.

① SSMS의 개체 탐색기에서 기본 인스턴스를 선택하고 마우스 오른쪽 버튼으로 [속성]을 연다.

[서버 속성]의 [보안]페이지에서 서버 인증을 'SQL Server 및 Windows 인증 모드'로 선택한다.

② 개체탐색기에서 기본 인스턴스의 [보안] -> [로그인] -> [sa] 를 더블클릭 한다.

③ [상태] 페이지에서 데이터베이스 엔진 연결 권한을 '허용'으로, 로그인을 '사용'으로 변경한다.

[일반] 페이지에서 '암호 정책 강제 적용'을 체크 해제한 후에 비밀번호를 입력한다.

- 실제 사용할 경우에는 '암호 정책 강제 적용'은 체크하고 사용하는 것이 좋다. 이 부분을 체크하면, sa의 암호는 암호 정책에 준하는 것만이 승인된다.

(8자 이상에 문자/숫자/특수기호 혼용)

④ 해당 인스턴스를 다시 시작한다. 개체탐색기에서 기본 인스턴스를 마우스 오른쪽 버튼으로 클릭하고 [다시 시작] 한다.

[클라이언트 컴퓨터]

7. SSMS를 실행하고 서버 컴퓨터에 접속한다.

- 정상적으로 연결되면, 설정은 모두 완료된 것이다.

'database > MSSQL' 카테고리의 다른 글

동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
중복데이터 제거  (0) 2013.03.05
BCP  (0) 2010.06.29
간단한 내용들  (0) 2010.06.21
블로그 이미지

란마12

,

BCP

database/MSSQL 2010. 6. 29. 11:22

  • 테이블 포맷

    한정자 설명
    format nul -f format_file -x XML 서식 파일을 지정합니다.
    -c 문자 데이터를 지정합니다.
    -t , 쉼표(,)를 필드 종결자로 지정합니다.
    참고:
    데이터 파일의 기본 필드 종결자(\t)를 사용하면 -t 스위치는 불필요합니다.
    -r 데이터 파일의 기본 행 종결자
    -T bcp 유틸리티가 통합 보안을 사용하는 트러스트된 연결을 통해 SQL Server 로 연결되도록 지정합니다. -T가 지정되어 있지 않을 경우 성공적으로 로그인하려면 -U-P를 지정해야 합니다.
    -S DBMS서버명 또는 IP

    • 파일 뽑아내기
      bcp BizMent..OCS_HEAD format nul -T -t"|@|" -r"|%|" -c -f c:\db\ocs_head.fmt
    • 파일 형식
    • 포맷파일을 수정하여 원하는 필드만 복사할 수 있다.
      위의 파일형식 이미지에서 두번째 row를 빼고 싶다면 다음과 같이 수정한다.
      9.0
      3
      1    SQLCHAR    0    7    "\t"    1    DepartmentID    ""
      2    SQLCHAR    0    100  "\t"    3    DepartmentID    ""
      3    SQLCHAR    0    24   "\t"    4    DepartmentID    ""

  • 데이터 입력
    bcp BizMent..OCS_HEAD in c:\db\ocs_head.dat -f c:\db\ocs_head.fmt -T

 

  • bulk insert문으로도 대량의 데이터를 복사할 수 있지만 데이터파일이 DBMS가 있는 서버PC에 존재해야 한다. 데이터파일이 있는 클라이언트에 서버가 UNC로 접속이 가능하지 않다면 데이터파일을 서버로 복사해야 한다.




 

'database > MSSQL' 카테고리의 다른 글

동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
중복데이터 제거  (0) 2013.03.05
원격 접속 허용하기  (0) 2011.07.07
간단한 내용들  (0) 2010.06.21
블로그 이미지

란마12

,

간단한 내용들

database/MSSQL 2010. 6. 21. 11:12

+ 테이블 복제생성
  select * into [생성할 테이블명] from [기존 테이블명]

+ 튜닝
  RID Lookup 발생 시 clustered index로 변경
  실행계획 그래프에서 조인순서가 상하 순으로 나타난다.


'database > MSSQL' 카테고리의 다른 글

동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
중복데이터 제거  (0) 2013.03.05
원격 접속 허용하기  (0) 2011.07.07
BCP  (0) 2010.06.29
블로그 이미지

란마12

,

Function

Oracle

SQL Server

Convert character to ASCII

ASCII

ASCII

String concatenate

CONCAT

(expression + expression)

Convert ASCII to character

CHR

CHAR

Return starting point of character in character string (from left)

INSTR

CHARINDEX

Convert characters to lowercase

LOWER

LOWER

Convert characters to uppercase

UPPER

UPPER

Pad left side of character string

LPAD

N/A

Remove leading blank spaces

LTRIM

LTRIM

Remove trailing blank spaces

RTRIM

RTRIM

Starting point of pattern in character string

INSTR

PATINDEX

Repeat character string multiple times

RPAD

REPLICATE

Phonetic representation of character string

SOUNDEX

SOUNDEX

String of repeated spaces

RPAD

SPACE

Character data converted from numeric data

TO_CHAR

STR

Substring

SUBSTR

SUBSTRING

Replace characters

REPLACE

STUFF

Capitalize first letter of each word in string

INITCAP

N/A

Translate character string

TRANSLATE

N/A

Length of character string

LENGTH

DATALENGTH or LEN

Greatest character string in list

GREATEST

N/A

Least character string in list

LEAST

N/A

Convert string if NULL

NVL

ISNULL

 

Date 함수

Function

Oracle

SQL Server

Date addition

(use +)

DATEADD

Date subtraction

(use -)

DATEDIFF

Last day of month

LAST_DAY

N/A

Time zone conversion

NEW_TIME

N/A

First weekday after date

NEXT_DAY

N/A

Convert date to string

TO_CHAR

DATENAME

Convert date to number

TO_NUMBER(TO_CHAR())

DATEPART

Convert string to date

TO_DATE

CAST

Get current date and time

SYSDATE

GETDATE()


'database' 카테고리의 다른 글

T-SQL과 ANSI SQL JOIN방식 차이  (0) 2014.06.03
varchar냐 date냐  (1) 2011.08.19
DBMS에 따른 날짜포맷 변환  (0) 2010.06.18
tinyxml 수정사항  (0) 2010.01.15
블로그 이미지

란마12

,

### DBMS에 따른 날짜포맷 변환 ###

Oracle - MS SQL - DB2 UDB 의 서로 다른 날짜 형식을 맞추기위한 SQL문

--------------------------------------------------------------------------------
DBMS 별 시간, 날짜 조회 쿼리
--------------------------------------------------------------------------------
1. Oracle
- 날짜+시분초 까지 조회가능
select sysdate from dual;

- 날짜+밀리초+시간존 까지 조회
select current_timestamp from dual;
 
2. MS SQL
- 날짜 + 밀리초 단위까지 조회가능
select getdate();

 

3. DB2 UDB
- 날짜+밀리초까지 조회 가능
select current timestamp from sysibm.sysdummy1;
- 날짜만 조회
select current date from sysibm.sysdummy1;
- 밀리초 단위의 시간만 조회
select current time from sysibm.sysdummy1;
 
--------------------------------------------------------------------------------
DBMS 별 default date format
--------------------------------------------------------------------------------
1. Oracle
한글 : YYYY/MM/DD                       영어 : DD-MON-YYYY

 

2. MS SQL
한글 :  YYYY/MM/DD HH:MI:SS      영어 : MM-DD-YYYY HH:MI:SS

 

3. DB2 UDB
TIMESTAMP 타입 : YYYY-MM-DD-HH:MI:SS.MMMMMM
DATE 타입 : YYYY-MM-DD

TIME 타입 : HH:MI:SS.MMMMMM
 

--------------------------------------------------------------------------------
날짜 포맷 변환
--------------------------------------------------------------------------------
[ 형식 : 'YYYY.MM.DD' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY.MM.DD')
2. MSSQL : CONVERT(VARCHAR, date_exp, 102)
3. DB2 : REPLACE(CHAR(DATE(date_exp),ISO), '-', '.')
 
[ 형식 : 'HH:MI:SS' ]
1. Oracle : TO_CHAR(date_exp, 'HH:MI:SS')
2. MSSQL : CONVERT(VARCHAR, date_exp, 108)
3. DB2 : CHAR(TIME(date_exp) , JIS )

 

[ 형식 : 'YYYY/MM/DD' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY/MM/DD')
2. MSSQL : CONVERT(VARCHAR, date_exp, 111)
3. DB2 : REPLACE(CHAR(DATE(date_exp), ISO), '-', '/')

[ 형식 : 'YYYYMMDD' ]
1. Oracle : TO_CHAR(date_exp, 'YYYYMMDD')
2. MSSQL : CONVERT(VARCHAR, date_exp, 112)
3. DB2 : CHAR(DATE(date_exp))

[ 형식 : 'HH24:MI:SS' ]
1. Oracle : TO_CHAR(date_exp, 'HH24:MI:SS')
2. MSSQL : CONVERT(VARCHAR(8), date_exp, 114)
3. DB2 : CHAR(TIME(date_exp))

[ 형식 : 'YYYY.MM.DD HH24:MI' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY.MM.DD HH24:MI')
2. MSSQL : CONVERT(VARCHAR, date_exp, 102) + ' ' + CONVERT(VARCHAR(5), date_exp, 114)
3. DB2 : REPLACE(CHAR(DATE(date_exp), ISO), '-', '.') || CAST( TIME(date_exp) AS CHAR(5))

[ 형식 : 'YYYY/MM/DD HH24:MI:SS' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY/MM/DD HH24:MI:SS')
2. MSSQL : CONVERT(VARCHAR, date_exp, 111) + ' ' + CONVERT(VARCHAR(8), date_exp, 114)
3. DB2 : REPLACE(CHAR(DATE(date_exp), ISO), '-', '/') || CAST( TIME(date_exp))

'database' 카테고리의 다른 글

T-SQL과 ANSI SQL JOIN방식 차이  (0) 2014.06.03
varchar냐 date냐  (1) 2011.08.19
오라클과 MSSQL 함수 비교  (0) 2010.06.18
tinyxml 수정사항  (0) 2010.01.15
블로그 이미지

란마12

,

time interval

database/oracle 2010. 6. 18. 14:05

1. 10분에 한번씩 실행하는 경우

   sysdate + 1/24/6       또는  sysdate + 1/144  
     -> 1/24 (1시간-60분) / 6  : 10분 단위
        1/144   :  24*6  으로 나누어도 같은 의미가 된다.

2. 1분에 한번으로 지정하는 경우

   sysdate + 1/24/60   또는   sysdate + 1/1440

3. 매일 새벽 2시로 지정하는 경우

   trunc(sysdate) + 1 + 2/24  ->  다음날 새벽 2시를 지정함.


4. 매일 밤 11시로  지정하는 경우

   trunc(sysdate) + 23/24     ->  오늘 밤 11시를 지정했음.

 

5. 한달에 한번

   trunc(sysdate+30)

'database > oracle' 카테고리의 다른 글

link  (0) 2010.06.18
블로그 이미지

란마12

,

link

database/oracle 2010. 6. 18. 13:52

1. db link가 만들어지는 oracle에 link하고 자하는 oracle의 접속정보(tnsname.ora)가 있어야 한다.


2. grant create database link to TW_HSP_IMR;

create public database link link_test
connect to TW_HSP_IMR identified by HOSPITAL
using 'PMPA.WORLD'; -- 상대방 SID 이름, TNSNAME.ORA에 명시된 ALIAS


3. SELECT * FROM all_db_links;

DELETE TABUSER@LINK_TEST


4. ORA-02085: database link TATATA.WORLD connects to ORACLE

위의 경우와 같이 정상적으로 DB Link를 만든후 에러가 날경우 Init.ora File의
global_names Parameter를 확인하여 FALSE로 되어 있는지 확인해야 한다.

5. 8i에서 7로 링크할 경우 다음과 같은 에러가 발생할 수 있다.

ORA-01011: Cannot use v7 compatibility mode when talking to v6 server

원인: An attempt was made to use Oracle7 compatibility mode
when accessing Oracle Version 6.
v6와 v7간에 char처리가 틀려서 그렇다는데 확실히 모르겠다.

해결: sql*plus에서 set compatibility v7;

추가설명: COM[PATIBILITY] {V6|V7|NATIVE}
specifies the version of Oracle to which you are connected.
Set COMPATIBILITY to V6 for Version 6 or V7 for Oracle7. Set

COMPATABILITY to NATIVE if you wish the database to determine the
setting (for example, if connected to Oracle7, COMPATIBILITY would
default to V7). Note that you can set COMPATIBILITY to V6 when
connected to Oracle7. This enables you to run Version 6 SQL
against Oracle7.

Setting COMPATIBILITY to V6 causes SQL*Plus to treat CHAR
column values as variable length character strings.
Setting COMPATIBILITY to V7 causes SQL*Plus to treat CHAR
COLUMN VALUES as fixed length character strings and
VARCHAR2 (VARCHAR) column values as variable length
character strings.

See the Oracle7 Server documentation for a list of changes
from Version 6 to Oracle7.

'database > oracle' 카테고리의 다른 글

time interval  (0) 2010.06.18
블로그 이미지

란마12

,

tinyxml 수정사항

database 2010. 1. 15. 10:40

//string이 0으로 초기화 되면 오류가 발생
const char* TiXmlElement::GetText() const
{
  static char szEmpty[1] = "";
 const TiXmlNode* child = this->FirstChild();
 if ( child ) {
  const TiXmlText* childText = child->ToText();
  if ( childText ) {
   return childText->Value();
  }
 }
 return szEmpty;
 //return 0;
}

//set text기능이 없는거 같아 추가
void TiXmlElement::SetText(const char * _value) 

 //Text Type을 찾음
 TiXmlNode* pnd = NULL;
 TiXmlText* ptiText = NULL;
 for( pnd = this->FirstChild();
   pnd;
   pnd = pnd->NextSibling() )
 {
  if (pnd->Type() == TEXT)
  {
   ptiText = (TiXmlText*)pnd->ToText();
   break;
  }
 }

    if ( ptiText != NULL ) { 
  ptiText->SetValue(_value);
 }
 else
 {
  TiXmlElement* pel = NULL;

  TiXmlText tiTxt(_value);
  pel = this->FirstChildElement();
  if (pel != NULL)
  {
   this->InsertBeforeChild(pel, tiTxt);
  }
  else
  {   
   this->InsertEndChild(tiTxt);
  }
 }  
}

'database' 카테고리의 다른 글

T-SQL과 ANSI SQL JOIN방식 차이  (0) 2014.06.03
varchar냐 date냐  (1) 2011.08.19
오라클과 MSSQL 함수 비교  (0) 2010.06.18
DBMS에 따른 날짜포맷 변환  (0) 2010.06.18
블로그 이미지

란마12

,