다음을 통해 공유


MsiDatabaseGenerateTransformW 함수(msiquery.h)

MsiDatabaseGenerateTransform 함수는 두 데이터베이스 간의 차이점에 대한 변환 파일을 생성합니다. 변환은 원래 데이터베이스를 변경하지 않고 데이터베이스에 대한 변경 내용을 기록하는 방법입니다. 또한 MsiDatabaseGenerateTransform을 사용하여 변환을 만들지 않고 두 데이터베이스가 동일한지 여부를 테스트할 수 있습니다.

구문

UINT MsiDatabaseGenerateTransformW(
  [in] MSIHANDLE hDatabase,
  [in] MSIHANDLE hDatabaseReference,
  [in] LPCWSTR   szTransformFile,
  [in] int       iReserved1,
  [in] int       iReserved2
);

매개 변수

[in] hDatabase

변경 내용을 포함하는 MsiOpenDatabase 에서 가져온 데이터베이스에 대한 핸들입니다.

[in] hDatabaseReference

변경 내용을 포함하지 않는 MsiOpenDatabase 에서 가져온 데이터베이스에 대한 핸들입니다.

[in] szTransformFile

생성되는 변환 파일의 이름을 지정하는 null로 끝나는 문자열입니다. 이 매개 변수는 null일 수 있습니다. szTransformFile이 null인 경우 MsiDatabaseGenerateTransform을 사용하여 변환을 만들지 않고 두 데이터베이스가 동일한지 여부를 테스트할 수 있습니다. 데이터베이스가 동일한 경우 함수는 ERROR_NO_DATA 반환합니다. 데이터베이스가 다른 경우 함수는 NOERROR를 반환합니다.

[in] iReserved1

예약된 인수이며 0으로 설정해야 합니다.

[in] iReserved2

예약된 인수이며 0으로 설정해야 합니다.

반환 값

MsiDatabaseGenerateTransform 함수는 다음 값 중 하나를 반환합니다.

설명

두 데이터베이스 간에 차이 파일을 생성하려면 MsiDatabaseGenerateTransform 함수를 사용합니다. 변환에는 열과 행의 삽입 및 삭제에 대한 정보가 포함됩니다. 유효성 검사 플래그는 변환 파일의 요약 정보 스트림에 저장됩니다.

두 데이터베이스에 모두 있는 테이블의 경우 허용되는 두 스키마 간의 유일한 차이점은 참조 테이블의 끝에 열을 추가하는 것입니다. 기본 키 열을 테이블에 추가하거나 기본 테이블에 정의된 대로 기존 열의 순서나 이름 또는 열 정의를 변경할 수 없습니다. 즉, 두 테이블에 데이터가 포함되지 않고 열이 참조 테이블에서 제거되는 경우 결과 테이블은 기본 테이블과 동일합니다.

변환, 원본 및 패치에 대한 목록 구분 기호는 세미콜론이므로 이 문자는 파일 이름 또는 경로에 사용하면 안 됩니다.

이 함수는 요약 정보 스트림을 생성하지 않습니다. MsiCreateTransformSummaryInfo를 사용하여 기존 변환에 대한 스트림을 만듭니다.

szTransformFile이 null인 경우 변환을 만들지 않고 두 데이터베이스가 동일한지 테스트할 수 있습니다. 데이터베이스가 동일하면 ERROR_NO_DATA 반환되고 차이점이 발견되면 NOERROR가 반환됩니다.

이 함수는 사용자 지정 작업에서 호출할 수 없습니다. 사용자 지정 작업에서 이 함수를 호출하면 함수가 실패합니다.

함수가 실패하면 MsiGetLastErrorRecord를 사용하여 확장된 오류 정보를 얻을 수 있습니다.

참고

msiquery.h 헤더는 MSiDatabaseGenerateTransform을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2012, Windows 8, Windows Server 2008 R2 또는 Windows 7의 Windows Installer 5.0. Windows Server 2008 또는 Windows Vista의 Windows Installer 4.0 또는 Windows Installer 4.5. Windows Server 2003 또는 Windows XP의 Windows Installer
대상 플랫폼 Windows
헤더 msiquery.h
라이브러리 Msi.lib
DLL Msi.dll

추가 정보

데이터베이스 관리 함수

데이터베이스 변환