이 블로그 검색

2014년 6월 16일 월요일

SSIS UNZIP TASK



 

 

Executable : unzip.exe
 
Arguments : "D:\unzip.exe " -o  "C:\zipFilePath\file.zip" -d "D:\unzipFolderPath\"
폴더명에 공백이 포함된 경우 Double Quotation 으로 묶어줘야 하며
Argument 값에 에서 Double Quotation은   \"  으로 입력한다.
 
 
 

OPENQUERY INSERT/UPDATE/DELETE



-- update
UPDATE OPENQUERY(LINKED1, 'SELECT SSN FROM TESTLINKED WHERE SSN=2')
SET SSN=SSN + 1

-- insert
INSERT OPENQUERY(LINKED1, 'SELECT SSN FROM TESTLINKED WHERE 1=0') VALUES (1000)

-- delete
DELETE OPENQUERY(LINKED1, 'SELECT SSN FROM TESTLINKED WHERE SSN>100')

SQL Server 에 접속되어 있는 IP 찾기


DMBS에서 CMD 명령어를 사용하기 위해 cmdshell 활성화 하는 것은 보안상 취약 있으므로

주의가 필요함.

 

 
 

-----------------------------------------

-- cmdshell Option Enable

sp_configure 'show advanced options', 1

RECONFIGURE

sp_configure 'xp_cmdshell', 1

RECONFIGURE

 

------------------------------------

--- Create Procedure

CREATE PROCEDURE usp_getboundAddresses

AS

BEGIN

 

SET NOCOUNT ON

 

IF OBJECT_ID('tempdb..#SomeTable') IS NULL

CREATE TABLE #SomeTable

(

ShellOutput VARCHAR(500)

)

 

INSERT INTO #SomeTable

EXEC xp_cmdshell 'nbtstat -a .'

 

SELECT

SUBSTRING( ShellOutput,

CHARINDEX('[',ShellOutput)+1,

-- LEN(ShellOutput) - CHARINDEX(']',ShellOutput) -2 --(EN)

 

LEN(ShellOutput) - CHARINDEX(']',ShellOutput) + 1 --(KR)

 

) AS BoundAddress

from #SomeTable

-- WHERE ShellOutput LIKE '%Node IpAddress%' --the important lines(EN)

 

WHERE ShellOutput LIKE '%노드 IpAddress%' --the important lines(KR)

AND ShellOutput NOT LIKE '%0.0.0.0%' --Unassigned addresses

 

DROP TABLE #SomeTable

 

END

 

------------------------------------------

-- Execute Procedure

 

exec usp_getboundAddresses

 

------------------------------------------

-- Result

 

 







Could not continue scan with NOLOCK due to data movement

에러 메세지 : 
Msg 601, Level 12, State 2, Line 8
데이터 이동으로 인해 NOLOCK으로 계속 검색할 수 없습니다.
 
영문 : Could not continue scan with NOLOCK due to data movement 

 
해결 : Index Rebuild 후 다시 쿼리 실행.

SQL Server 버전 정보 확인

SSMS UI 내에서도 확인 가능하겠지만,
쿼리로도 조회 가능.


SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

제품버전        제품수준     에디션
결과 : 10.0.1600.22       RTM      Enterprise Edition

SQL Server 에러번호로 에러메세지 확인하기

 
 
SELECT * FROM MASTER.SYS.MESSAGES WHERE MESSAGE_ID = 8630 AND LANGUAGE_ID = 1042

결과 : 8630 1042 17 0 내부 쿼리 프로세서 오류: 쿼리 프로세서 실행 중 오류가 발생했습니다.

Windows Server 2008에 SQL Server 2008 설치시 에러

증상

.net Framework 3.5 설치관련 에러 메세지



 

해결 
 따로 3.5를 설치할 필요 없으며 (할려고 해도 에러) 
서버 로그인시 초기 구성 작업 창이 뜨면 기능 추가 를 통해 설치가 가능하다. 
(실행 > ServerManagerLauncher 로도 실행가능함) 





제거되지 않는 공백


SELECT 문으로 봤을때 462 라고만 나오고
REPLACE(컬럼,' ', '') 또는 LTRIM,RTRIM을 사용해도
제대로 제거되지 않는 공백이 포함되어 있는 데이터의
ASCII 코드를 살펴보니 아래와 같은 데이터들이 포함.


DECLARE @position int, @string char(15)
SET @position = 1
SET @string = (select TESTCOL from TESTTBL where ~~~ )
WHILE @position <= DATALENGTH(@string)
 BEGIN
 SELECT ASCII(SUBSTRING(@string, @position, 1)),
 CHAR(ASCII(SUBSTRING(@string, @position, 1)))
 SET @position = @position + 1
 END


-- 결과 --------
----------- ----
52 4
----------- ----
54 6
----------- ----
50 2
----------- ----
9
----------- ----
32
----------- ----
32
----------- ----
32
----------- ----
32


오라클에서 SQL Server로 이관한 데이터에는 겉으로 보기엔 같은 공백,
ASCII 다양한 공백이 포함되어 있었고
REPLACE(컬럼, CHAR(9), '') 와 같은 방법으로 처리
CHAR(32)는 일반적인 공백이므로 REPLACE나 TRIM으로 처리가 가능.


