Ein Anwendungspaket validieren¶
Voraussetzungen¶
Sie müssen eine bestehende Verbindung in Ihrer
config.toml
-Datei haben.In Ihrem Snowflake Native App-Projekt muss eine
snowflake.yml
-Datei vorhanden sein.
Snowflake CLI validiert automatisch ein Snowflake Native App Setup-Skript, zusammen mit allen anderen SQL-Dateien, die mit der Anweisung SQL EXECUTE IMMEDIATE eingebunden wurden, wenn Sie eine Anwendung ausführen (snow app run
) oder bereitstellen (snow app deploy
). Es wird das Skript verwendet, das zuletzt von einem der Befehle hochgeladen wurde. Die Validierung prüft auf SQL-Syntax-Fehler, ungültige Objektreferenzen und bewährte Verfahren. Wenn die Überprüfung des Skripts fehlschlägt, bricht die Ausführung des Befehls ab, führt aber nicht automatisch ein Rollback der Stagingdateien durch.
Weitere Informationen über Snowflake Native App Setup-Skripte finden Sie unter Setup-Skript erstellen in der Snowflake Native Apps Framework-Dokumentation.
Wie Sie ein Setup-Skript manuell validieren¶
Gelegentlich sollten Sie ein Setup-Skript vor der Bereitstellung einer Anwendung validieren, um mögliche Auswirkungen zu vermeiden, die auftreten können, wenn die Validierung während des Bereitstellungsprozesses fehlschlägt. Der Befehl snow app validate
validiert ein Setup-Skript, ohne dass Sie eine Anwendung ausführen oder bereitstellen müssen. Er lädt die Quelldateien in einen separaten Stagingbereich hoch, der nach Abschluss des Befehls automatisch gelöscht wird, damit die Dateien im Quellbereich der Anwendung nicht gestört werden.
Erstellen Sie eine Verbindung, falls erforderlich.
Führen Sie den Befehl
snow app validate
in Ihrem Projekt aus, ähnlich wie im Folgenden gezeigt:snow app validate --connection="dev"
Bei erfolgreicher Ausführung gibt der Befehl die folgende Meldung zurück:
Snowflake Native App validation succeeded.
Wenn die Validierung fehlschlägt, wird die folgende Fehlermeldung zusammen mit anderen Fehlermeldungen angezeigt:
Snowflake Native App setup script failed validation.
Wenn Sie die rohe Validierungsausgabe als JSON anzeigen möchten, können Sie snow app validate --format json
ausführen, wie gezeigt:
snow app validate --format json
{
"errors": [],
"warnings": [],
"status": "SUCCESS"
}
Wobei:
Fehler zeigt eine Auflistung von Fehlern an, sofern diese vorhanden sind. Fehler führen dazu, dass die Validierung fehlschlägt.
Warnungen zeigt eine Auflistung der Warnungen an, sofern sie vorhanden sind.
Status zeigt das Ergebnis der Validierung an: SUCCESS oder FAILURE.
Wenn bei der Validierung Fehler auftreten, die die Validierung fehlschlagen lassen, oder Warnungen, die die Validierung erfolgreich werden lassen, zeigt der Befehl die folgenden Informationen zum Fehler oder zur Warnung an:
message
: Von Menschen lesbare Meldung für den Fehler oder die Warnung.cause
: Grund, warum das SQL-Konstrukt als Fehler oder Warnung angesehen wird.errorCode
: Numerischer Code im Zusammenhang mit dem Fehler oder der Warnung.fileName
: Name der Datei, die den Fehler oder die Warnung enthält, bezogen auf den Stagingbereich.kine
: Zeilennummer in der Datei, die den Speicherort des Fehlers oder der Warnung angibt.column
: Spaltennummer in der Zeile, in der der Fehler oder die Warnung aufgetreten ist.
Das folgende Beispiel zeigt eine fehlgeschlagene Validierung, die sowohl Warnungen als auch Fehler enthielt:
snow app validate --format json
{
"errors": [
{
"message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/empty.sql': Empty SQL statement.",
"cause": "Empty SQL statement.",
"errorCode": "000900",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/empty.sql",
"line": -1,
"column": -1
},
{
"message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/second.sql': Unsupported feature 'CREATE VERSIONED SCHEMA without OR ALTER'.",
"cause": "Unsupported feature 'CREATE VERSIONED SCHEMA without OR ALTER'.",
"errorCode": "000002",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/second.sql",
"line": -1,
"column": -1
},
{
"message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql': File '/does-not-exist.sql' cannot be found in the same stage as the setup script is located.",
"cause": "File '/does-not-exist.sql' cannot be found in the same stage as the setup script is located.",
"errorCode": "093159",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": -1,
"column": -1
}
],
"warnings": [
{
"message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 11 at position 35: APPLICATION ROLE should be created with IF NOT EXISTS.",
"cause": "APPLICATION ROLE should be created with IF NOT EXISTS.",
"errorCode": "093352",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": 11,
"column": 35
},
{
"message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 15 at position 13: CREATE Table statement in the setup script should have \"IF NOT EXISTS\", \"OR REPLACE\", or \"OR ALTER\".",
"cause": "CREATE Table statement in the setup script should have \"IF NOT EXISTS\", \"OR REPLACE\", or \"OR ALTER\".",
"errorCode": "093351",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": 15,
"column": 13
},
{
"message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 15 at position 13: Table identifier 'MY_TABLE' should include its parent schema name.",
"cause": "Table identifier 'MY_TABLE' should include its parent schema name.",
"errorCode": "093353",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": 15,
"column": 13
}
],
"status": "FAIL"
}