2

Python スクリプトで OPENJSON を使用して、基本的な JSON を SQL データベースにインポートしようとしています。最初はもっと複雑な JSON ファイルで試しましたが、この投稿のために単純化しました。ここに私が持っているものがあります:

sql_statement = "declare @json nvarchar(max) = '{\"name\":\"James\"}'; SELECT * FROM OPENJSON(@json) WITH (name nvarchar(20))" 
cursor.execute(sql_statement)
cursor.commit()
connection.close()

私が受け取るエラー:

pypyodbc.ProgrammingError: (u'42000', u"[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]キーワード 'with' 付近の構文が正しくありません。このステートメントが共通テーブル式の場合、xmlnamespaces 句または変更追跡コンテキスト句の場合、前のステートメントはセミコロンで終了する必要があります。")

このエラーが表示される理由について何か考えはありますか? 同じpypyodbc /データベース構成で他のSQLクエリを正常に実行できました。

4

1 に答える 1

8

問題は、OPEN JSON が利用できない古い互換性レベルでデータベースが実行されている可能性があります。

データベースの互換性レベルを確認するには、次の SQL ステートメントを実行します。

SELECT compatibility_level  FROM sys.databases WHERE name = 'your_db_name';

結果が 120 以下の場合は、次のコマンドを実行して、互換性レベルを 130 に更新する必要があります。

ALTER DATABASE your_db_name SET COMPATIBILITY_LEVEL = 130;

注: データベースが実際に Azure SQL DB である場合は、12.x より前のバージョンでは OPEN JSON を使用できないため、バージョンも確認する必要があります。

于 2016-07-29T09:15:21.880 に答える