2

Azure SQL データベースに挿入または追加しようとしたときに発生するエラーをトラブルシューティングしようとしています。

私が得ているエラー:

エラー: Write Data In-DB (353): "NoTable" で PreSQL を実行中にエラーが発生しました: Microsoft OLE DB Provider for SQL Server: テーブル 'CHART' の ID 列の明示的な値は、列リストが使用されている場合にのみ指定できます。 IDENTITY_INSERT が ON です。\42000 = 8101

挿入を実行するために使用しているツールはAlteryx 10.0です。これは、優れたデータ ブレンディングおよび高度な分析ツールであり、具体的には Write Data In-Database ツールです。

私は土曜日の朝からこれを理解しようとしてきましたが、うまくいきませんでした。今晩、私は OLE 接続文字列を調べて、手掛かりが得られるかどうかを確認することにしました。接続文字列でUse Procedure To Prepareパラメータに遭遇しました。ドキュメントは、このパラメーターが一時ストアド プロシージャの作成方法と解放方法を決定することを示しています。次の 2 つの設定が可能です。

  1. コマンドが準備されると、一時ストアド プロシージャが作成されます。セッションが解放されると、一時ストアド プロシージャはすべて削除されます。

  2. コマンドが準備されると、一時ストアド プロシージャが作成されます。コマンドが準備されていない場合、新しいコマンドが指定された場合、またはコマンドへのすべてのアプリケーション参照が解放された場合、プロシージャは削除されます。

質問 1:一時ストアド プロシージャはグローバル一時テーブルに依存していますか? もしそうなら、Azure SQL データベースはグローバル一時変数をサポートしていないため、これが私のエラーの原因である可能性がありますか?

質問 2:パラメータはUse Procedure To Prepareオプションですか? これが実際に私が直面している問題である場合、このパラメーターを接続文字列から削除して、グローバル一時テーブルの作成を回避できることを願っています。

編集: ID 列に挿入しようとしていることを示すエラー メッセージにもかかわらず、そうではありません。「テーブルがありません」というエラー メッセージの冒頭は、システムがAzure SQL でサポートされていないグローバル一時テーブルを探しているというヒントだと思います。

ご入力いただきありがとうございます。

4

1 に答える 1

1

答え

テーブル 'CHART' の ID 列の明示的な値は、列リストが使用され、IDENTITY_INSERT が ON の場合にのみ指定できます。

このエラー メッセージは、テーブル内の列にINSERTデータを入力しようとしていることを示しています。また、解決策を提案します。列リストを含めて ID 挿入をオンにします。次のようにできます。IDENTITYCHART

SET IDENTITY_INSERT CHART ON;

INSERT CHART(column1, column2)
VALUES (value1, value2);

SET IDENTITY_INSERT CHART OFF;

または、ID 値を挿入しようとせず、それを SQL Server に任せることもできます。IDENTITY列は、SQL Server が自動的に計算する値です。手動で設定したい場合は、そのことを明示する必要があります。手動で設定したくない場合は、VALUESリストに値を含めません。

こちらもご覧ください

IDENTITY (プロパティ)

IDENTITY_INSERT を設定

于 2015-09-14T23:26:37.573 に答える