'database/MSSQL'에 해당되는 글 10건

1. 원본 데이터베이스 스키마 스크립트 생성

   스크립팅 옵션 설정에서 [고급]버튼을 눌러 기본키, 외래키, 인덱스등도 포함되도록 설정


2. 타겟 데이터베이스에서 같은 이름으로 데이터베이스 생성

   생성 옵션 중 데이터정렬을 원본 데이터베이스와 같게 맞춘다.


3. 스키마 스크립트를 불러와 실행


4. 원본 데이터베이스에서 데이터 내보내기 기능을 이용

   자동증가 ID가 있는 테이블은 해당 테이블 마다 [매핑편집]버튼을 클릭하여 [ID입력 가능]을 체크해준다. SET IDENTITY_INSERT TableName ON


enter image description here

http://stackoverflow.com/questions/20948819/error-0xc0202049-data-flow-task-1-failure-inserting-into-the-read-only-column

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

저장프로시저에서 CURSOR사용 자제  (0) 2015.07.21
export schema  (0) 2014.10.21
데이터 타입과 크기  (0) 2014.08.01
동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
블로그 이미지

란마12

,

아래와 같은 방법으로 CURSOR의 기능을 대체할 수 있다.


--Declare the Table variable 
DECLARE @Elements TABLE
(
    Number INT IDENTITY(1,1), --Auto incrementing Identity column
    ProductName VARCHAR(300) --The string value
)

--Decalre a variable to remember the position of the current delimiter
DECLARE @N INT 

--Decalre a variable to remember the number of rows in the table
DECLARE @Count INT

--Populate the TABLE variable using some logic
INSERT INTO @Elements SELECT Name FROM dbo.Products

--Initialize the looper variable
SET @N = 1

--Determine the number of rows in the Table
SELECT @Count=max(Number) from @Elements

--A variable to hold the currently selected value from the table
DECLARE @CurrentValue varchar(300);

--Loop through until all row processing is done
WHILE @N <= @Count

BEGIN
    --Load current value from the Table
    SELECT @CurrentValue = ProductName FROM @Elements WHERE Number = @N
    --Process the current value
    print @CurrentValue
    --Increment loop counter
    SET @N = @N + 1;
END

http://www.codeproject.com/Articles/34142/Understanding-Set-based-and-Procedural-approaches

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

데이터 내보내기, 가져오기  (0) 2015.08.20
export schema  (0) 2014.10.21
데이터 타입과 크기  (0) 2014.08.01
동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
블로그 이미지

란마12

,

export schema

database/MSSQL 2014. 10. 21. 21:40

Set oSS = CreateObject("SQLDmo.SqlServer") 

oSS.LoginSecure = True 

oSS.Connect "000.000.000.000", "dbid", "dbpass"

Set oT = CreateObject("SQLDMO.Transfer")

Set oDb = oSS.Databases("dbname")

oT.CopyAllTables = True

oT.CopyAllViews = True

oT.CopyAllFunctions = True

oT.CopyAllStoredProcedures = True

oT.CopyAllTriggers = True

oDb.ScriptTransfer oT, 2, "c:\schema_export.sql"


oSS.disconnect

'clean up

set oT = Nothing

set oSS = nothing


WScript.Sleep 3000

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

데이터 내보내기, 가져오기  (0) 2015.08.20
저장프로시저에서 CURSOR사용 자제  (0) 2015.07.21
데이터 타입과 크기  (0) 2014.08.01
동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
블로그 이미지

란마12

,

분류

데이터 타입

범위

저장소크기

정수

Bit

O 또는 1

bit

Int

-2,147,483,648 ~ 2,147,483,647

4 바이트

Smallint

-32,768 ~ 32,767

2 바이트

Tinyint

0 ~ 255

1 바이트

Bigint

-2^63 ~ 2^63-1

8 바이트

부동소수점

Float[n]

-1.79E+308 ~ 1.79E+308 
n = 1~24

4 바이트

Float[n]

-1.79E+308 ~ 1.79E+308 
n = 25~53

8 바이트

Real

-3.40E + 38 ~ 3.40E + 38

4 바이트

문자데이터

char[n]

n = 1~8000

n 바이트

Varchar[n]

n = 1~8000

varchar [ ( n | max ) ]

max는 최대 저장소 크기가 2^31-1바이트임

입력한 데이터의 길이

Text

최대 2,147,483,647자의 가변길이

 

유니코드 
문자데이터

Nchar

n = 1~4000

n*2 바이트

nvarchar

n = 1~4000

nvarchar [ ( n | max ) ]

max는 최대 저장소 크기가 2^31-1바이트임

입력한 데이터의 길이*2 바이트

Ntext

최대 1,073,741,823자의 가변길이

 

이진데이터

binary

n = 1~8000

n+4 바이트

varbinary

n = 1~8000

varbinary [ ( n | max) ]

max는 최대 저장소 크기가 2^31-1바이트임

입력한 데이터의 길이+4 바이트

Image

최대 2,147,483,647자의 가변길이

 

날짜와시간

datetime

1753/1/1~9999/12/31

