Access 인벤토리 내보내기(AccessToSQL)

여러 Access 데이터베이스가 있고 SQL Server로 마이그레이션할 데이터베이스를 잘 모르는 경우 프로젝트에 있는 모든 Access 데이터베이스의 인벤토리를 내보낼 수 있습니다. 그런 다음 인벤토리 메타데이터를 검토하고 쿼리하여 마이그레이션할 데이터베이스 내의 데이터베이스 및 개체를 확인할 수 있습니다. 이 인벤토리를 사용하면 다음 목록과 같은 질문에 대한 답변을 빠르게 찾을 수 있습니다.

  • 가장 큰 데이터베이스란?
  • 데이터베이스의 대부분을 소유하는 사람은 누구인가요?
  • 동일한 테이블을 포함하는 데이터베이스는 무엇입니까?
  • 지난 6개월 동안 수정되지 않은 데이터베이스는 무엇입니까?
  • 개인 정보가 포함된 데이터베이스는 무엇입니까?

이러한 질문에 대답하는 데 사용되는 쿼리 예제는 이 문서의 끝에 제공됩니다.

내보낸 메타데이터

SSMA는 Access 데이터베이스, 테이블, 열, 인덱스, 외장 키, 쿼리, 보고서, 폼, 매크로 및 모듈에 대한 메타데이터를 내보냅니다. 이러한 각 항목 범주에 대한 메타데이터는 별도의 테이블로 내보내집니다. 이러한 테이블의 스키마는 Access 인벤토리 스키마를 참조 하세요.

인벤토리 데이터 내보내기

Access 인벤토리를 내보내려면 먼저 SSMA 프로젝트를 열거나 만든 다음 분석할 Access 데이터베이스를 추가해야 합니다. SSMA 프로젝트에 데이터베이스를 추가한 후 해당 데이터베이스에 대한 메타데이터를 지정된 SQL Server 데이터베이스 및 스키마로 내보냅니다. 필요한 경우 SSMA는 메타데이터를 저장할 테이블을 만듭니다. 그런 다음 SSMA는 Access 데이터베이스에 대한 메타데이터를 SQL Server 데이터베이스에 추가합니다.

참고 항목

Access 데이터베이스는 쿼리, 양식, 보고서, 매크로, 모듈 및 바로 가기가 포함된 테이블 및 프런트 엔드 데이터베이스를 포함하는 백 엔드 데이터베이스와 같은 여러 파일로 분할할 수 있습니다. 분할 데이터베이스를 SQL Server로 마이그레이션하려면 프런트 엔드 데이터베이스를 SSMA에 추가합니다.

다음 지침에서는 프로젝트를 만들고, 프로젝트에 데이터베이스를 추가하고, SQL Server에 연결한 다음, 인벤토리 데이터를 내보내는 방법을 설명합니다.

프로젝트 만들기

  1. Access용 SSMA를 엽니다.

  2. 파일 메뉴에서 새 프로젝트를 선택합니다.

    새 프로젝트 대화 상자가 나타납니다.

  3. 이름 상자에 프로젝트의 이름을 입력합니다.

  4. 위치 상자에서 프로젝트의 폴더를 입력하거나 선택합니다.

  5. 콤보로 마이그레이션 상자에서 마이그레이션할 대상 버전을 선택한 다음 확인을 선택합니다.

프로젝트 만들기에 대한 자세한 내용은 프로젝트 만들기 및 관리를 참조 하세요.

데이터베이스 찾기 및 추가

  1. 파일 메뉴에서 데이터베이스 찾기를 선택합니다.

  2. 데이터베이스 찾기 마법사에서 검색할 드라이브, 파일 경로 또는 UNC 경로를 입력합니다. 또는 찾아보기를 선택하여 드라이브 또는 네트워크 폴더를 선택합니다.

  3. 추가를 선택하여 목록 상자에 위치를 추가합니다.

    이전 두 단계를 반복하여 검색 위치를 추가합니다.

  4. 필요에 따라 검색 조건을 추가하여 반환되는 데이터베이스 목록을 구체화합니다.

    Important

    파일 이름 텍스트 상자의 전체 또는 일부는 야생카드 문자를 지원하지 않습니다.

  5. 검사를 선택합니다.

    스캔 페이지가 나타납니다. 발견된 데이터베이스와 검색 진행률을 보여 줍니다. 검색을 중지하려면 중지를 선택합니다.

  6. 파일 선택 페이지에서 프로젝트에 추가할 각 데이터베이스를 선택합니다.

    목록 맨 위에 있는 모두 선택 및 지우기 단추를 사용하여 모든 데이터베이스를 선택하거나 지울 수 있습니다. Ctrl 키를 누른 상태에서 여러 행을 선택하거나 Shift 키를 눌러 행 범위를 선택할 수도 있습니다.

  7. 다음을 선택합니다.

  8. 확인 페이지에서 마침을 선택합니다.

