본문 바로가기

MSSQL

[MSSQL] 데이터 이전시 문자 데이터 변환수행 주의점 일반적으로 SQL DB 서버의 데이터 이전 결과로 문자 데이터의 변환이 자동적으로 수행됨에 따라서 해당 문자열 타입의 컬럼 데이터가 공백 문자열[' ']로 채워지는 경우가 있습니다. 입력 데이터 단에서 아무리 공백을 제거한 후 결과를 봐도 아래와 같은 결과가 나옵니다. 'abcd' ---> 'abcd ' 위와 공백이 채워진 경우는 SQL-SERVER 의 SET ANSI_PADDING 설정을 한 후 db 이전(insert)을 해야 합니다 SET ANSI_PADDING OFF 로 설정 그리고 또 다른 상황입니다. 일반적으로 프로시저등을 이용해서 DB 이전을 하는 경우는 위와같이 하면 문제가 없으나, 특정 툴을 사용하여 이전을 하게되면 종종 ODBC를 이용하는 경우가 많습니다. 이럴 경우 아무리 DBMS단에서.. 더보기
[MSSQL]서버 BAK파일 복구 특정 서버의 bak 파일을 수신하여 다른 서버에서 다시 특정 db를 복구하는 방법 use master restore filelistonly from disk='D:\백업파일명.bak'restore database '백업db명' from disk='D:\백업파일명.bak' with replace, norecovery, move '백업db명' to 'mdf파일경로', move '백업db로그' to 'ldf파일경로', 더보기
[MSSQL]날짜관련 함수 Convert()함수 사용,참고로 cast()함수는 포맷지정안됨 예)오늘날짜를 YYMMDD형태로 나타내기 select CONVERT(varchar(8), getDate(),112) 2. DATEPART () 예1)오늘이 무슨요일인지(일요일=1~토요일=7까지) select DATEPART (weekday, getDate()) 예2)오늘이 몇일인지 select DATEPART (day, getDate()) 3. DATEADD ( datepart , number, date ) 예1)오늘부터 3일뒤 select DATEADD ( week ,2, getDate() ) 예2)오늘부터 2주일뒤 select DATEADD ( week ,2, getDate() ) 예3)이번주 시작일요일과 끝토요일 select DATEA.. 더보기
[MS SQL] DB 파티션 Using Views to Partition Data 파일그룹으로 대용량의 데이터를 저장할 수는 있으나 각 파일에는 작년꺼, 올해꺼 식으로 나눠서 저장할 수는 없다. select 시 많은 파일그룹의 데이터를 읽어오려면 속도가 오래걸린다. 예를 들어, Server 1 : C(200201-200204 data) D(200205-200209 data) E(200209-200212 data) Server 2 : C(200101-200104 data) D(200105-200109 data) E(200109-200112 data) Server 1,Server 2의 각 C,D,E에 구조가 같은 테이블을 각각 생성하고 그 테이블의 WITH CHECK OPTION을 넣어 해당 기간의 데이터만 저장되게 하고 각 데이터를 .. 더보기
[MSSQL]DB손상복구 업체에서 사용중 전원 OFF등에 의해 파일손상(CRC오류)됨, DB연결오류로 업무중단발생 다행히 LOG파일만 손상되어 복구가 가능하였고 MDF파일은 재사용가능했음(일부데이타누락) 일단 디스크복구를 돌려 재부팅후 CRC오류로 복사안돼는현상 제거 [아래는 로그파일만 손상됐을경우에 한함] 1) ‘주의대상’으로표시된데이터베이스에대해다음의쿼리문을수행하여 ‘응급복구’모드로설정합니다. ALTER DATABASE database_name SET EMERGENCY2) SQL Server를중지합니다. 데이터베이스파일이저장된폴더에서데이터베이스의트랜잭션로그파일(.ldf)의이름을변경합니다. SQL Server를재시작합니다. 3) SSMS로접속하여다음명령을수행합니다. ALTER DATABASEdatabase_nameREBUILD.. 더보기
[MSSQL] MS-SQL MERGE 문 예제 데이터를 저장 할 때 해당 데이터를 수정 및 추가 저장을 체크를 해야 할 경우가 있습니다. 이때 사용하는 것이 Merge 문입니다. Merge 문의 MSDN Syntax 주소 : http://msdn.microsoft.com/ko-kr/library/bb510625(SQL.105).aspx MS-SQL MERGER 문 예제 MERGE TB_IDX AS T USING (SELECT \'20130301\' AS IDX_DD,\'IDX_SHP_SI\' AS IDX_CATE_ID) AS IDX ON (T.IDX_DD = IDX.IDX_DD AND T.IDX_CATE_ID = IDX.IDX_CATE_ID) WHEN MATCHED THEN--AND T.IDX_DD = \'20130301\' AND T.IDX_CAT.. 더보기
[MSSQL] 64비트 SQL Server 2005이상에서 32비트 Server 2000(7.0) Linked Server 등록시 64비트 SQL Server 2005 클라이언트에서 연결된 32비트 SQL Server 2000 서버 또는 연결된 SQL Server 7.0 서버로 분산 쿼리를 실행하려고 하면 오류 메시지가 나타날 수 있다 다음 저장 프로시저를 32비트 버전의 SQL Server 2000(7.0) master 데이터베이스에 추가하면 됩니다. create procedure sp_tables_info_rowset_64 @table_name sysname, @table_schema sysname = null, @table_type nvarchar(255) = null as declare @Result int set @Result = 0 exec @Result = sp_tables_info_rowset @table_name, .. 더보기
[MSSQL] Table Modify 1. Table 이름 변경 : SP로 구현됩니다. -> EXEC sp_rename \'기존테이블명\', \'새테이블명\' 자세한 내용은 BooksOnline에서 sp_rename을 참조하세요. 2. Table 컬럼 이름변경 : SP로 구현됩니다. -> EXEC sp_rename \'테이블명.[기존컬럼명]\',\'새컬럼명\',\'column\' 3. Table 컬럼 사이즈 변경 -> ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 varchar(늘리고자하는 SIZE) 더보기