컴퓨터2009.07.01 07:00

부제 : sp_addlinkedserver 를 이용하는 방법

MSSQL 2005 에서 MSSQL 2000 서버의 특정 데이블의 데이터가 필요할 경우가 있습니다.

  1. AJAX 를 이용해서 데이터를 가져옵니다.
    이건 너무 복잡해집니다. 배보다 배꼽이 더 커질수도 있는 조짐이 보이는 방법이군요.
  2. sp_addlinkedserver 를 이용해서 오픈쿼리로 실행을 한다.
    일단 이름이 딱 입니다.


정확히 무슨 용도로 사용이 되는지 sp_addlinkedserver 프로시저의 MSSQL 도움말을 살펴보도록 하겟습니다.

MSSQL 도움말 :  sp_addlinkedserver
OLE DB 데이터 원본과 유형이 다른 분산 쿼리를 액세스할 수 있도록 해 주는 연결된 서버를 작성합니다. sp_addlinkedserver와 연결된 서버를 작성한 다음에는 이 서버가 분산 쿼리를 실행할 수 있습니다. 연결된 서버가 Microsoft® SQL Server™로 정의된 경우에는 원격 저장 프로시저를 실행할 수 있습니다.


정말 MSSQL 2005 와 MSSQL 2000 를 하나의 서버처럼 사용할수 있습니다.  물론 SQL Server 뿐만 아니라, Oracle, 액세스/Jet, ODBC 데이터 원본, 파일 시스템, Microsoft Excel 스프레드시트, IBM DB2 Database 도 연결해서(linked) 사용을 할수가 있습니다. [주:지원하는 버젼이 정말 많네요]

sp_addlinkedserver 구문sp_addserver [ @server = ] 'server'
     [ @srvproduct = ] 'product_name'
     [ @provider = ] 'provider_name'
     [ @datasrc = ] 'data_source'
     [ @location = ] 'location'
     [ @provstr = ] 'provider_string'
     [ , [ @catalog = ] 'catalog' ]


이번에 사용하게된 MSSQL 2005 에서 MSSQL 2000 으로 sp_linkedserver 로 연결해서 사용하는 방법을 공개합니다.

MSSQL 2005 에서 MSSQL 2000 으로 sp_linkedserverEXEC sp_addlinkedserver
@server='서버별칭',
@srvproduct = '',
@provider = 'SQLOLEDB',
@datasrc =
'서버주소',@provstr='Provider=SQLOLEDB;Data Source=서버주소;Initial Catalog=데이터베이스명;User id=사용자명; Password=비밀번호;',
@catalog='데이터베이스명'
GO

EXEC sp_addlinkedsrvlogin '서버별칭', 'false', NULL, '사용자명', '비밀번호'
GO

SELECT * FROM [서버별칭].[데이터베이스명].[dbo].[sysfiles]
GO


Posted by Zasfe
컴퓨터2009.06.10 08:00

처음 무언가를 배우는 사람은 다른 사람이 남긴 것을 보고 배우게 됩니다.
VBScript 를 공부하고 있습니다. 문법은 GUI 관련 부분이 없는 정도의 Visual Basic 와 비슷합니다. PowerShell 과 같이 특정 윈도우 상위만 지원하는 것이 아닌 모든 윈도우에서 사용이 가능하며, 조금은 번거롭지만 닷넷에서도 사용이 가능합니다. 저 같은 사람에게는 정말 가뭄의 단비같은 존재입니다.

요즘 획득한(?) 웹쉘의 내용을 보면서 참 많은것을 느꼈습니다.