프로젝트에 데이터베이스를 추가하는 방법에 대한 자세한 내용은 Access 데이터베이스 파일 추가 및 제거를 참조 하세요.

SQL Server에 연결

  1. 파일 메뉴에서 SQL Server에 대한 커넥트 선택합니다.

  2. 연결 대화 상자에서 SQL Server 인스턴스의 이름을 입력하거나 선택합니다.

    • 로컬 컴퓨터의 기본 인스턴스에 연결하는 경우 localhost 또는 점(.)을 입력할 수 있습니다.

    • 다른 컴퓨터의 기본 인스턴스에 연결하는 경우 컴퓨터의 이름을 입력합니다.

    • 명명된 인스턴스에 연결하는 경우 컴퓨터 이름, 백슬래시 및 인스턴스 이름을 입력합니다. 예: MyServer\MyInstance.

  3. 데이터베이스 상자에 내보낸 메타데이터의 대상 데이터베이스 이름을 입력합니다.

  4. SQL Server 인스턴스가 기본이 아닌 포트에서 연결을 허용하도록 구성된 경우 서버 포트 상자에 SQL Server 연결에 사용되는 포트 번호를 입력합니다. SQL Server의 기본 인스턴스의 경우 기본 포트 번호는 1433입니다. 명명된 인스턴스의 경우 SSMA는 SQL Server 브라우저 서비스에서 포트 번호를 가져오려고 시도합니다.

  5. 인증 드롭다운 목록에서 연결에 사용할 인증 유형을 선택합니다. 현재 Windows 계정을 사용하려면 Windows 인증을 선택합니다. SQL Server 로그인을 사용하려면 SQL Server 인증을 선택한 다음 사용자 이름과 암호를 제공합니다.

SQL Server에 연결하는 방법에 대한 자세한 내용은 SQL Server에 커넥트(AccessToSQL)를 참조하세요.

인벤토리 정보 내보내기

  1. Access 메타데이터 탐색기에서 Access-metabase를 확장합니다.

  2. 데이터베이스 옆에 있는 검사 상자를 선택합니다.

    개별 데이터베이스 또는 데이터베이스 개체를 생략하려면 Databases 폴더를 확장한 다음 데이터베이스 또는 데이터베이스 개체 옆의 검사 상자를 선택 취소합니다.

  3. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 스키마 내보내기를 선택합니다.

  4. 내보내기용 스키마 선택 대화 상자에서 내보낸 메타데이터의 대상 스키마를 선택한 다음 확인을 선택합니다.

메타데이터를 내보낼 때마다 SSMA는 데이터를 인벤토리에 추가합니다. 인벤토리의 기존 데이터는 업데이트되거나 삭제되지 않습니다.

내보낸 메타데이터 쿼리

Access 데이터베이스에 대한 메타데이터를 내보낸 후 메타데이터를 쿼리할 수 있습니다. 다음 지침에서는 SQL Server Management Studio의 쿼리 편집기 창을 사용하여 쿼리를 실행하는 방법을 설명합니다.

메타데이터 쿼리

  1. 시작 메뉴에서 모든 프로그램을 가리키고 Microsoft SQL Server 2005 또는 Microsoft SQL Server 2008 또는 Microsoft SQL Server 2012가리킨 다음 SQL Server Management Studio를 선택합니다.

  2. 서버로 커넥트 대화 상자에서 설정을 확인한 다음, 커넥트 선택합니다.

  3. Management Studio 도구 모음에서 새 쿼리를 선택하여 쿼리 편집기 엽니다.

  4. 쿼리 편집기 창에서 쿼리를 입력합니다. 다음 섹션에 몇 가지 예제가 나와 있습니다.

  5. F5 키를 눌러 쿼리를 실행합니다.

쿼리 예제

