問題タブ [sqlbulkcopy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - SqlBulkCopy が SQL Server 2000 でデッドロックを引き起こす
私は.NET 3.5でカスタマイズされたデータインポート実行可能ファイルを持っています.SqlBulkCopyは基本的に大量のデータをより高速に挿入します。このアプリは基本的に、入力ファイルを取得し、データを処理して SQL Server 2000 に一括アップロードします。このアプリは、SQL 2008 データベース環境でアプリを構築していたコンサルタントによって作成されました。そのenvの違いがこれを引き起こしているでしょうか?SQL 2000 には、BulkCopy のベースとなっている bcp ユーティリティがあります。そのため、これを実行すると、デッドロック エラーが発生しました。
エラーの詳細: トランザクション (プロセス ID 58) は、別のプロセスとのロック リソースでデッドロックされ、デッドロックの犠牲者として選択されました。トランザクションを再実行します。
私はそれを解決しようとする多くの方法を試しました。接続文字列変数 MultipleActiveResultSets=true を一時的に設定するなど、理想的ではありませんが、それでもデッドロック エラーが発生します。また、接続タイムアウトの問題ではないことも確認しました。
これが関数です。何かアドバイス?
c# - SQL BulkCopy に関する質問
一括挿入と一括コピーを同時に行うにはどうすればよいですか? 2 つのテーブルが相互に依存しているため、一括コピーの影響を受ける必要があります。
したがって、テーブル 1 の挿入中にレコードが停止した場合、ロールバックされ、テーブル 2 が更新されないようにしたいと考えています。また、テーブル 1 が正常に挿入され、テーブル 2 の更新が失敗した場合、テーブル 1 はロールバックされます。
これは一括コピーで実行できますか?
編集
C# を使用して一括挿入を行っていることを言及する必要がありました。
このように見えますが、これは私が取り組んできた例です。そのため、ストアド プロシージャに変更する必要があるかどうかはわかりません (どのように表示されるか、C# コードがどのように表示されるかはわかりません)。
c# - c#でデータテーブルの数値フィールドにnull値を挿入する方法は?
私の動的に生成されたデータテーブルには、次のフィールドが含まれていると考えてくださいId,Name,Mob1,Mob2
私のデータテーブルにこれがあれば、正常に挿入されます。
でもこうなると失敗してしまい、
The given value of type String from the data source cannot be converted to type decimal of the specified target column.
csvファイルを読み込んでデータテーブルを生成し、
C#でBulkCopy中に数値フィールドにnull値を挿入する方法についての提案...
編集:
これを試してみましdt.Columns["Mob2"].AllowDBNull = true;
たが、うまくいかないようです...
c# - iisで実行されているasp.netWebサイトでのsqlbulkcopyのこの奇妙な動作はなぜですか?
SqlClient.SqlBulkCopy
csvファイルをデータベースに一括コピーするために使用しています。..WriteToServerメソッドを呼び出した後、次のエラーが発生します。
「データソースからのString型の指定された値は、指定されたターゲット列の10進数型に変換できません。」
これが私のコードです、
Visual Studio開発サーバーで実行している場合はエラーは発生しませんが、IISで実行している場合はエラーが発生します。
これが私のSQLサーバーテーブルの詳細です。
c# - SQL BulkCopyの後にPrimaryKeyIDを取り戻すことは可能ですか?
私はC#を使用しており、SqlBulkCopyを使用しています。でも問題があります。あるテーブルに一括挿入してから、別のテーブルに別の一括挿入を行う必要があります。
これら2つにはPK/FKの関係があります。
したがって、これらのテーブルには1対1の関係がありますが、テーブルBに必要なため、マスインサートが作成したすべてのPKIDを取得する方法がわかりません。
編集
私はこのようなことをすることができますか?
これにより、SQLバルクコピーで挿入されたすべての行が検索されます。これから結果を取得し、SPからそれらを使用して一括挿入を実行する方法がわかりません。
これで私が見ることができる唯一の問題は、ユーザーが一度に1つずつレコードを実行していて、このステートメントが同時に実行される場合、「製品レビューテーブル」に行を2回挿入しようとする可能性があることです。
つまり、あるユーザーが手動の方法を使用し、別のユーザーがほぼ同時に大量の方法を使用するようになったとします。
手動の方法。 1.ユーザーがデータを送信します2.Linqto sql製品オブジェクトが作成され、データが入力されて送信されます。3.このオブジェクトにはProductIdが含まれています。4。製品レビューテーブル用に別のlinqtosqlオブジェクトが作成され、挿入されます(手順3の製品IDが一緒に送信されます)。
マスウェイ。 1.ユーザーは、データを共有しているユーザーからデータを取得します。2.共有ユーザーからのすべてのProduct行が取得されます。3.製品行へのSQL一括コピー挿入が発生します。4.私のSPは、Productテーブルにのみ存在し、他のいくつかの条件を満たすすべての行を選択します。5.一括挿入はそれらの行で発生します。
したがって、ステップ3(手動の方法)がステップ4(大量の方法)と同時に発生している場合はどうなりますか。同じ行を2回挿入しようとすると、プライマリ制約が実行されると思います。
c# - 問題のある列を見つける方法は?文字列からint32に変換できません
SqlBulkCopyを使用しています。そこで、データテーブルを作成し、その列を指定してから、データテーブルに行を追加してから、データテーブルを挿入してみました。
System.InvalidOperationExceptionはユーザーコードによって処理されませんでしたMessage=データソースからのString型の指定された値は、指定されたターゲットのint型に変換できません
しかし、私はこのエラーを受け取り続けます。問題は、私には3つのint列があり、どれであるかわかりません。
私は各int列にそのタイプを入れました。
まだ問題があるようです。では、スタックトレースまたはintのどこで例外が発生し、実際の列が停止するのでしょうか。
c# - SqlBulkCopyColumnMappingCollectionの使用方法は?
パラメータを介して特定のデータを渡すことにより、すべての一括挿入に使用できる1つのSqlBulkCopyメソッドを作成したいと思います。
今、私はそれらのいくつかにマッピングを行う必要があります。SqlBulkCopyColumnMappingCollectionを作成する方法がわかりません。これは、マッピングコレクションを渡して使用する計画だったためです。しかし、どうやって作るのかわかりません。新しいオブジェクトを作成することはできません。
これは私が今持っているものです。どうすればそれを追加できますか?マッピングはそれを渡しますか?
c# - リレーショナル (正規化) データ テーブルを SQL Server 2008 データベースに高速挿入
現在使用しているLinqよりもかなり大量のデータ(〜50K行)を挿入するためのより優れた高速な方法を見つけようとしています。ローカル データベースに書き込もうとしているデータは、WCF からシリアル化されて受信された ORM マップ データのリストにあります。私は SqlBulkCopy を使用したいと思っていますが、問題は、テーブルが正規化されており、実際には 1 対多の関係を持つシーケンスまたは相互接続されたテーブルであることです。
私の要点を示すコードを次に示します。
dbAccess.InsertMeeting は次のようになります。
ご回答ありがとうございます。ボジャン
exception - SqlBulkCopy でのエラー処理 - もっと難しいことはありますか?
ここではアイデアが非常に不足しています。SqlBulkCopy を使用してデータを DB に送り込むケースがあり、途中でさまざまな例外 (主キー違反、インデックス違反など) に遭遇しました。
違反が事実であり、データで修正する必要があることを確認しました。ただし、腹立たしいのは、DataAdapter を使用して DB に書き込むと (はるかに遅くなります)、DataSet の不良行で HasErrors がオンになるため、簡単に見つけて対処できることです。SqlBulkCopy で? ジルチ。なだ。あなたが得るのはエラー名だけなので(「yada yada yadaの主キー違反、何とか何とか」など)、それだけです。
助言がありますか?これらのエラーを取得する方法がないとは信じられません。標準の BCP を使用すると、これらをログ ファイルに出力することもできると思います。SqlBulkCopy でこのようなことはできませんか?
どうも、
c# - Byte[] DataTable列エラーを伴うSqlBulkCopy
Binary(4) データベース テーブル フィールドに挿入しようとしている byte[] 列として、列の 1 つを持つデータ テーブルを含む厳密に型指定されたデータセットがあります。問題なく byte[] 列の値を設定できますが、データテーブルに対して sqlbulkcopy を実行すると、次の例外が発生します。
「データ ソースからの Int32 型の指定された値は、指定されたターゲット列のバイナリ型に変換できません。」
データテーブルは大きなデータテーブルであり、sqlbulkcopy はデータテーブルとデータベース テーブルから byte[]/binary(4) 列を引いたもので正常に動作します。以下は、.NET 2.0 を使用して SqlBulkCopy を壊している挿入したコードです。