다음을 통해 공유


호환되지 않는 액세스 기능(AccessToSQL)

모든 Access 데이터베이스 기능이 SQL Server와 호환되는 것은 아닙니다. 예를 들어 SQL Server 및 Access에는 서로 다른 예약된 키워드(keyword) 집합이 있습니다. 이러한 문제는 SQL Server로의 성공적인 마이그레이션을 방지할 수 있습니다. 다음 표를 사용하여 가능한 마이그레이션 문제와 해당 문제에 대해 수행할 수 있는 작업을 알아봅니다.

마이그레이션에 영향을 줄 수 있는 데이터베이스 설정 또는 기능

데이터베이스 설정 또는 기능 액세스 마이그레이션 문제
액세스 테이블에는 고유 인덱스가 없습니다. 고유 인덱스가 없는 테이블이 SQL Server로 마이그레이션되는 경우 마이그레이션 후에 테이블을 수정할 수 없습니다. 이로 인해 애플리케이션 호환성 문제가 발생할 수 있습니다.

Access 데이터베이스 개체를 변환하면 출력 창에 고유한 인덱스가 없는 Access 테이블이 나열됩니다.

변환하는 동안 SQL Server 테이블에 기본 키를 추가하도록 Access를 구성할 수 있습니다. 자세한 내용은 Project 설정(변환)를 참조하세요.
액세스 테이블에는 복제본(replica) 열이 있습니다. 복제본(replica)tion 시스템 열을 포함하는 Access 테이블이 SQL Server로 마이그레이션되는 경우 마이그레이션 후 Jet 복제본(replica)tion 기능이 손상됩니다.

마이그레이션 후 SQL Server 복제본(replica)tion을 사용하여 데이터베이스의 동기화된 복사본을 기본 확인하는 것이 좋습니다.
고유 인덱스가 있는 액세스 테이블에는 여러 null 값이 포함됩니다. 8.13 이전에는 Null 값이 여러 개 있는 고유 인덱스가 있는 Access 테이블을 SQL Server로 전송할 수 없습니다. SQL Server에서는 고유 인덱스가 여러 null을 허용하지 않으므로 이러한 테이블에 대한 마이그레이션이 실패합니다.

SSMA는 평가 보고서에서 이 문제에 플래그를 지정합니다. 평가 보고서를 만들려면 변환을 위해 Access Database 개체 평가를 참조하세요.

이 문제가 있는 경우 기본 키에 중복 null 값이 없는지 확인해야 합니다. 또는 여러 null 값을 포함하는 기본 키 또는 고유 인덱스를 제거해야 합니다.
액세스 테이블에는 SQL Server 범위를 벗어난 날짜 값이 포함됩니다. SQL Server datetime 형식은 1753년 1월 1일부터 9999년 12월 31일까지의 날짜만 허용합니다. Access는 9999년 1월 100일에서 12월 31일 범위의 날짜를 허용합니다.

SSMA는 평가 보고서에서 이 문제에 플래그를 지정합니다. 평가 보고서를 만들려면 변환을 위해 Access Database 개체 평가를 참조하세요.

SSMA가 SQL Server 범위를 벗어난 날짜를 확인하는 방법을 구성할 수 있습니다. 자세한 내용은 Project 설정(마이그레이션)를 참조하세요.
Access의 인덱스 길이가 900바이트를 초과합니다. SQL Server 인덱스에는 인덱스 키 열의 총 크기에 대해 900 바이트 제한이 있습니다. Access 테이블에서 더 큰 인덱스를 사용하는 경우 SSMA에 경고가 표시됩니다.

데이터 마이그레이션을 계속하면 마이그레이션이 실패할 수 있습니다.
액세스 개체 이름은 SQL Server 키워드(keyword) 또는 특수 문자를 포함합니다. Access 및 SQL Server에는 서로 다른 예약된 키워드(keyword) 및 특수 문자 집합이 있습니다. SQL Server는 "select" 또는 [select].p와 같이 대괄호로 묶거나 따옴표로 묶은 식별자를 사용하는 경우 SQL Server 키워드(keyword) 사용하거나 특수 문자를 포함하는 개체를 허용합니다. 자세한 내용은 SQL Server 온라인 설명서의 "구분 식별자(데이터베이스 엔진)"를 참조하세요.

