sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo corregir "Se debe especificar un nombre de correlación para el conjunto de filas masivo en la cláusula from". en servidor SQL

Si encuentra el mensaje de error 491, nivel 16 "Se debe especificar un nombre de correlación para el conjunto de filas masivo en la cláusula from" en SQL Server, probablemente se deba a que está intentando leer un archivo sin usar un nombre de correlación.

Cuando usa el OPENROWSET() función con el BULK opción, debe proporcionar un nombre de correlación (también conocido como variable de rango o alias) en FROM cláusula.

Para corregir este error, simplemente proporcione un nombre/alias de correlación para su consulta.

Ejemplo del error

Aquí hay un ejemplo de código que causa este error.

SELECT BulkColumn FROM OPENROWSET (
    BULK '/var/opt/mssql/bak/pets.json', 
    SINGLE_CLOB
    );

Resultado:

Msg 491, Level 16, State 1, Line 4
A correlation name must be specified for the bulk rowset in the from clause.

El error ocurrió porque olvidé incluir el nombre de la correlación.

La solución

Como se mencionó, para solucionar este problema, todo lo que debemos hacer es proporcionar un nombre de correlación (también conocido como variable de rango o alias).

SELECT BulkColumn FROM OPENROWSET (
    BULK '/var/opt/mssql/bak/pets.json', 
    SINGLE_CLOB
    ) AS MyAlias;

Resultado:

+--------------+
| BulkColumn   |
|--------------|
| { 
    "pets" : {
            "cats" : [
            { "id" : 1, "name" : "Fluffy", "sex" : "Female" },
            { "id" : 2, "name" : "Long Tail", "sex" : "Female" },
            { "id" : 3, "name" : "Scratch", "sex" : "Male" }
        ],
            "dogs" : [
            { "id" : 1, "name" : "Fetch", "sex" : "Male" },
            { "id" : 2, "name" : "Fluffy", "sex" : "Male" },
            { "id" : 3, "name" : "Wag", "sex" : "Female" }
        ]
    }
}              |
+--------------+