Jeśli napotkasz błąd Msg 491, poziom 16 „Nazwa korelacji musi być określona dla zbiorczego zestawu wierszy w klauzuli from” w programie SQL Server, prawdopodobnie jest to spowodowane próbą odczytania pliku bez użycia nazwy korelacji.
Gdy używasz OPENROWSET()
funkcja z BULK
opcji, musisz podać nazwę korelacji (nazywaną również zmienną zakresu lub aliasem) w polu FROM
klauzula.
Aby naprawić ten błąd, po prostu podaj nazwę korelacji/alias dla swojego zapytania.
Przykład błędu
Oto przykład kodu, który powoduje ten błąd.
SELECT BulkColumn FROM OPENROWSET (
BULK '/var/opt/mssql/bak/pets.json',
SINGLE_CLOB
);
Wynik:
Msg 491, Level 16, State 1, Line 4 A correlation name must be specified for the bulk rowset in the from clause.
Wystąpił błąd, ponieważ zapomniałem podać nazwę korelacji.
Rozwiązanie
Jak wspomniano, aby rozwiązać ten problem, wystarczy podać nazwę korelacji (znaną również jako zmienna zakresu lub alias).
SELECT BulkColumn FROM OPENROWSET (
BULK '/var/opt/mssql/bak/pets.json',
SINGLE_CLOB
) AS MyAlias;
Wynik:
+--------------+ | 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" } ] } } | +--------------+