호환되지 않는 액세스 기능(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에 기본 식 또는 유효성 검사 규칙을 로드할 수 없습니다. |