SQL SERVER 에서는 CHAR(9)가 포함된 두 개의 데이터를 구분하지만
SSAS에서 차원처리를 하거나 할때는 같은 데이터로 보고 에러를 낸다.

(키중복 등)

특정 차원 멤버로 필터링된 측정값 생성

CREATE MEMBER CURRENTCUBE.[Measures].[남성고객수]

AS SUM({ [성별].[성별].&[M]}, [Measures].[고객고유카운트]);


CREATE MEMBER CURRENTCUBE.[Measures].[여성고객수]

AS SUM({ [성별].[성별].&[F]}, [Measures].[고객고유카운트]);

엑셀 새창 띄우기

엑셀파일 더블클릭시 새창으로 띄우기

1. 실행 → regedit

2. HKEY_CLASSES_ROOT\Excel.sheet.12\shell\open\ddeexec → 폴더 삭제

3. HKEY_CLASSES_ROOT\Excel.sheet.12\shell\open\command\command  → 삭제

4. HKEY_CLASSES_ROOT\Excel.sheet.12\shell\open\command\(기본값)  수정
    →  C:\Program Files\Microsoft Office\Office12\EXCEL.EXE" /en "%1
 

Oracle Calendar table

오라클 일자테이블 생성


SELECT TO_CHAR (MYDATE, 'yyyymmdd')   AS DATE_CD,
       TO_CHAR (MYDATE, 'yyyy')                 AS YEAR_CD,
       TO_CHAR (MYDATE, 'yyyy')||'년'          AS YEAR_NM,
       TO_CHAR (MYDATE, 'MM')                   AS MONTH_CD,
       TO_CHAR (MYDATE, 'MM')||'월'            AS MONTH_NM,
       TO_CHAR (MYDATE, 'DD')                   AS DAY_CD,
       TO_CHAR (MYDATE, 'DD')||'일'            AS DAY_NM,
       TO_CHAR (MYDATE, 'D')                     AS WEEK_CD,
       TO_CHAR (MYDATE, 'Day')                  AS WEEK_NM,
       TO_CHAR (MYDATE, 'WW')                  AS YEAR_WEEK_CD,
       TO_CHAR (MYDATE, 'WW')||'주차'        AS YEAR_WEEK_NM,
       TO_CHAR (MYDATE, 'Q')                     AS QRTR_CD,
       TO_CHAR (MYDATE, 'Q')||'/4분기'        AS QRTR_NM,
       DECODE( TO_CHAR (MYDATE, 'Q'), '1','1','2','1','3','2','4','2')                      AS HALF_CD,
       DECODE( TO_CHAR (MYDATE, 'Q'), '1','상반기','2','상반기','3','하반기','4','하반기')  AS HALF_NM
  FROM (
        SELECT TRUNC (ADD_MONTHS (SYSDATE, -60), 'yy') - 1 + LEVEL AS MYDATE
           FROM DUAL
         CONNECT BY LEVEL <= (SELECT   TRUNC (ADD_MONTHS (SYSDATE, 60), 'yy')
                                     - TRUNC (ADD_MONTHS (SYSDATE, -12), 'yy')
                                FROM DUAL
                             )
       );


 

2014년 5월 1일 목요일

SSMS 결과창 보이기/숨기기

이전 버전까지는 잘 사용하던 쿼리결과창 보이기 숨기기 (Ctrl+R)가 SQL Server 2012버전의 SSMS 부터는

따로 키 지정을 해줘야한다.


도구(T) > 사용자 지정(C) > 키보드(K)
창.결과창표시 선택 > 새 바로 가기 사용 위치(N) : "SQL 쿼리 편집기"
바로 가기 키 누르기(P) : "Ctrl+R"
할당(S) > 확인

 

Tools > Customize > Keyboard >
"Window.ShowResultsPane" > Use new shortcut in : "SQL Query Editor"
Press shortcut keys : "Ctrl+R"
Assign > OK

2014년 4월 24일 목요일

[ERWin] Revers Engineer to SQL Server 2005

증상

ERWin에서 Reverse Engineer를 하기위해 SQL Server 2005에 접속시도중

DAX000: Unable to locate client connectivity software sqlncli.dll(Native ODBC Connectivity)

위와 같은 에러를 내면서 접속조차 되지 않음.


해결
Client 버전 문제이겠구나.. 생각하고 SQL Server 2005 Client 설치, 그래도 동일한 오류.
MS Download Center에서 SQL Server 2005용 기능팩을 다운로드 할 수있고 이 기능팩 설치후 정상 동작.

http://www.microsoft.com/downloads/ko-kr/details.aspx?FamilyId=50b97994-8453-4998-8226-fa42ec403d17&DisplayLang=ko







증상2.
접속은 되는데.. 테이블을 긁어오는 도중 ERWin이 뻗어버리는 증상이 발견.

해결.
정확히 어떤 옵션 때문에 뻗어버리는지는 찾지 못했지만 (일일이 체크하며 찾기 귀찮..)
Reverse Engineer시 기본적으로 옵션이 모두 체크되어있는데 단순히 테이블만 긁어오는 용도라면 다른 옵션을 모두 제거하고 테이블만 선택하면 에러없이 정상적으로 Reverse Engineer가 완료됨.