소개
고객들의 요구 사항이 많아지고 엔터프라이즈 규모의 고성능 데이터베이스에 대한 요구가 커짐에 따라, 파일-서버 환경의 Microsoft® Access Jet 엔진을 클라이언트/서버 환경의 Microsoft SQL Server로 마이그레이션하는 경우가 종종 있습니다. Microsoft Office 2000에 제공되는 Access 2000 업사이징 마법사는 Access 테이블과 쿼리를 SQL Server 7.0으로 마이그레이션합니다. 이전 버전 Access를 사용하는 경우, Access 2000으로 업그레이드한 다음 업사이징 마법사를 사용하여 응용 프로그램을 SQL Server로 마이그레이션할 수 있습니다.
Access 2000 및 업사이징 마법사를 사용하여 마이그레이션하지 않으려는 경우 이 문서의 지침을 따라 Access 응용 프로그램을 SQL Server로 마이그레이션할 수 있습니다. Access 응용 프로그램을 마이그레이션하려면 Access 데이터를 SQL Server 7.0으로 옮긴 다음 나중에 실행할 수 있도록 Access 쿼리를 데이터베이스나 SQL 파일로 마이그레이션해야 합니다. 최종적으로는 응용 프로그램을 마이그레이션합니다.
마이그레이션에 사용되는 SQL Server 도구
SQL Server의 여러 가지 도구를 사용하여 Access 데이터와 응용 프로그램을 마이그레이션할 수 있습니다.
SQL Server 엔터프라이즈 관리자는 SQL Server와 SQL Server 개체를 엔터프라이즈 차원에서 구성하고 관리할 수 있도록 합니다. SQL Server 엔터프라이즈 관리자는 강력한 일정 설정 엔진, 관리 경고 기능, 기본 제공 복제 관리 인터페이스를 제공합니다. SQL Server 엔터프라이즈 관리자를 사용하여 아래 작업도 수행할 수 있습니다.
- 로그인 및 사용자 사용 권한 관리
- 스크립트 만들기
- SQL Server 개체의 백업 관리
- 데이터베이스 및 트랜잭션 로그 백업
- 테이블, 뷰, 저장 프로시저, 트리거, 인덱스, 규칙, 기본값, 사용자 정의 데이터 형식 관리
- 전체 텍스트 인덱스, 데이터베이스 다이어그램, 데이터베이스 유지 관리 계획 작성
- 데이터 가져오기 및 내보내기
- 데이터 변환
- 다양한 웹 관리 작업 수행
기본적으로, SQL Server 설치 프로그램이 Microsoft Windows NT® 운영 체제 실행 컴퓨터에 서버 소프트웨어의 일부로 그리고 Windows NT 및 Microsoft Windows 95® 운영 체제 실행 컴퓨터에 클라이언트 소프트웨어의 일부로 SQL Server 엔터프라이즈 관리자를 설치합니다. 개발자들은 아마 SQL Server 엔터프라이즈 관리자 인터페이스에서 데이터 변환 서비스(DTS)를 실행할 것입니다.
DTS를 사용하면 Microsoft Excel 스프레드시트 같은 OLE DB 기반 아키텍처를 사용하는 여러 이종 원본 간에 데이터를 가져오고 내보낼 수 있으며 SQL Server 7.0을 실행하는 여러 컴퓨터 간에 데이터베이스와 데이터베이스 개체(예: 인덱스 및 저장 프로시저)를 전송할 수 있습니다. 또한 DTS를 사용하면 OLTP(온라인 트랜잭션 처리) 시스템에서 데이터 웨어하우스와 데이터 마트를 더 쉽게 구축할 수 있도록 데이터를 변환할 수도 있습니다.
DTS 가져오기 마법사와 DTS 내보내기 마법사를 사용하면 OLE DB와 ODBC를 사용하여 이종 데이터의 가져오기, 내보내기, 유효성 확인 및 변환을 수행하는 DTS 패키지를 대화형으로 만들 수 있습니다. 이 마법사들은 관계형 데이터베이스 간에 스키마와 데이터를 복사할 수 있도록 합니다.
SQL Server 쿼리 분석기는 그래픽 쿼리 도구로서 그래픽을 통해 쿼리 계획을 분석하고, 여러 쿼리를 동시에 실행하고, 데이터를 보고, 인덱스 권장 구성을 가져올 수 있도록 합니다. SQL Server 쿼리 분석기는 SHOWPLAN 옵션을 제공합니다. 이 옵션은 SQL Server 쿼리 최적화 프로그램이 선택한 데이터 검색 방법을 보고하는 데 사용됩니다.
SQL Server 프로파일러는 연속적인 서버 동작을 실시간으로 캡처하여 기록합니다. SQL Server 프로파일러를 사용하면 SQL Server를 통해 만들어지는 이벤트를 모니터하고 사용자 정의 기준에 따라 이벤트를 필터링하고 추적 결과를 화면, 파일 또는 테이블에 출력할 수 있습니다. 또한 이전에 캡처된 추적 내용을 재연할 수도 있습니다. 이 도구를 통해 응용 프로그램 개발자들은 응용 프로그램 성능을 떨어뜨릴 수 있는 트랜잭션을 확인할 수 있습니다. 이 도구는 파일 기반 아키텍처에서 클라이언트/서버 아키텍처로 응용 프로그램을 마이그레이션할 때 유용할 수 있습니다. 마지막 단계에서 새로운 클라이언트/서버 환경에 맞게 응용 프로그램이 최적화되기 때문입니다.
테이블 및 데이터 마이그레이션
DTS 가져오기 마법사를 사용하여 Access 데이터를 SQL Server로 옮길 때 아래 단계를 사용할 수 있습니다.
- SQL Server 엔터프라이즈 관리자의 Tools 메뉴에서 Data Transformation Services를 가리킨 다음 Import Data를 누릅니다.
- Choose a Data Source 대화 상자에서 Microsoft Access as the Source를 선택한 다음 .mdb 파일 확장명을 가진 .mdb 데이터베이스의 파일 이름을 입력하거나 그 파일을 찾습니다.
- Choose a Destination 대화 상자에서 Microsoft OLE DB Provider for SQL Server를 선택한 다음 데이터베이스 서버를 선택하고 필요한 인증 모드를 누릅니다.
- Specify Table Copy or Query 대화 상자에서 Copy tables를 누릅니다.
- Select Source Tables 대화 상자에서 Select All을 누릅니다.
Microsoft Access 쿼리 마이그레이션
기존의 Access 쿼리를 아래와 같은 SQL Server 형식 가운데 하나로 마이그레이션해야 합니다.
- Transact-SQL스크립트
Transact-SQL 문은 일반적으로 데이터베이스 프로그램에서 호출되지만, SQL Server 7.0에 포함된 SQL Server 쿼리 분석기를 사용하면 Transact-SQL 문을 데이터베이스에 대해 직접 실행할 수 있습니다. SQL Server 쿼리 분석기는 개발자들이 개발 데이터베이스에 대해 Transact-SQL 문을 테스트하거나 쿼리, 데이터 처리(INSERT, UPDATE, DELETE) 또는 데이터 정의(CREATE TABLE)를 수행하는 Transact-SQL 문을 실행할 수 있도록 합니다.
- 저장프로시저
개발자들은 Access 쿼리(SELECT, INSERT, UPDATE, DELETE)에서 나온 대부분의 Transact-SQL 문을 저장 프로시저로 마이그레이션할 수 있습니다. Transact-SQL로 작성된 저장 프로시저를 사용하면 데이터 액세스를 캡슐화하고 표준화할 수 있으며 이러한 프로시저는 실제로 데이터베이스 안에 저장됩니다. 저장 프로시저는 매개 변수를 사용하거나 사용하지 않고 실행할 수 있으며 데이터베이스 프로그램에서 호출하거나 SQL Server 쿼리 분석기에서 수동으로 호출합니다.
- 뷰
뷰는 하나 이상의 테이블에서 특정 행과 열을 드러내는 가상 테이블로 사용됩니다. 뷰를 사용하면 쿼리의 바탕이 되는 복잡한 조인을 직접 구현하지 않고도 쿼리를 만들 수 있습니다. 뷰는 매개 변수 사용을 지원하지 않습니다. 테이블을 둘 이상 조인하는 뷰는 INSERT, UPDATE 또는 DELETE 문을 사용하여 수정할 수 없습니다. 뷰는 Transact-SQL 문에서 호출되며 SQL Server 쿼리 분석기에서 실행되는 *.scripts에도 사용될 수 있습니다. SQL Server 뷰 및 SQL-92 표준은 뷰에 ORDER BY 절을 지원하지 않습니다.
Transact-SQL, 저장 프로시저 또는 뷰에 대한 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.
Access 쿼리 유형
| SQL Server 마이그레이션 옵션 및 설명
|
|---|
| SELECT | Transact-SQL 파일, 저장 프로시저 또는 뷰에 SELECT 문을 저장할 수 있습니다. 데이터베이스 응용 프로그램 개발과 데이터베이스 설계의 실제 구현을 분리하려면 저장 프로시저를 만드는 것이 가장 좋습니다. 저장 프로시저는 한 위치에 만들어져 그 응용 프로그램에서 호출됩니다. 원본으로 사용하는 데이터베이스가 변경될 때 그 변경 사항을 반영하도록 저장 프로시저를 주의 깊게 수정하면 저장 프로시저에 대한 호출이 "중단"되지 않습니다. |
| CROSSTAB | 크로스탭은 주로 요약 보고서에 사용됩니다. Access CROSSTAB은 SQL 스크립트, 저장 프로시저 또는 뷰에 Transact-SQL SELECT 문으로 구현할 수 있습니다. 쿼리가 실행될 때마다 데이터 조인이 다시 실행되어 항상 최신 데이터가 사용되도록 합니다. 응용 프로그램에 따라 크로스탭의 데이터를 임시 테이블로 저장하는 것이 적절할 수도 있습니다. 다음 행의 MAKE TABLE을 참조하십시오. 임시 테이블은 더 적은 리소스를 요구하지만 임시 테이블이 만들어질 당시의 데이터 스냅샷만 제공합니다. |
| MAKE TABLE | Access MAKE TABLE은 Transact-SQL 스크립트나 저장 프로시저에 Transact-SQL CREATE TABLE 문으로 구현할 수 있습니다. 구문은 아래와 같습니다. SELECT [ ALL | DISTINCT ] [ {TOP integer | TOP integer PERCENT} [ WITH TIES] ] <선택_목록> [ INTO새_테이블 ] [ FROM {<테이블_원본>} [,Un] ] [ WHERE <검색_조건> ] [ GROUP BY [ALL] 식_별로_묶기 [,Un] [ WITH { CUBE | ROLLUP } ] CREATE TABLE mytable (low int, high int) |
| UPDATE | Transact-SQL 스크립트에 UPDATE 문을 저장할 수는 있지만 저장 프로시저를 만들어 UPDATE 문을 구현하는 것이 좋습니다. |
| APPEND | Transact-SQL 스크립트에 APPEND 문을 저장할 수는 있지만 저장 프로시저를 만들어 APPEND 문을 구현하는 것이 좋습니다. |
| DELETE | Transact-SQL 스크립트에 DELETE 문을 저장할 수는 있지만 저장 프로시저를 만들어 DELETE 문을 구현하는 것이 좋습니다. |
각 Access 쿼리를 아래 문 집합에 포함해야 합니다.
CREATE PROCEDURE <NAME_HERE> AS
< Microsoft Access의 SELECT, UPDATE, DELETE, INSERT, CREATE TABLE 문 >
GO
CREATE VIEW <NAME_HERE> AS
<Microsoft Access 쿼리 배치(매개 변수 없이 SELECT 문만)>
GO각 Access 쿼리에 대해 아래 지침을 따릅니다.
- Access를 연 다음 SQL Server를 열고 SQL Server 쿼리 분석기를 엽니다.
- Access의 데이터베이스 창에서 쿼리 탭을 누른 다음 디자인을 누릅니다.
- 보기 메뉴에서 SQL을 누릅니다.
- 전체 쿼리를 SQL Server 쿼리 분석기에 붙여넣습니다.
- 구문을 테스트하고 나중에 사용할 수 있도록 Transact-SQL 문을 저장하거나 데이터베이스에서 문을 실행합니다. 원하면 스크립트에 Transact-SQL을 저장할 수도 있습니다.
대부분의 Access 쿼리는 저장 프로시저 및 뷰로 변환해야 합니다. 그렇지만 응용 프로그램 개발자가 자주 실행하지 않는 문들은 .sql로 끝나는 텍스트 파일인 Transact-SQL 스크립트로 저장할 수 있습니다. 이러한 파일은 SQL Server 쿼리 분석기 안에서 실행할 수 있습니다.
일부 Access 쿼리를 .sql 파일로 변환하려는 경우 Transact-SQL 문을 그 사용 형태에 따라 여러 개의 스크립트로 분리해 보십시오. 예를 들어, 같은 빈도로 실행해야 하는 Transact-SQL 문들을 하나의 스크립트로 그룹화할 수 있습니다. 그리고 특정 조건에서만 실행되는 모든 Transact-SQL 문들을 또 다른 스크립트로 그룹화할 수 있습니다. 또한 특정 순서대로 실행해야 하는 Transact-SQL 문들을 별도의 스크립트로 그룹화할 수 있습니다.
Access에서 Transact-SQL 파일로 문을 마이그레이션하려면
- 문을 SQL Server 쿼리 분석기로 복사합니다.
- 파랑 확인 표시 아이콘을 사용하여 문을 분석합니다.
- 필요하면 문을 실행합니다.
MAKE TABLE Access 쿼리를 사용하는 개발자들은 SQL Server에서 몇 가지 옵션을 사용할 수 있으며 아래 중 하나를 만들 수 있습니다.
- 뷰
뷰는 최신 정보를 제공하는 동적 가상 임시 테이블과 같은 효과를 제공합니다. 뷰는 쿼리가 실행될 때마다 데이터 테이블의 재결합을 요구하기 때문에 많은 I/O가 필요합니다.
- 임시테이블
임시 테이블은 연결된 사용자의 세션에 대한 데이터 스냅샷을 만듭니다. 개발자들은 임시 로컬 테이블 및 글로벌 테이블을 만들 수 있습니다. 임시 로컬 테이블은 현재 세션에서만 볼 수 있고 임시 글로벌 테이블은 모든 세션에서 볼 수 있습니다. 임시 로컬 테이블 이름 앞에는 단일 번호 기호(#테이블_이름)를 포함하고 임시 글로벌 테이블 이름 앞에는 이중 번호 기호(##테이블_이름)를 포함해야 합니다. 일반적으로 여러 테이블을 동적으로 조인하여 결과 집합을 구하지 않고 한 테이블만 사용하기 때문에 임시 테이블에 대한 쿼리는 빠르게 실행됩니다.
임시 테이블에 대한 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.
SQL Server 7.0의 데이터 변환 서비스(DTS)를 사용하면 패키지를 만들어서 임시 테이블 작성을 표준화하고 자동화하고 일정을 설정할 수 있습니다.
예를 들어, Access 2.0 Northwind 예제 데이터베이스를 마이그레이션하면, 분기별 데이터 보고용으로 만들어진 크로스탭은 주기적으로 임시 테이블을 만드는 데이터 변환이 되거나 뷰가 됩니다. DTS에 대한 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.
추가적인 설계 고려 사항
다음은 Access 응용 프로그램을 SQL Server로 마이그레이션할 때 고려해야 할 몇 가지 문제입니다.
매개 변수가 있는 SQL Server 저장 프로시저에는 Access 쿼리와는 다른 구문이 필요합니다. 아래 예제를 참조하십시오.
Access 2.0:
쿼리 이름: Employee Sales By Country, in NWIND.mdb:
PARAMETERS [시작일] DateTime, [종료일] DateTime;
SELECT Orders.[주문 ID], [성] & ", " & [이름] AS Salesperson, Employees.Country, Orders.[발송일], [주문 소계].Subtotal AS [매출액]
FROM Employees INNER JOIN (Orders INNER JOIN [주문 소계] ON Orders.[주문 ID] = [주문 소계].[주문 ID]) ON Employees.[직원 ID] = Orders.[직원 ID]
WHERE (((Orders.[발송일]) Between [시작일] And [종료일]))
ORDER BY [성] & ", " & [이름], Employees.Country, Orders.[발송일];SQL Server 7.0: CREATE PROCEDURE EMP_SALES_BY_COUNTRY
@BeginningDate datetime,
@EndingDate datetime
AS
SELECT Orders.[주문 ID], [성] + ", " + [이름] AS Salesperson, Employees.Country,
Orders.[발송일], [주문 소계].Subtotal AS [매출액]
FROM Employees INNER JOIN (Orders INNER JOIN [주문 소계] ON Orders.[주문 ID] = [주문 소계].[주문 ID]) ON Employees.[직원 ID] = Orders.[직원 ID]
WHERE (((Orders.[발송일]) Between @BeginningDate And @EndingDate))
ORDER BY [성] + ", " + [이름], Employees.Country, Orders.[발송일]
GO자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.
일부 Access 쿼리는 중첩 방식으로 다른 쿼리 위에 만들어집니다. Access의 중첩 쿼리는 SQL Server의 중첩 뷰가 됩니다. ORDER BY 절은 뷰 정의의 일부가 될 수 없지만 VIEW를 쿼리하는 SELECT 문에 첨부됩니다. 중첩된 Access 쿼리가 있는 경우 뷰를 여러 개 만든 다음, 뷰에 대해 SELECT 연산을 수행하고 SELECT 문에 ORDER BY 절을 첨부하는 저장 프로시저를 만듭니다.
예를 들어, 아래와 같은 Access 쿼리는
SELECT *
FROM STUDENTS
WHERE COUNTRY = "USA"
ORDER BY LAST_NAME아래와 같은 SQL Server 뷰 및 저장 프로시저가 됩니다.
CREATE VIEW US_STUDENTS AS
SELECT * FROM STUDENTS
WHERE COUNTRY = "USA"
CREATE PROCEDURE US_STUDENTS_ORDER AS
SELECT * FROM US_STUDENTS ORDER BY LAST NAMESQL Server 쿼리 분석기에서 Query 메뉴의 Parse 명령을 사용하여 뷰나 저장 프로시저가 SQL Server에서 동작하는지 여부를 확인할 수 있습니다. 아래 예제에서 Access 쿼리는 "DISTINCTROW"라는 단어를 사용합니다. SQL Server는 Transact-SQL 명령 DISTINCT를 사용하여 같은 작업을 수행합니다. 개발자들은 Parse 명령을 사용하여 Access 쿼리의 구문 문제를 격리하고 수정할 수 있습니다.
응용 프로그램 연결
Office 2000 이전의 많은 Access 응용 프로그램은 Microsoft Visual Basic® for Applications 또는 Visual Basic for Applications Access 사용자 인터페이스를 사용하여 작성되었습니다.
- Visual Basic for Applications를 개발 환경으로 사용하는 응용 프로그램은 Jet ODBC 드라이버를 사용하여 SQL Server에 액세스할 수 있습니다.
- Access 사용자 인터페이스에서 볼 수 있는 폼과 보고서를 사용하는 응용 프로그램은 연결된 테이블을 사용하여 SQL Server에 액세스할 수 있습니다. 응용 프로그램이 연결된 테이블을 사용하게 될 경우 성능 향상을 위해 모든 Access 테이블을 SQL Server로 마이그레이션하십시오. 연결된 테이블을 사용하여 Access(Jet)와 SQL Server에 대한 혼합 쿼리를 만드는 데는 아주 많은 리소스가 소모될 수 있습니다.
파일-서버 응용 프로그램을 클라이언트/서버 모델로 마이그레이션할 때는 맨 먼저 응용 프로그램이 새 데이터베이스에서 적절히 동작하는지 확인해야 합니다. 그런 다음 아래와 같은 방법으로 클라이언트/서버 환경에 맞게 응용 프로그램을 최적화해야 합니다.
- 서버로 보내지는 Transact-SQL 문 모니터링
SQL Server 프로파일러는 Transact-SQL 문이 데이터베이스로 어떻게 보내지는지 모니터하는 데 유용한 도구입니다. 수정되지 않은 Access 응용 프로그램을 SQL Server에서 실행하면, Jet/ODBC 드라이버를 통해 데이터 액세스 개체(DAO)를 사용하여 최적화되지 않은 Transact-SQL을 데이터베이스에 보내는 것과 같은 결과가 됩니다. 예를 들어, Jet/ODBC 드라이버를 사용하여 1,000개의 행을 삭제하는 DELETE 문은 데이터베이스에 1,000개의 호출을 보내기 때문에 프로덕션 데이터베이스의 성능을 떨어뜨립니다. 이런 경우, SQL Server 프로파일러는 1,000개의 DELETE 문을 표시하며, 개발자들은 SQL Server용 Microsoft OLE DB 공급자를 통해 Microsoft ADO(ActiveX® Data Objects)를 사용하도록 응용 프로그램을 수정할 수 있으므로 응용 프로그램 효율성이 높아집니다.
- 효율적인 인덱스 구현
데이터베이스로 보내지는 Transact-SQL 문이 효율적인지 확인한 후 인덱스를 더욱 효율적으로 사용하여 이러한 문을 세부적으로 조정할 수 있습니다. 인덱스 튜닝 마법사는 병목 상태를 찾을 수 있도록 하며 권장안을 제시합니다. Transact-SQL 문은 수정되지만 올바른 인덱스 사용을 통해 그 성능은 향상됩니다.
클라이언트/서버 성능 최적화에 대한 자세한 내용은 이 문서의 부록 B를 참조하십시오.
결론
Access 2000 데이터베이스를 SQL Server로 마이그레이션하려면 업사이징 마법사를 사용하기만 하면 됩니다. 마법사를 사용하지 않고 업그레이드하려면 데이터를 마이그레이션하고 쿼리를 적절한 형태(SQL Server 스크립트, 뷰, 저장 프로시저)로 변환해야 합니다. 어떤 방법을 사용하든, 클라이언트/서버 환경에서 효과적으로 실행되도록 응용 프로그램을 조정하거나 마이그레이션해야 합니다.
SQL Server 7.0은 Access 데이터베이스를 마이그레이션하는 데 필요한 도구를 제공합니다.
부록 A: Microsoft SQL Server와 Microsoft Access 쿼리 구문의 차이점
Access
| SQL Server
|
|---|
| 쿼리에 ORDER BY 절 지원함 | 뷰에 ORDER BY 지원하지 않음 |
| DISTINCTROW | DISTINCT |
| "&"를 사용하여 문자열 연결 | "+"를 사용하여 문자열 연결 |
지원하는 절/연산자: SELECT SELECT TOP N INTO FROM WHERE GROUP BY HAVING UNION (ALL) ORDER BY WITH OWNERACCESS
지원하지 않는 절/연산자: COMPUTE, FOR BROWSE, OPTION | 지원하는 절/연산자: SELECT SELECT TOP N INTO FROM WHERE GROUP BY HAVING UNION (ALL) ORDER BY COMPUTE FOR BROWSE OPTION 지원하지 않는 절/연산자: WITH OWNERACCESS |
집계 함수: AVG COUNT(column) COUNT(*) MIN MAX FIRST LAST STDEV, STDEVP SUM VAR, VARP | 집계 함수: AVG([ALL | DISTINCT] 식) COUNT([ALL | DISTINCT] 식) COUNT(*) GROUPING (열_이름) MAX(식) MIN(식) STDEV, STDEVP SUM([ALL | DISTINCT] 식) VAR, VARP 지원하지 않는 집계 함수: FIRST, LAST |
TRANSFORM (SELECT 문) PIVOT | SELECT 문의 WITH ROLLUP, WITH CUBE |
MAKE TABLE, ALTER TABLE 지원하는 절: CONSTRAINT ADD COLUMN DROP COLUMN DROP INDEX 독립형 문인 DROP INDEX도 지원함 | CREATE TABLE, ALTER TABLE 지원하는 절: CONSTRAINT ADD COLUMN DROP COLUMN
독립형 문: DROP INDEX |
부록 B: 클라이언트/서버 성능 최적화에 관한 기술 자료 문서
ACC: 클라이언트/서버 성능 최적화
마지막으로 수정한 날짜: 1998년 2월 4일
문서 ID: Q128808
이 문서의 정보는 Microsoft Access 버전 2.0, 7.0, 97에 적용됩니다.
고급: 코딩, 상호 운용성 및 다중 사용자에 관한 전문 기술이 필요합니다.
Microsoft Access에 개방형 데이터베이스 연결(ODBC) 데이터 원본을 사용할 때 성능을 최적화하려면 이 문서에 정리된 팁을 참고할 수 있습니다.
이 문서는 클라이언트/서버 환경 및 아키텍처에 익숙한 사용자를 대상으로 합니다.
클라이언트/서버 응용 프로그램을 사용하여 서버 데이터에 액세스하려면 아래 방법 중 하나 이상을 사용할 수 있습니다.
첨부 테이블 및 뷰 - SQL 문을 서버로 직접 보내기 위한 SQL 창구 쿼리
첨부 테이블 및 뷰 - 서버 데이터를 처리하는 가장 효율적인 방법은 서버의 SQL 테이블과 뷰를 첨부하는 것입니다. Microsoft Access는 첨부 테이블의 필드 및 인덱스 정보를 저장합니다. 따라서 테이블을 열 때 성능이 향상됩니다. 서버에서 필드나 인덱스를 변경하면 원격 테이블을 다시 첨부해야 한다는 데 유의하십시오.
SQL 창구 쿼리 사용
많은 응용 프로그램에서 원격 테이블을 기반으로 하는 Microsoft Access 쿼리와 SQL 창구 쿼리 모두를 사용할 수 있습니다. 창구 쿼리는 아래와 같은 이점을 제공합니다.
- Microsoft Access가 창구 쿼리를 컴파일하지 않습니다. Access는 쿼리를 ODBC 서버로 직접 보내 응용 프로그램 속도를 향상시킵니다.
- Microsoft Access가 개발자가 입력한 방식대로 서버에 창구 쿼리를 보냅니다. 따라서 서버에서 더욱 많은 작업이 이뤄지며 네트워크를 통해 교환되는 데이터는 적습니다.
ODBC 첨부 테이블을 사용하여 창구 쿼리를 기반으로 폼, 보고서 및 Microsoft Access 쿼리를 만들 수 있습니다.
- 코드로 대체할 수 없는 저장 프로시저 및 서버 기반 INTRINSIC 함수 같은 SQL Server 고유의 기능을 사용할 수 있습니다.
- 특히 영향받는 레코드가 많을 때는 첨부된 원격 테이블을 기반으로 하는 실행 쿼리보다 업데이트, 삭제, 첨부 같은 창구 실행 쿼리가 훨씬 빠릅니다.
창구 쿼리에는 아래와 같은 단점이 있습니다.
- SQL 창구 쿼리는 항상 업데이트할 수 없는 스냅샷을 반환합니다. Microsoft Access 쿼리는 대개 다른 사용자들의 변경 사항을 반영하고 업데이트 가능한 다이너셋을 반환합니다.
- 개발자들이 서버에 필요한 구문을 사용하여 SQL 창구 쿼리 창에 명령을 직접 입력합니다. 그래픽 QBE(Query By Example) 모눈을 사용할 수 없습니다.
- 창구 쿼리에 매개 변수를 사용하려면 코드에서 쿼리를 실행하고 쿼리의 SQL 속성을 수정해야 합니다. SQL 속성을 수정하는 방법에 관한 예제를 보려면 19장 "Microsoft Access 97을 사용하여 응용 프로그램 구축"에서 550-551페이지의 "클라이언트/서버 응용 프로그램 개발"을 참조하십시오.
서버에 데이터를 요청하면 처리하는 데 시간이 듭니다. 따라서 성능을 최적화하려면 필요한 레코드와 필드만 요청해야 합니다.
사용하는 입력란, 콤보 상자, 목록 상자 및 하위 폼 같은 바운드 컨트롤의 수를 줄이십시오. 폼이 열리면 이러한 각 컨트롤은 서버로 쿼리를 보낼 것을 요구합니다.
첨부된 ODBC 테이블에 Memo 또는 OLE 개체 필드가 있으면, 사용자들이 보거나 숨길 수 있도록 필드의 Visible 속성을 No로 설정할 수 있으며 Visible 속성을 Yes로 설정하는 전환 단추를 추가할 수 있습니다.
일부 첨부 테이블(예: 50개 주의 이름과 약어가 포함된 테이블)은 자주 변경되지 않습니다. 이러한 테이블의 로컬 복사본을 사용하면 폼 로딩 속도를 높이고 서버 로드를 줄일 수 있습니다. 또한 로컬 복사본을 서버에 있는 최신 데이터로 업데이트하는 방법도 제공할 수 있습니다.
서버에 적절한 인덱스를 추가한 후 쿼리를 최적화하기 위해 사용하는 주된 방법은 서버에서 작업이 수행되는지 확인하는 것입니다. Microsoft Access 고유의 기능이나 사용자 정의 기능 등 서버에서 지원하지 않는 기능은 피해야 합니다. 로컬로 처리해야 하는 작업에 대한 자세한 내용은 "Microsoft Jet 데이터베이스 엔진 ODBC 연결" 백서를 참조하십시오. 이 백서에 대한 자세한 내용은 이 문서의 뒷부분에 나오는 "Microsoft Jet 데이터베이스 엔진 ODBC 연결 백서" 절을 참조하십시오.
서버로 보내지는 Select 문을 보려면 TraceSQLMode 설정을 구성할 수 있습니다. Microsoft Access 7.0 및 97에서는 레지스트리를 편집하여 TraceSQLMode 옵션을 추가해야 합니다.
레지스트리를 편집하여 ODBC 설정을 변경하는 데 대한 자세한 내용은 Microsoft Knowledge Base의 아래 문서를 참조하십시오.
문서 ID: Q139044
제목: ACC95: 레지스트리에 이전의 MSACC20.INI ODBC 구역을 추가하는 방법
Microsoft Access 97에서의 TraceSQLMode 설정에 대한 자세한 내용은 Microsoft Access 97 도움말 항목에서 찾기 옵션을 사용하여 "TraceSQLMode"를 검색해 보십시오.
Microsoft Access 2.0에서의 TraceSQLMode 설정에 대한 자세한 내용은 Microsoft Access 도움말 메뉴에서 "MSACC20.INI"를 검색한 다음 "MSACC20.INI 설정 사용자 정의"를 검색해 보십시오.
TryJetAuth 설정은 Microsoft Access가 먼저 Microsoft Access 로그인 ID와 암호를 사용하여 서버로의 로그온을 시도해야 하는지 여부를 지정합니다. 기본적으로, Microsoft Access 로그인 ID는 "admin"이며 암호는 지정되지 않습니다. 이 시도가 실패하면 Microsoft Access가 사용자에게 로그인 ID와 암호를 요구합니다. ODBC 서버와 같은 로그인 ID 및 암호를 사용하도록 Microsoft Access를 설정하지 않았다면, Windows 레지스트리의 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Access\Jet\3.5\Engines\ODBC 키에 "TryJetAuth=0"이라는 행을 추가하십시오. 이렇게 하면 Microsoft Access가 잘못된 ID로 로그온하지 않습니다.
참고 Microsoft Access 2.0에서는 MSACC20.INI 파일에 "TryJetAuth=0" 행을 추가합니다.
Timestamp 필드를 지원하는 Microsoft SQL Server 같은 서버에서는 이 필드를 통해 레코드 업데이트가 더욱 효율적으로 처리됩니다. Timestamp 필드는 서버에서 유지하며 레코드가 업데이트될 때마다 업데이트됩니다. Timestamp 필드가 있는 경우, Microsoft Access는 고유 인덱스와 timestamp 필드만 검사해도 서버에서 레코드가 마지막으로 검색된 후 변경이 있었는지 여부를 확인할 수 있습니다. 그렇지 않은 경우 Microsoft Access는 그 레코드의 모든 필드를 검사해야 합니다. 첨부 테이블에 timestamp 필드를 추가하는 경우 Microsoft Access에 새 필드를 알리기 위해 테이블을 다시 첨부해야 합니다.
Access Basic에서 첨부 테이블에 레코드를 삽입하거나 업데이트할 때 트랜잭션을 사용하면 성능이 향상될 수 있습니다. 트랜잭션은 Jet 데이터베이스 엔진이 여러 업데이트를 모아 한번에 쓸 수 있도록 합니다. Microsoft SQL Server에서는 트랜잭션이 잠금을 만들고 이 잠금 때문에 다른 사용자들이 그 트랜잭션의 영향을 받는 데이터를 읽지 못하기 때문에 트랜잭션을 짧게 유지해야 합니다. Visual Basic 개발 시스템을 사용하면 트랜잭션을 중첩시킬 수 있지만 대부분의 서버는 중첩 트랜잭션을 지원하지 않습니다. Microsoft Access는 첫째 수준 트랜잭션만 서버로 보냅니다.
CacheSize 및 CacheStart 속성을 설정하면 다이너셋 형식의 Recordset 개체에 포함된 데이터의 전부 또는 일부를 로컬 메모리에 저장할 수 있습니다.
캐시 크기는 5개 레코드에서 1200개 레코드까지 가능합니다. 캐시 크기가 사용 가능한 메모리보다 크면 초과 레코드가 임시 디스크 파일에 저장됩니다. FillCache 메서드를 적용하면 캐시에 서버 데이터가 채워집니다. 캐시 메모리를 복구하려면 CacheSize 속성을 0으로 설정합니다.
Recordset 변수를 사용할 때는 필요한 기능만 사용해야 합니다. 예를 들어, 레코드 집합에 새 레코드를 추가하기만 하면 되는 경우 OpenRecordset 메서드에 DB_APPENDONLY 옵션을 사용할 수 있습니다. 편집이나 업데이트 기능이 필요하지 않으면 SQL 창구 쿼리를 기반으로 하는 레코드 집합을 사용합니다. 레코드를 삽입하고 업데이트하는 가장 빠른 방법은 코드에 SQL 창구 쿼리를 사용하는 것입니다.
서버에 MSysConf라는 테이블을 만들어 백그라운드 채우기를 제어할 수 있습니다. 백그라운드 채우기란 Microsoft Access가 유휴 시간에 서버에서 레코드를 읽는 속도입니다. 이 테이블을 사용하면 한 번에 검색되는 데이터 행의 개수 및 각 검색 사이의 지연 시간을 초 단위로 설정할 수 있습니다. 서버에 과도한 읽기 잠금이 유지되는 경우 이 테이블 설정을 조정하여 백그라운드 채우기 속도를 높일 수 있습니다. 백그라운드 채우기 때문에 네트워크 소통량이 너무 많이 발생하면 설정을 조정하여 속도를 낮출 수 있습니다.
Microsoft Jet 데이터베이스 엔진 ODBC 연결 백서
"Microsoft Jet 데이터베이스 엔진 ODBC 연결" 백서에서 중요한 추가 정보를 얻을 수 있습니다. 이 백서는 Microsoft Jet 데이터베이스 엔진 버전 3.0 및 엔진의 ODBC 사용 방법에 대해 설명합니다.
클라이언트/서버 응용 프로그램 최적화에 대한 자세한 내용은 19장 "Microsoft Access 97을 사용하여 응용 프로그램 구축"에서 523-556페이지의 "클라이언트/서버 응용 프로그램 개발"을 참조하십시오.
"Microsoft Jet 데이터베이스 엔진 ODBC 연결" 백서를 구하는 방법에 대한 자세한 내용은 Microsoft Knowledge Base의 아래 문서를 참조하십시오. 문서 ID: Q128385 제목 : ACC95: MSL에서 사용할 수 있는 Jet 및 ODBC 백서
또한 Microsoft FastTips 주 메뉴에서 항목 번호 128385를 주문하면 이 문서를 구할 수 있습니다.
키워드 : OdbcOthr kbusage kbfaq
버전 : 2.0 7.0 97
플랫폼 : WINDOWS
하드웨어 : x86
문제 유형 : kbhowto
추가 정보
아래의 추가 리소스를 사용하여 SQL Server로의 마이그레이션에 대한 자세한 정보를 얻을 수 있습니다.
- 클라이언트/서버 개발 정보
- SQL Server 온라인 설명서
- Microsoft Knowledge Base: support.microsoft.com
- Access97 Developer's Handbook의 15장 "Developing Client-Server Applications"(Paul Litwin, Ken Getz, Mike Gilbert)
이 문서에 포함된 정보는 문서를 발행할 때 논의된 문제들에 대한 Microsoft Corporation의 당시 관점을 나타냅니다. Microsoft는 변화하는 시장 환경에 대처해야 하므로 이를 Microsoft 측의 책임으로 해석해서는 안 되며 발행일 이후 소개된 어떠한 정보에 대해서도 Microsoft는 그 정확성을 보장하지 않습니다.
이 설명서는 오직 정보를 제공하기 위한 것입니다. Microsoft는 이 설명서에서 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
© 1998 Microsoft Corporation. All rights reserved.
Microsoft, ActiveX, Visual Basic, Windows 및 Windows NT는 미국, 대한민국, 및/또는 기타 국가에서의 Microsoft Corporation의 등록 상표 또는 상표입니다.
여기에 인용된 다른 상표 및 상표명은 해당 소유자의 소유입니다.
달리 언급하지 않은 한 여기에 인용된 회사, 제품, 사람, 인물 및/또는 데이터는 보기일 뿐이며 어떠한 실제 개인, 회사, 제품 또는 이벤트와도 연관시킬 의도가 없습니다.
Part Number: 098-82594