안녕하세요, Scripting Guy! - 스크립트를 사용해 DSN을 만들고 삭제할 수 있나요?


새로운 TechNet 칼럼에 오신 것을 환영합니다. 이 칼럼에서는 Microsoft Scripting Guy가 시스템 관리 스크립팅과 관련하여 자주 물어보는 질문에 대한 답변을 드립니다. 시스템 관리 스크립팅에 대해 궁금한 내용이 있으십니까? 그렇다면scripter@microsoft.com으로 전자 메일을 보내십시오. 모든 질문을 다룰 수는 없지만 최선을 다해 답변을 드리겠습니다.

오늘의 질문: 스크립트를 사용해 DSN을 만들고 삭제할 수 있나요?


스크립트를 사용해 DSN을 만들고 삭제할 수 있나요?

Q 안녕하세요, Scripting Guy! ODBC DSN(Data Sources Name)을 빠르게 만든 후 제거할 수 있나요?

-- KC
A
안녕하세요, KC님. ODBC DSN을 만든 후 삭제할 수 있는지 문의하셨죠? 사실, 명확하게 그렇다고 말씀드릴 수는 없습니다. 하지만 다음과 같은 답변은 드릴 수 있습니다. 레지스트리를 수정하는 스크립트를 작성하는 경우에는 프로그래밍 방식으로 DSN을 만들고 삭제할 수 있습니다.

참고 DSN은 데이터베이스에 대한 전체 경로를 지정하지 않아도 간단히 DSN 이름을 참조하여 데이터베이스에 연결할 수 있는 방법입니다. 이 데이터베이스에 액세스하는 여러 스크립트를 사용할 수 있으면 이 작업은 더욱 간편하게 수행할 수 있습니다. 스크립트에 경로를 하드코드한 후 데이터베이스를 한 서버에서 다른 서버로 이동하는 경우에는 개별 및 모든 스크립트의 경로를 편집해야 합니다. 그러나 DSN을 사용하는 경우에는 스크립트를 편집할 필요가 없으며 대신 DSN을 수정하기만 하면 됩니다. 스크립트 개수에 따라 수행해야 할 변경 작업이 수백 번에서 단 한 번으로 줄어들 수 있습니다.

여기서는 SQL Server를 사용하는 DSN을 만드는 스크립트를 소개합니다. 이 스크립트가 과연 중요할까요? 그렇습니다. 이 스크립트를 이해하면 다른 ODBC 데이터베이스(Access, Oracle, FoxPro 등)를 사용하는 DSN도 만들 수 있습니다. 그러나 Oracle 데이터베이스에 액세스하기 위해 DSN을 만들 때 사용하는 레지스트리 키와 값은 SQL Server 데이터베이스에 액세스하기 위해 사용하는 것과 반드시 같지 않아도 됩니다. SQL Server를 사용하는 경우 이 스크립트를 복사한 후 데이터베이스, 서버 등의 이름을 변경하기만 하면 됩니다. 다른 데이터베이스를 사용하는 경우에는 직접 DSN을 만드는 것이 좋습니다. 그런 다음 자주 사용하는 레지스트리 편집기를 시작하고 다음 DSN을 찾습니다.
HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources

또한 다음 DSN도 찾으십시오.

HKLM\SOFTWARE\ODBC\ODBC.INI\Name You Gave the DSN

데이터베이스 종류에 필요한 레지스트리 키와 값을 확인한 후 이 정보를 스크립트에 삽입합니다. 작업 방법을 잘 모를 때는 1~2주만 기다려 주십시오. 다른 ODBC 데이터베이스용 샘플 스크립트를 스크립트 센터에 게시할 수 있도록 하겠습니다.

다음은 SQL Server용 DSN을 만드는 스크립트입니다.

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
 
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
strValueName = "Script Repository"
strValue = "SQL Server"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
 
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
objReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
strValueName = "Database"
strValue = "Script Center"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
 
strValueName = "Driver"
strValue = "C:\WINDOWS\System32\SQLSRV32.dll"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "Server"
strValue = "atl-sql-01"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "trusted_Connection"
strValue = "Yes"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue

스크립트가 조금 긴 편인데, 이는 만들어야 할 레지스트리 키와 값이 많기 때문입니다. 그러나 대부분의 경우 스크립트는 매우 간단합니다. 먼저 상수 HKEY_LOCAL_MACHINE을 &H80000002로 설정합니다. 이 값은 레지스트리의 HKLM 부분과 연결하는 데 필요합니다. 그런 다음 WMI 서비스 및 StdRegProv 클래스(root\default 네임스페이스에 있음)와 바인딩합니다.

이제 새 DSN에 붙인 이름 Script Repository를 사용해 새 레지스트리 값(HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\Script Repository)을 만듭니다. SQL Server가 연결하려는 데이터베이스 종류이기 때문에 이 값은 SQL Server로 설정됩니다.

이해가 되셨는지요? 새 레지스트리 키 HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\Script Repository(키 이름은 DSN 이름과 동일)를 만든 후에는 다음과 같은 레지스트리 값을 구성해야 합니다.

Database -- 연결하려는 실제 데이터베이스 이름. 이 예에서 데이터베이스의 이름은 ScriptCenter입니다.

Driver -- SQL Server ODBC 드라이브에 대한 경로. 이 예에서 이 경로는 C:\WINDOWS\System32\SQLSRV32.dll입니다.

Server -- 데이터베이스가 저장된 서버 이름. 이 경우, 서버 이름은 atl-sql-01입니다.

trusted_Connection -- 데이터베이스에 액세스할 때 로그온 자격 증명을 사용하도록 SQL Server에 알립니다. 이렇게 하면 사용자 이름과 암호를 제공하지 않아도 데이터베이스에 연결할 수 있습니다.

이제 스크립트를 실행하십시오. 그러면 완전하게 작동되는 DSN을 확인하실 수 있습니다.

DSN 작업이 끝난 후에는 이 DSN을 어떻게 제거할까요? 제거하는 방법도 간단합니다. 첫 번째 스크립트가 만든 레지스트리 키와 값을 삭제하면 됩니다. DSN Script Repository를 삭제하는 스크립트는 다음과 같습니다.

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
 
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
objReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
strValueName = "Script Repository"
objReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName

이 스크립트는 처음 만든 레지스트리 값(Script Repository)을 삭제한 후 만들어 놓은 레지스트리 키도 삭제합니다. 그러나 해당 키의 개별 레지스트리 값을 삭제할 필요는 없습니다. HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\Script Repository를 삭제하면 모든 값도 함께 삭제되기 때문입니다.


자세한 정보

자세한 내용은 안녕하세요, Scripting Guy! - Archive  를 참조하십시오.

페이지 맨 위로 페이지 맨 위로

최종수정일 : 2005년 6월 22일