SQL-DMO 소개
Microsoft SQL Server는 현재 인기있는 데이터베이스 관리 시스템입니다. SQL Server의 지속적인 개선 및 개발과 Microsoft 자체 Windows 시리즈 운영 체제와 완벽한 조합으로 Windows 플랫폼에서 더 나은 성능과 사용 편의성을 제공하므로 점점 더 가치가 있습니다. SQL-DMO의 전체 이름은 SQL 분산 관리 개체입니다. 이중 인터페이스가있는 COM 세트가 포함 된 컬렉션입니다. SQL-DMO를 통해 SQL Server를 작동하는 데이터베이스 엔진 및 복제 관리를 제어 할 수 있습니다. SQL-DMO는 일련의 COM이므로 VB, Delphi, VC, BCB, ASP 등을 포함하여 COM을 사용할 수있는 모든 개발 도구, Windows 플랫폼의 거의 모든 개발 도구에서 사용할 수 있습니다.
SQL-DMO 사용
데이터베이스를 관리하기 위해 SQL-DMO를 사용해야하는 이유는 무엇입니까? Enterprise Manager 및 T-SQL 스크립트를 사용하여 데이터베이스를 관리하는 것만으로는 충분하지 않습니까? SQL-DMO는 유연하고 사용자 정의 가능하며 효율적인 데이터베이스 관리 활동을 수행 할 수 있습니다. SQL-DMO는 SQL Server에 대한 관리 인터페이스를 제공하므로 프로그래밍을 통해 필요에 따라 관리 활동을 사용자 정의 할 수 있습니다. 예를 들어, 많은 SQL Server 인스턴스가있는 대규모 조직을 관리하는 경우. 이제 조직의 모든 SQL 서버 인스턴스에 사용자를 추가해야합니다 SQL-DMO 프로그래밍을 사용하여 통화를 구현하면 한 주기로 쉽고 효율적으로 완료 할 수 있습니다. 저자의 견해로는 더 중요한 것은 SQL-DMO를 사용하여 MSDE를 관리 할 수 있다는 것입니다. MS SQL Server는 비싸지 만 MSDE는 무료입니다. 중소 크기의 일부 응용 분야에서 MSDE로 충분합니다. 그러나 MSDE는 데이터베이스 엔진 만 제공하지만 시각적 관리 인터페이스를 제공하지 않으므로 MSDE의 데이터베이스를 정기적으로 관리하는 것은 불가능하여 MSDE의 적용 범위를 제한합니다. 현재 SQL-DMO를 사용하는 경우 자체 데이터베이스 관리 인터페이스를 제공하여 MSDE에서 데이터베이스의 특정 정기 관리를 수행 할 수 있습니다. 시간과 비용이 고려되지 않으면 Enterprise Manager와 유사한 관리 인터페이스를 만들 수 있습니다. 실제로, Enterprise Manager의 대부분의 기능은 SQL-DMO를 사용하여 구현됩니다. (SQL-NS가 사용됩니다 (SQL-NAMESPACE, COM 객체 컬렉션이기도하여 SQL Server의 객체 이름 공간에 액세스 할 수 있지만 SQL-NS 자체도 SQL-DMO에 구축됩니다).
SQL-DMO 호스트 및 구성
SQL-DMO의 호스트는 SQLDMO.DLL이며 X :/Program Files/Microsoft SQL Server/80/Tools/Binn에 위치한 SQLDMO.DLL입니다. 또한 다음 파일도 필요합니다. l
sqldmo.dll ( 기본 유형 라이브러리) l
sqldmo.rll ( 언어 리소스 파일) l
sqlsvc.dll ( 데이터베이스 관리 용 유형 라이브러리) l
sqlsvc.rll ( Language Resource File) l
sqlunirl .dll (유니 코드 리디렉션 레이어) l
sqlrsld.dll ( 리소스로드 용) l
odbc ( Odbc32.dll, sqlsrv32.dll, odbcbcp.dll 등) 는 다음에 통화 구조에 대한 설명이다 (그림 1).
| 우리의 응용 프로그램은 여기에서 SQL-DMO를 사용하여 객체를 만듭니다 |
그림 1 SQL-DMO 호출 구조
SQL-DMO 객체 트리
먼저 SQL-DMO의 거대하고 복잡한 객체 트리를 살펴 보겠습니다 (그림 3 참조) : SQLServer 객체는이 객체 트리의 중추 이며이 백본 아래에 3 개의 주요 지점이 있습니다 : L 데이터베이스 브랜치 및 일련의 객체 구현이 있습니다. IT에서는 SQLServer의 데이터베이스 아키텍처 및 유지 보수 작업. l Jobserver Branch, IT 아래의 일련의 객체는 SQL Server Agent (Agent) 서비스를 구현합니다. l 복제 브랜치, IT 아래의 일련의 객체는 SQL Server의 복제 서비스를 구현합니다. 언급해야 할 사항도 있습니다. l 객체 트리는 응용 프로그램 객체를 나열하지 않지만 실제로는 비교적 중요한 객체입니다. 모든 SQL-DMO 객체에는 응용 프로그램 개체를 가리키는 속성이 있습니다. 응용 프로그램 객체는 서버와 서버 그룹의 두 가지 수집 객체를 포함하는 전역 응용 프로그램을 나타냅니다. 그림 2 : 그림 2 Application Object L 객체 트리는 SQL-DMO의 구조만을 나타내며 Namelist 객체, ServerGroup 객체 등과 같은 모든 객체를 나열하지 않습니다. SQL-DMO 객체 트리는 복잡한 구조와 많은 객체를 소개하고 설명하는 것이 불가능합니다. 그림 3 SQL-DMO 객체 트리
델파이 캡슐화 된 SQL-DMO의 구현
다음은 Delphi를 사용하여 저자가 구현 한 SQL-DMO 캡슐화에 대한 구성 요소 TDBCTRL에 대한 설명입니다. 특정 프로젝트에서 무료 데이터베이스 엔진이 필요했기 때문에 마침내 MSDE를 선택했지만 MSDE에는 관리 인터페이스가 없으며 엔진 일뿐입니다. 따라서 MSDE에 간단하고 명확한 관리 인터페이스를 제공해야합니다. 엔터프라이즈 관리자만큼 많은 관리 기능을 제공 할 필요는 없으며 가장 일반적으로 사용되는 기능을 제공하면됩니다. 사용 편의성과 확장 성을 고려하여 구성 요소 형태로 제공하기로 결정했습니다. 구현 된 구성 요소는 SQL-DMO 용 포장 레이어를 제공하고, 일반적으로 사용되는 일부 기능을 캡슐화하고, 사용을 단순화합니다. 이 구성 요소를 컴파일하려면 SQL-DMO 유형 라이브러리를 소개하고 해당 설명 코드를 생성해야합니다. 이 코드에는 COM 객체에 대한 많은 Delphi의 정기적 인 사용 및 관용 표기법이 포함되어 있습니다. 나는 Delphi가 COM을 어떻게 사용하는지 논의하지 않을 것입니다. 독자들은 관련 서적을 참조 할 수 있습니다. 이 구성 요소에는 다음 속성이 포함되어 있습니다. 속성 호스트 : 문자열 읽기 fhost; // 호스트 이름, 즉 연결할 SQL Server 인스턴스 이름을 연결합니다 OGIN : 문자열 읽기 Flogin Write Flogin; 개인 데이터 구성원 : SQLServer를 저장합니다. 그것의 유형은 _SQLSERVR입니다. 생성자는 SQLServer 개체를 생성하기 위해 연결하는 것입니다. 소멸자는 또한 SQLServer 대상의 파괴를 완료하기위한 것입니다. 생성자 TDBCTRL.CREATE (AOWNER : TCLSERVER); 그 후, Delphi는 무대 뒤에서 COM 대상의 파괴를 완료합니다. 상속; 끝; 특정 SQL Server 인스턴스를 관리하고 작동하려면 먼저이 인스턴스에 연결해야합니다. 다음 ConnectToServer 기능은 SQL Server 인스턴스에 연결하는 방법의 기능을 구현합니다. 기능 tdbctrl.connecttoserver : boolean; loginsecure; nt 확인 모드인지, 로그인 및 비밀번호는 sqlserver.conne ct (fhost, fpwd); 결과 : eoleexception은 Showmessage를 시작합니다. 로그인 한 사용자 권한에 따라). 아래에 나열된 일부 방법에는 일부 기능이 표시됩니다. getTableList 메소드는 데이터베이스의 모든 테이블 이름을 얻고 tstringlist로 반환합니다. 기능 tdbctrl.getTabrelist (dbname; var tablelist : tstringlist) : var nowdb : _database; .databases.ITEM (dbname, sqlserver); // i : = 1 to nowdb.tables.count nowtable : = nowdb.tables.item (i, 0)을 기준으로 데이터베이스 개체를 가져옵니다 d (nowtable .name); 데이터베이스 (보기), 테이블 또는 뷰의 모든 필드 (열), 데이터베이스의 모든 데이터 파일 그룹 및 데이터 파일 (파일 그룹, DBFILE) 등의 모든보기 SQL-DMO. SQL-DMO 객체를 사용하면 다음 기본 단계를 따를 수 있습니다. 상단 계층 객체를 통해 객체 또는 수집 객체를 얻은 다음 사용하기 전에 수집 객체에서 개체를 사용하거나 객체를 얻습니다. 일반적으로 수집 객체 인 경우 항목 메소드가 있으며 색인 또는 이름을 기반으로 컬렉션 멤버 객체를 반환 할 수 있습니다. 인덱스는 0 대신 1에서 시작한다는 점에 유의해야합니다. 위의 방법은 모두 데이터베이스에서 정보를 얻는 방법을 보여줍니다.이 방법의 기능은 데이터베이스를 파일로 백업하는 것입니다. 이 방법은 데이터베이스를 유지 관리하는 방법을 보여줍니다. 함수 tdbctrl.backupdb (dbname, backupfile : string) : boolean; // 백업 파일 이름 var dmoback : _backup; 장치 객체를 설정하십시오. 백업을 시도하십시오. = dbname+'backupdrv 여기에는 값이 없으며, 백업 세트가 이미 존재하기 때문에 예외가 추가 될 수 있습니다. = dmoback.sqlbackup nil; e nd; end; 또한, 나는 처음에 언급 된 응용 프로그램 객체를 사용하는 방법을 설명하고 싶습니다. 이 방법은 사용 가능한 모든 (즉, 도달 가능하고 연결 가능한) SQL Server 인스턴스의 이름을 얻는 것입니다. 함수 tdbctrl.getServerlist (var serverlist : tstringlist) : var app : // namelist; NLIST : app.listavailables Qlservers; 객체 끝; 끝; 물론, TDBCTRL 구성 요소에 대한 많은 방법이 있지만, 코드 구현은 백업에 해당하는 복구 방법과 연결에 해당하는 연결이 끊어지지 않습니다 . 독자는 샘플 코드와 SQL Server의 온라인 책을 참조하여 한 예에서 배우고 원하는 기능을 구현할 수 있습니다. 이 구성 요소에 대한 모든 코드가 필요한 경우 저에게 요청할 수 있습니다.
다른 지침
SQL-DMO의 버전 2000은 SQL Server7.0 및 SQL Server 2000과 완전히 호환됩니다. 그러나 SQL Server 2000의 새로운 기능을 지원하기 위해 80 개 이상의 새로운 인터페이스가 제공됩니다. 이 새로운 인터페이스는 모두 "2"로 끝납니다. "2"는 원래 SQL Server 7.0의 인터페이스의 슈퍼 세트입니다. 즉, SQL Server 2000의 새로운 기능을 사용하려면 마지막에 "2"와의 인터페이스를 사용해야합니다.
서지
l Microsoft MSDNL Microsoft SQL Server Online Bookl "Delphi Com Intepth Programming"(US) Eric Harmon Machinery Industry Press