이제까지 아무생각 없이 IF 문을 이용해서 특정 문자가 들어있는 부분을 체크했었는데 이 소스가 더 나아 보입니다.
소스1
IF instr(keyword, "\")>0 or instr(keyword, "/")>0 or instr(keyword, ":")>0 or .... then
   ........
End IF

그런데 이번에 본 웹쉘에는 다음과 같은 내용이 있었습니다.
소스2
flag =  instr(keyword, "\")>0 or instr(keyword, "/")>0
flag = flag or instr(keyword, ":")>0
flag = flag or instr(keyword, "|")>0
....
flag = flag or instr(keyword, "&")>0
IF flag then
   ........
End IF

2번째 소스는 flag 라는 변수와 OR 라는 논리 연산자를 이용해서 소스수정이 쉽도록 작성이 되어 있습니다.

OR 논리 연산자 는 입력값이 둘다 False 일 경우 False 를 반환하며, 그외에는 True 를 반환합니다.
입력1 값 입력2 값 결과
0 0 0
0 1 1
1 0 1
1 1 1


소스1과 소스2의 차이는 크게 없습니다. 다만 현제 작성하기 쉬운 것와 나중에 수정하기 쉬운 차이가 있습니다.

가령 체크를 해봐야 할 문자가 10개 정도 된다면 어떻게 될까요.
소스1의 방식으로는 조건문(IF)이 상당히 긴 내용으로 작성이 됩니다. 소스2의 방법으로는 줄(라인)수가 많게 작성이 됩니다.
차이는 조건문의 일부를 수정할때 발생을 합니다. 소스1의 방식은 일단 알아보기가 쉽지 않습니다. 그나마 띄어쓰기라도 했다면 알아보기 쉬울테지만 소스2만큼 쉽지는 않을것입니다.

이렇듯 성능상 차이가 있는 부분은 아니지만 나중에 다시 소스를 보게될 경우를 대비해서 조금이라도 알아보기 쉬운 코드로 작성을 해야 할것 같습니다.

일단 주석부터 추가해야 겠네요. ^^;



결론. 지금 편하자고 막하면 나중에 고생한다.

Posted by Zasfe
컴퓨터2009.06.01 13:00


마이크로소프트 실버라이트(Microsoft Silverlight. 이하 실버라이트)는 마이크로소프트에서 제공하는 웹브라우저 플러그인입니다. 웹브라우저 플러그인은 운영체제(XP, VISTA, 맥, 리눅스)에 상관없이 사용이 가능하도록 플래시와 퀵타입처럼 별도의 프로그램없이(실제로는 플러그인으로 설치됩니다.) 웹브라우져내에서 사용자가 쉽게 사용하도록 만든 도구입니다.

하지만 실버라이트는 특정 확장자를 사용합니다. 그렇기 때문에 IIS 6.0 이후버전에서는 확장자를 등록하고 사용을 하여야합니다.

IIS 의 MIME 등록하는 방법은 위즈님실버라이트 xap 실행이 안 된다면, IIS MIME 확인 을 참고하시기 바랍니다.

다음은 web.config 파일을 이용해서 확장자를 등록하는 방법입니다.

Web.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <staticContent>
          <mimeMap fileExtension=".application" mimeType="application/x-ms-application" />
          <mimeMap fileExtension=".deploy" mimeType="application/octet-stream" />
          <mimeMap fileExtension=".manifest" mimeType="application/manifest" />
          <mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
          <mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
          <mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
        </staticContent>
    </system.webServer>
</configuration>

추가. 다음 확장자도 사용이 된다고 합니다.
Extension  MIME Type 
.manifest  application/manifest
.application  application/x-ms-application
.deploy  application/octet-stream
 

추가. Configuring IIS for Silverlight Applications


web.config 에 관련된 글 [tag]web.config|10[/tag]
Posted by Zasfe
컴퓨터2009.05.26 13:00

Serv-U 의 설정파일인 ini 파일에 입력할 패스워드를 생성하는 방법입니다.

Serv-U 의 제작사인 rhinosoft.com 에서 찾은 방법입니다. 이 부분은 원래 회사에서 이미 다루어본 사람들이 있습니다. 그런데 알려달라고 해도 도통 이야기를 안해주더군요. 한번 만든건 다 완성품이라고 생각하는지 소스를 들여다볼 생각도 안하는 사람들이라 찾아봤습니다.(말은 이렇게 쉽게해도 찾은것은 거의 5달 걸린듯하네요..)

Serv-U 는 패스워드를 저장할때 많은 분들이 쉽게 찾을수 있다시피 MD5 라는 암호화 방식을 사용합니다. 

하지만 MD5로 암호화만 하는것이 아니라 약간의 조작이 필요합니다.[주:조금이라도 해독이 어렵게 하려는것이였는지 얇팍한 지식의 한계로 도움이 필요합니다.]
바로 2글자[주:a-z, A-Z 까지의 영문으로된 2글자] 문자가 포함된 것입니다.

아래는 제작사사이트에 기재되어 있는 부분을 일부 추가한 부분입니다.

Action Result
1 패스워드를 입력 받습니다. TestPassword
2 입력받은 값에 2글자 문자를 추가합니다. cbTestPassword
3 MD5 암호화를 합니다. 8EA58F0751BAA5AF391253F7DADD3D46
4 암호화한 값의 앞에 2번의 문자를 추가합니다.  cb8EA58F0751BAA5AF391253F7DADD3D46

위 방법에서 중요한 부분은 2,4 번 단계에서 반드시 같은 문자를 입력해야 한다는 것과
또한 MD5 를 한 후의 값에만 2글자문자를 입력하는것이 아니라 MD5 암호화 전, 후에 입력을 해야 한다는 것이였습니다.



참조.
rhinosoft.com - Manually Generating Encrypted Passwords
Posted by Zasfe
컴퓨터2009.05.25 13:00

지난 13일에 마이크로소프트에서 MSSQL 2008 관련 세미나가 있었습니다.
일단 "SQL Server 2008 구축 및 튜닝, 문제해결 방법론" 제목으로 안내되었던 기존 세미나보다 튜닝에 중점을 둔 세미나 라는 강조를 하였습니다. 물론 반나절동안에는 사례중심의 제품장점 소개로 끝이 나는것이 대부분의 튜닝강좌였기때문에 큰 기대를 하지는 않았습니다.

당일 1시부터 시작이여서 부랴부랴 12시에 업무를 마치고 바로 출발하였습니다. 마이크로소프트한국지사에서 하는것이기에 선능역에서 내려 도보로 걸어갔습니다. 마이크로소프트가 있는 포스코센터는 위치가 애매해서 선능역과 코엑스의 중간에 있습니다.


한국마이크로소프트위치


(좋은 교통편을 알고 계신분의 고마운 댓글 부탁드립니다.)

직접 가서 보고 들은것은 성능향상을 위한 튜닝이 아닌 문제점 해결을 통한 튜닝이였습니다. 다만 방대한 로그속에 허우적거리는 담당자로서 알고 있지만 분석할 엄두가 나지도 않습니다.

다음은 테크넷에서 당시의 세미나동영상을 올려 놓은것이니, 혹시라도 참석하지 못하셨거나, 다시 보고 싶으신 분들은 참고를 하시기 바랍니다.

TechNet 기술 세미나_1.SQL Server 2008 진단 서비스 소개
TechNet 기술 세미나_2.SQL Server 2008 BI 구축 사례
TechNet 기술 세미나_3.SQL Server 2008 성능 튜닝 툴

TechNet 기술 세미나_4.SQL Server 2008 트러블슈팅 Case Study

Posted by Zasfe