Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

„Ein Korrelationsname muss für das Bulk-Rowset in der from-Klausel angegeben werden.“ im SQL-Server

Wenn in SQL Server die Fehlermeldung 491, Ebene 16 „Ein Korrelationsname muss für das Bulk-Rowset in der from-Klausel angegeben werden“ auftritt, liegt dies wahrscheinlich daran, dass Sie versuchen, eine Datei ohne Verwendung eines Korrelationsnamens zu lesen.

Wenn Sie OPENROWSET() verwenden Funktion mit dem BULK müssen Sie im FROM einen Korrelationsnamen (auch bekannt als Bereichsvariable oder Alias) angeben Klausel.

Um diesen Fehler zu beheben, geben Sie einfach einen Korrelationsnamen/Alias ​​für Ihre Abfrage an.

Beispiel für den Fehler

Hier ist ein Codebeispiel, das diesen Fehler verursacht.

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

Ergebnis:

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

Der Fehler ist aufgetreten, weil ich vergessen habe, den Korrelationsnamen anzugeben.

Die Lösung

Wie bereits erwähnt, müssen wir zur Behebung dieses Problems lediglich einen Korrelationsnamen (auch bekannt als Bereichsvariable oder Alias) angeben.

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

Ergebnis:

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