다음 쿼리를 실행하기 전에 USE database_name 쿼리를 실행하여 내보낸 메타데이터가 포함된 데이터베이스에 대해 쿼리가 실행되는지 확인해야 합니다. 예를 들어 메타데이터를 MyAccessMetadata라는 데이터베이스로 내보낸 경우 Transact-SQL 코드의 시작 부분에 다음 문을 추가합니다.

USE MyAccessMetadata;
GO

다음 예제에서는 모두 dbo 스키마를 사용합니다. 메타데이터를 다른 스키마로 내보낸 경우 이러한 쿼리를 실행할 때 스키마를 변경해야 합니다.

이러한 데이터베이스에 있는 테이블과 열은 무엇인가요?

다음 쿼리는 열, 테이블 및 데이터베이스 메타데이터가 포함된 테이블을 조인한 다음 모든 데이터베이스, 테이블 및 열의 이름을 열 이름으로 정렬하여 반환합니다.

SELECT DatabaseName,
    TableName,
    ColumnName
FROM dbo.SSMA_Access_InventoryColumns C
INNER JOIN dbo.SSMA_Access_InventoryTables T
    ON C.TableId = T.TableId
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
    ON T.DatabaseId = D.DatabaseId
ORDER BY ColumnName;

가장 큰 데이터베이스란?

다음 쿼리는 각 Access 데이터베이스의 데이터베이스 이름, 파일 크기 및 테이블 수를 파일 크기별로 정렬하여 반환합니다.

SELECT DatabaseName,
    FileSize,
    TablesCount
FROM dbo.SSMA_Access_InventoryDatabases
ORDER BY FileSize DESC;

대부분의 데이터베이스 소유자는 누구인가요?

다음 쿼리는 각 Access 데이터베이스의 데이터베이스 이름과 소유자를 소유자별로 정렬하여 반환합니다.

SELECT DatabaseName, FileOwner
FROM dbo.SSMA_Access_InventoryDatabases
ORDER BY FileOwner;

동일한 테이블을 포함하는 데이터베이스는 무엇입니까?

다음 쿼리는 하위 쿼리를 사용하여 테이블 목록에서 두 번 이상 표시되는 모든 테이블 이름을 찾은 다음 이 테이블 목록을 사용하여 데이터베이스 이름을 가져옵니다. 결과는 데이터베이스 이름 및 테이블 이름으로 반환되고 테이블 이름으로 정렬됩니다.

SELECT DatabaseName,
    TableName
FROM dbo.SSMA_Access_InventoryTables T
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
    ON D.DatabaseId = T.DatabaseId
WHERE TableName IN (
    SELECT TableName
    FROM dbo.SSMA_Access_InventoryTables
    GROUP BY TableName
    HAVING COUNT(*) > 1
)
ORDER BY TableName;

지난 6개월 동안 수정되지 않은 데이터베이스는 무엇입니까?

다음 쿼리는 현재 날짜를 가져오고 6개월 전의 월 값을 가져오고 수정된 날짜가 6개월보다 큰 데이터베이스 목록을 반환합니다.

SELECT DatabaseName,
    DateModified
FROM dbo.SSMA_Access_InventoryDatabases
WHERE DATEDIFF(MONTH, DateModified, GETDATE()) > 6
ORDER BY DateModified;

개인 정보가 포함된 데이터베이스는 무엇입니까?

Access 데이터베이스에는 중요한 개인 정보가 포함될 수 있습니다. 이러한 데이터베이스를 SQL Server로 이동하여 해당 보안 기능을 활용할 수 있습니다. 중요한 데이터가 포함된 열에 특정 이름이 있거나 특정 문자가 포함된 경우 쿼리를 사용하여 해당 정보가 포함된 모든 열을 찾을 수 있습니다. 예를 들어 문자열 "salary"를 포함하는 모든 열을 찾을 수 있습니다. 그런 다음, 쿼리는 데이터베이스 이름, 테이블 이름 및 열 이름을 반환합니다.

SELECT DatabaseName,
    TableName,
    ColumnName
FROM dbo.SSMA_Access_InventoryColumns C
INNER JOIN dbo.SSMA_Access_InventoryTables T
    ON C.TableId = T.TableId
INNER JOIN dbo.SSMA_Access_InventoryDatabases D
    ON T.DatabaseId = D.DatabaseId
WHERE ColumnName LIKE '%salary%';

열 이름을 모르는 경우 모든 열을 반환하는 쿼리를 작성할 수 있습니다. 이렇게 하려면 이전 쿼리에서 WHERE 절을 제거합니다.

참고 항목