Ако срещнете грешка Msg 491, ниво 16 „Трябва да се посочи име на корелация за груповия набор от редове в клаузата from“ в SQL Server, това вероятно е защото се опитвате да прочетете файл, без да използвате име на корелация.
Когато използвате OPENROWSET()
функция с BULK
опция, трябва да предоставите име на корелация (известно също като променлива на диапазон или псевдоним) в FROM
клауза.
За да коригирате тази грешка, просто предоставете корелационно име/псевдоним за вашата заявка.
Пример за грешката
Ето пример за код, който причинява тази грешка.
SELECT BulkColumn FROM OPENROWSET (
BULK '/var/opt/mssql/bak/pets.json',
SINGLE_CLOB
);
Резултат:
Msg 491, Level 16, State 1, Line 4 A correlation name must be specified for the bulk rowset in the from clause.
Грешката възникна, защото забравих да включа името на корелацията.
Решението
Както споменахме, за да решим този проблем, всичко, което трябва да направим, е да предоставим име на корелация (известно също като променлива на диапазон или псевдоним).
SELECT BulkColumn FROM OPENROWSET (
BULK '/var/opt/mssql/bak/pets.json',
SINGLE_CLOB
) AS MyAlias;
Резултат:
+--------------+ | 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" } ] } } | +--------------+