참고: 따옴표를 사용하여 식별자를 구분하려면 SET QUOTED_IDENTIFIER ON이어야 합니다.

예를 들어 CREATE TABLE [schema](c1 [FOR]) 스키마FOR는 예약된 키워드(keyword) 경우에도 유효한 문입니다. CREATE TABLE [xxx*yyy](c1 x&y) 또한 테이블 및 열 이름에 특수 문자 *>가 포함되어 있더라도 유효한 문입니다.

이러한 개체를 참조하는 모든 쿼리는 대괄호 또는 따옴표가 있는 이름도 사용해야 합니다. 예를 들어 쿼리 SELECT * FROM schema 가 실패합니다. 올바른 쿼리는 다음과 SELECT * FROM [schema]같습니다.

Access 데이터베이스 개체를 변환하면 출력 창에 키워드(keyword) 또는 특수 문자를 사용하는 Access 테이블이 나열됩니다. Access에서 테이블을 수정한 다음 데이터베이스를 제거하고 다시 추가할 수 있습니다. 또는 쿼리에서 대괄호 또는 따옴표를 사용하여 식별자를 구분하도록 해당 개체를 참조하는 쿼리를 수정할 수 있습니다. 쿼리를 수정하지 않으면 Access 애플리케이션에서 오류를 반환하거나 다른 문제가 발생할 수 있습니다.
필드 크기는 기본 키/외래 키 관계에 따라 다릅니다. SQL Server는 데이터 형식이 다르거나 크기가 다른 열을 외래 키 제약 조건과 연결하는 Jet 기능을 지원하지 않습니다.

Access 데이터베이스 개체를 변환하면 출력 창에 SQL Server로 변환되지 않는 기본 키/외래 키 제약 조건이 나열됩니다. Access 열이 일치하도록 데이터 형식 및 크기를 변경한 다음 Access 데이터베이스를 제거하고 다시 추가할 수 있습니다. 또는 SQL Server에서 이러한 제약 조건이 만들어지지 않더라도 데이터를 마이그레이션할 수 있습니다.
Access 관계의 참조된 테이블에는 기본 키나 고유 인덱스가 없습니다. Access는 참조된 테이블에 기본 키 또는 고유 인덱스가 없는 테이블 간의 관계를 허용합니다. 그러나 SQL Server에서는 지원되지 않습니다.

Access 데이터베이스 개체를 변환하면 출력 창에 관계가 있지만 기본 키 또는 고유 인덱스가 없는 테이블이 나열됩니다. 테이블을 변경하여 기본 키 또는 고유 인덱스를 추가한 다음 Access 데이터베이스를 제거하고 다시 추가할 수 있습니다. 또는 테이블 간의 관계가 끊어지더라도 데이터를 마이그레이션할 수 있습니다.
액세스 테이블에는 하이퍼링크 열이 있습니다. SQL Server는 하이퍼링크 열을 지원하지 않습니다. 대신 열은 Access 메모 열처럼 처리됩니다. 기본적으로 이러한 열은 SQL Server에서 nvarchar(max) 열로 변환됩니다. 매핑을 사용자 지정할 수 있습니다. 자세한 내용은 원본 및 대상 데이터 형식 매핑을 참조 하세요.
기본 또는 유효성 검사 규칙 식에는 SQL Server 또는 SQL Azure로 변환할 수 없는 Access 함수가 포함됩니다. 액세스 기본 식 또는 유효성 검사 규칙에는 SQL Server 또는 SQL Azure에 매핑되지 않는 Access 시스템 함수 또는 사용자 정의 함수가 포함될 수 있습니다. SQL Server 또는 SQL Azure에 매핑되지 않는 함수를 사용하면 SQL Server 또는 SQL Azure에 기본 식 또는 유효성 검사 규칙을 로드할 수 없습니다.

참고 항목

마이그레이션을 위한 Access 데이터베이스 준비
SQL Server로 액세스 데이터베이스 마이그레이션