8 바이트

smalldatetime

1900/1/1~2079/6/6

4 바이트

화폐

money

-922,337,203,685,477.5808~ +922,337,203,685,477.5807

8 바이트

smallmoney

-214,748.3648~214,748.3647

4 바이트


기타 데이터 형식

decimal , numeric, cursor, timestamp, sql_variant, uniqueidentifier, table, xml


 

msdn 글~

text, ntext 및 image 데이터 형식 대신 varchar(max), nvarchar(max) 및 varbinary(max) 데이터 형식을 사용합니다.


ntext, text 및 image 데이터 형식은 Microsoft SQL Server 의 다음 버전에서 제거될 예정입니다. 향후 개발 작업에서는 이 데이터 형식을 사용하지 않도록 하고 현재 이 데이터 형식을 사용하는 응용 프로그램은 수정하십시오. 대신 nvarchar(max), varchar(max) 및 varbinary(max)를 사용합니다. 자세한 내용은 큰 값 데이터 형식 사용을 참조하십시오.


출처: http://cafe.naver.com/devweb/32

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

저장프로시저에서 CURSOR사용 자제  (0) 2015.07.21
export schema  (0) 2014.10.21
동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
중복데이터 제거  (0) 2013.03.05
블로그 이미지

란마12

,

동적쿼리

database/MSSQL 2014. 7. 16. 14:08

DECLARE @sSql NVARCHAR(MAX);

DECLARE @a_sParam2 NVARCHAR(MAX);

SET @a_sParam2 = '''000000010'',''000000011''';

SET @sSql = 'UPDATE TB_TEST SET COL1 = ''1'' WHERE COL2 IN(@sMcodes)';

PRINT @sSql;

PRINT @a_sParam2;

EXEC SP_EXECUTESQL @sSql, N'@sMcodes NVARCHAR(MAX)', @sMcodes = @a_sParam2;


SQL INJECTION등 위험성 때문에 위의 코드는 작동하지 않는다.

결국 동적쿼리 쓰지 않고 파싱해서 임시테이블 생성함수 만들어 사용

UPDATE TB_PPS_PRS SET COL1 = '4', WHERE COL2 IN(SELECT ITEM FROM DBO.DelimitedSplit8K('000000010,000000011', ','))



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

export schema  (0) 2014.10.21
데이터 타입과 크기  (0) 2014.08.01
메일 발송  (0) 2014.01.28
중복데이터 제거  (0) 2013.03.05
원격 접속 허용하기  (0) 2011.07.07
블로그 이미지

란마12

,

메일 발송

database/MSSQL 2014. 1. 28. 11:08








다음작업을 수행하여 데이터베이스 메일 설치 -> 다음

프로필이름, 설명 적고, 아랫쪽 추가 클릭

계정이름 및 SMTP서버 정보 입력


DECLARE @body1 varchar(100)

SET @body1 = 'Server :'+@@servername+ ' My First Database Email '

EXEC msdb.dbo.sp_send_dbmail

    @profile_name = 'MY_PROFILE_NAME' -- 프로필이름

,    @recipients = 'yonjunhee@gmail.com'

, @copy_recipients = null

, @blind_copy_recipients = null

, @body_format = 'TEXT'

,    @body = @body1 

, @importance = 'Normal'

, @sensitivity = 'Normal'

, @file_attachments = null

,    @query = 'SELECT * FROM [DBNAME].[DBO].TABLE1'

,    @subject = @body1 

,    @attach_query_result_as_file = 1  -- 쿼리문으로 만들어진 파일은 한개

,    @query_attachment_filename = 'SelectQuery.csv' -- 출력형태는 mssql 에서 지원하는 형태가 몇개 있츰 첨부될 파일명 지정

, @query_result_header = 1

, @query_result_width = 32767 -- can go to 32767 for query width

, @query_result_separator = ','

, @exclude_query_output = 0

, @append_query_error = 1

, @query_result_no_padding =1 -- turn off padding of fields with spaces


발송내역 확인

 SELECT * FROM [msdb].[dbo].[sysmail_allitems]


http://blog.naver.com/vfxx?Redirect=Log&logNo=100168933260


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

데이터 타입과 크기  (0) 2014.08.01
동적쿼리  (0) 2014.07.16
중복데이터 제거  (0) 2013.03.05
원격 접속 허용하기  (0) 2011.07.07
BCP  (0) 2010.06.29
블로그 이미지

란마12

,

DELETE TB_DATE_IDXa FROM

(

SELECT

ROW_NUMBER() OVER (PARTITION BY HCODE_DT, KBNUM, BARCODE ORDER BY HCODE_DT) AS ROWNUM

FROM TB_DATE_IDX

) AS TB_DATE_IDXa

WHERE TB_DATE_IDXa.ROWNUM > 1

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

동적쿼리  (0) 2014.07.16
메일 발송  (0) 2014.01.28
원격 접속 허용하기  (0) 2011.07.07
BCP  (0) 2010.06.29
간단한 내용들  (0) 2010.06.21
블로그 이미지

란마12

,

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

,