O2SS0160: instrucción SELECT no convertida (error)

En este artículo se describe por qué SQL Server Migration Assistant (SSMA) para Oracle no convierte la instrucción en dos escenarios que tienen SELECT ORDER BY cláusulas mal formadas.

Fondo

Hay casos en los que SSMA no puede convertir SELECT instrucciones complejas.

Posibles soluciones

Hay dos escenarios, en los que SSMA no convierte la instrucción select y genera un mensaje de error.

Escenario 1: SELECT DISTINCT la instrucción se usa con la instrucción en la consulta CONNECT BY PRIOR jerárquica

Considere el ejemplo siguiente:

SELECT DISTINCT
    empno,
    MGR,
    ename
FROM
    emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno;

Al intentar convertir el código anterior en SSMA, genera el siguiente mensaje de error:

O2SS0160: instrucción SELECT no convertida

Para resolver el problema anterior, puede usar la cláusula en el código ORDER BY fuente de Oracle, como se muestra a continuación:

SELECT DISTINCT
    empno,
    MGR,
    ename
FROM
    emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno
ORDER BY empno;

SSMA debe convertir correctamente la consulta anterior.

Escenario 2: la cláusula ordena el conjunto de resultados en función de las dos columnas o campos, pero solo ha especificado una columna ORDER BY o campo en la SELECT cláusula

Considere el ejemplo siguiente:

SELECT Empno
FROM emp
ORDER BY 1, 2;

Al intentar convertir el código anterior en SSMA, genera el siguiente mensaje de error:

O2SS0160: instrucción SELECT no convertida

Para resolver este error, reduzca el número de campos o columnas de la cláusula o agregue campos ORDER BY o columnas adicionales en la SELECT cláusula .

Esta es una consulta actualizada en la que quitamos la segunda referencia de columna de ORDER BY :

SELECT Deptno
FROM emp
ORDER BY 1;

SSMA debe convertir correctamente la consulta anterior.

  • O2SS0268: no se puede convertir la consulta jerárquica con combinación externa
  • O2SS0285: la consulta jerárquica no se ha convertido