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" }
]
}
} |
+--------------+