Se você encontrar o erro Msg 491, Level 16 "Um nome de correlação deve ser especificado para o conjunto de linhas em massa na cláusula from" no SQL Server, provavelmente é porque você está tentando ler um arquivo sem usar um nome de correlação.
Quando você usa o
OPENROWSET()
função com o BULK
opção, você deve fornecer um nome de correlação (também conhecido como variável de intervalo ou alias) no arquivo FROM
cláusula. Para corrigir esse erro, basta fornecer um nome/alias de correlação para sua consulta.
Exemplo do erro
Aqui está um exemplo de código que causa esse erro.
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.
O erro ocorreu porque esqueci de incluir o nome da correlação.
A solução
Como mencionado, para corrigir esse problema, tudo o que precisamos fazer é fornecer um nome de correlação (também conhecido como variável de intervalo ou 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" } ] } } | +--------------+