0

"DB2 용 SSMA (Microsoft SQL Server Migration Assistant)"도구를 사용하여 DB2 v9.1.700.855의 스키마를 SQL Server 2012로 마이그레이션했습니다. 연결을 설정할 수는 있지만 "데이터를 수집하는 동안 오류가 발생했습니다"라는 오류가 표시됩니다. 로그 파일을 확인한 결과 아래 메시지가 표시됩니다.호환되는 인수를 갖는 "FUNCTION"유형의 "GETVARIABLE"이라는 승인 된 루틴이 없습니다.

"FUNCTION"유형의 "GETVARIABLE"이라는 호환 루틴이 없습니다.

어떻게이 오류를 해결할 수 있습니까?

+0

db2 모드 명령 줄에서 쿼리의 파일 로그를 실행하려고해도 같은 오류가 발생합니다. '''sql SELECT 'DB2 v'substr (SYSTEM.GETVARIABLE ('SYSIBM.VERSION'), 4, 2) '.' substr (SYSTEM> GETVARIABLE ('SYSIBM.VERSION'), 6, 2) AS 버전 SYSIBM.SYSDUMMY1 ''' –

+0

이 'SYSTEM.GETVARIABLE'은 어디서 오는가? DB2에는 그러한 기능이 없습니다. 나는'SYSIBM.VERSION'에 대해서 확신하지 못합니다. – mustaccio

답변

0

IBM DB2 세션 변수는 SQL Server에 직접 해당하지 않습니다. GETVARIABLE 명령을 조회하고 검색되는 정보를 확인한 후 SQL Server에 상응하는 정보가 있는지 찾아야합니다.

+0

SSMA에서 어떻게 할 수 있습니까? 내가 db2 모드 명령 줄에서 쿼리의 파일 로그를 실행하려고하면 같은 오류가 발생합니다. '''sql SELECT 'DB2 v'substr (SYSTEM.GETVARIABLE ('SYSIBM.VERSION'), 4, 2) '.' substr (SYSTEM> GETVARIABLE ('SYSIBM.VERSION'), 6, 2) AS 버전 SYSIBM.SYSDUMMY1 ''' –

+0

이 코드는 코드가 실행중인 DB2 버전을 구문 분석하려고 시도하고 있습니다. DB2에서 실행 중이 지 않으므로, SYSIBM.VERSION 변수는 존재하지 않습니다. SQL Server에 대한 대략적인 명령은'SELECT Left (@@ Version, Charindex ('-', @@ version) -1)'와 같습니다. 이것이 사용자가 원하거나 필요로하는 것이 아니기 때문에 마이그레이션을 수행하는 사람은 이와 같은 충돌을 찾아 수동으로 수정해야합니다. 불행하게도 다른 호환되지 않는 명령이있는 시스템간에 코드가 자동으로 변환되는 것은 현실입니다. –

+0

죄송합니다. DB2의 명령 줄에서이 sql 쿼리를 실행하고 오류가 동일하다는 것을 이해하지 못하는 것 같습니다. –