問題タブ [ado]

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.

0 投票する
3 に答える
12919 参照

asp-classic - この「複数ステップの OLE DB」エラーとは何ですか?

私は、Bangalores Best によって構築された恐ろしいソフトウェアに少し取り組んでいます。

それはほとんど古典的な ASP/VbScript で書かれていますが、ほとんどのコードは ASPX ページの古典的な ASP スタイルですが、ASP.NET に「移植」されています :(

ローカル データベースに接続しようとすると、次のメッセージが表示されます。

複数ステップの OLE DB 操作でエラーが発生しました。利用可能な場合は、各 OLE DB ステータス値を確認します。作業は行われませんでした。

このエラーの意味を知っている人はいますか? この接続文字列を使用して、ローカル マシン (SQLEXPRESS を実行) に接続します。

これは、最初に使用していた接続文字列です。データベースで再指定しただけです。

アップデート:

問題は、ADO で「統合セキュリティ」を使用していたことです。ユーザーアカウントを使用するように変更したところ、問題なく接続されました。

0 投票する
2 に答える
1312 参照

sql-server - VBScript /ASPClassicおよびADOでのパラメーター化

私はここで少し混乱しています。私が知る限り、Microsoftは、パラメータ化がSQLインジェクション攻撃からデータベースを保護するための最良の方法であると主張しています。しかし、私はここで2つの矛盾する情報源を見つけました。

このページでは、ADOコマンドオブジェクトを使用するように指示されています。しかし、このページには、コマンドオブジェクトはスクリプトに対して安全ではないと書かれています。セキュリティの脆弱性のためにコマンドオブジェクトをVBScriptまたはJScriptで使用すべきではないことをどこかで読んだことを思い出しているようですが、その記事を見つけることができないようです。

私はここで何かが足りないのですか、それともこれら2つの記事は互いに矛盾しているように見えますか?

0 投票する
2 に答える
2236 参照

sql - 1つのトランザクションでスキーマと行を更新するSQLServer2005

私は現在、ユーザーがそのテーブルの1つのスキーマの一部を指定できるようにするレガシーシステムを更新しています。ユーザーは、このインターフェースを介してテーブルの列を作成および削除できます。このレガシーシステムはADO2.8を使用しており、データベースとしてSQL Server 2005を使用しています(この獣を近代化する試みが始まる前に、どのデータベースを使用していたかを知りたくありません...しかし、私は逸脱します。=))

この同じ編集プロセスで、ユーザーは、これらのユーザー作成フィールドに格納できる有効な値のリストを定義(および変更)できます(ユーザーがフィールドに入力できる値を制限したい場合)。

ユーザーがフィールドの有効なエントリのリストを変更したときに、有効な値の1つを削除すると、新しい「有効な値」を選択して、この(現在は無効な)値を含む行をマップできます。それらは再び有効な値を持ちます。

古いコードを調べてみると、上記の変更はトランザクション内で行われないため、システムが無効な状態になることに対して非常に脆弱であることがわかりました(したがって、他の誰かが上記のプロセスの途中でやって来て、独自の変更...まあ、あなたは引き起こすかもしれない問題を想像することができます)。

問題は、単一のトランザクションでそれらを更新しようとしていることですが、コードがそのテーブルのスキーマを変更する部分に到達するたびに、他のすべての変更(行の値の更新、スキーマが変更されたかどうかに関係なく、トランザクションのその時点までに作成されたテーブルは完全に無関係なテーブルである可能性があります)サイレントにドロップされているように見えます。ドロップされたことを示すエラーメッセージは表示されず、最後にトランザクションをコミットしてもエラーは発生しません...しかし、トランザクションで更新されるはずのテーブルを調べると、新しい列のみが表示されますある。行われたスキーマ以外の変更は保存されません。

ネットで答えを探すのは、これまでのところ、数時間の無駄であることがわかっています...そこで私は助けを求めてここに向かいます。テーブルのスキーマを更新し、テーブル内の行を更新する(同じテーブルであろうと他のテーブルであろうと)ADOを介してトランザクションを実行しようとした人はいますか?許可されていませんか?この状況で役立つ可能性のあるドキュメントはありますか?

編集:

さて、私はトレースを行い、これらのコマンドはデータベースに送信されました(括弧内の説明)

(ここで何が起こっているのかわかりません。一時的なストアドプロシージャを作成しているようです...?)

(ユーザーが生成したフィールドの定義情報を保持するテーブルを取得します)

(私のコードは、現在の情報を取得して、ここでそれらのリストを繰り返し処理していたと思います)

(これは、定義の変更されたデータを入力している場所のようです。それぞれを調べて、カスタムフィールド自体の定義で発生した変更を更新します)

(これは、この保存が始まる前に、私のコードがインターフェースを介して削除されたものを削除する場所です] ...これは、このトランザクション中に実際に発生することを私が知る限り、唯一のことでもあります)

(ユーザーが作成した列のプロパティを変更したり、列のインデックスを追加/削除したりする必要があるように定義のいずれかが変更された場合は、ここで行われ、任意の行にデフォルト値が与えられます指定された列の値はまだありません...私が知る限り、ストアドプロシージャが終了したときに、これは実際には発生しないことに注意してください。)

p>

(トランザクションを閉じる...?)

p>

上記のすべての作業の後、列の削除のみが発生します。トランザクション内の前後のすべてが無視されているように見え、トランザクション中に問題が発生したことを示すメッセージがSQLトレースにありませんでした。

0 投票する
6 に答える
7041 参照

sql-server - 日付パラメーターを使用したスト​​アド プロシージャの実行: コマンド オブジェクトと接続オブジェクトの比較

パラメータを介してストアド プロシージャに日付を指定する場合、日付に使用する形式について少し混乱します。元の VBA 構文では、ADO Connection オブジェクトを使用してストアド プロシージャを実行していました。

これは、日付構文を使用して問題なく動作しますyyyy-mm-ddが、別のユーザーがコードを実行すると、13 'Type Mismatch' というエラーが表示されます。

dd/mm/yyyyいくつかの実験の後、形式で日付を指定すると、ユーザーのこのエラーが修正されることがわかりましたが、今ではエラーが発生します!

パラメーターを持つコマンド オブジェクトを使用してストアド プロシージャを実行すると、日付の形式に関係なく機能します (ADO が舞台裏で形式を処理していると思います)。yyyy-mm-ddこの形式を使用すると、SQL Server で普遍的に機能すると思いましたか?

この問題がユーザー固有のように見える理由についても当惑していますか? SQL Server での私の既定の言語が「英語」であるのに対し、他のユーザーの既定の言語は「英国英語」であることに気付きました。これが問題の原因になる可能性はありますか?

Access 2003 および SQL Server 2000 で ADO 2.8 を使用しています。SQL Server ログインは Windows 統合セキュリティ経由です。

0 投票する
1 に答える
499 参照

ado - ADO を使用した結合テーブルの行の削除

別のフォーラムでこの質問を見たことがありますが、受け入れられる回答がありませんでした。

Groups テーブルと Elements テーブルの 2 つのテーブルがあるとします。テーブルには定義済みの関係がありません。Elements テーブルには、Groups テーブルの IdGroup (PK) フィールドを参照する IdGroup フィールドがあります。

ADO レコードセットを介して次のクエリを使用して、テーブルの値をデータグリッドに入力します。

そのグリッドから、要素を削除するために Delete キーを押したいと思います。これが私の問題です。DAO を使用したとき、DAO の Delete() 関数は Elements グループのレコードのみを削除しました。これは予期された動作でした。

ADO に変更すると、Delete() 関数によって、要素レコードと要素が属するグループの両方のテーブルのレコードが削除されました。

テーブルにリレーションシップを定義せずに、ADO で DAO の動作を再現する方法はありますか?

注: 代替手段があることは知っています (DELETE クエリを実行すると、うまくいく可能性があります)。ADO でこれを行う方法を教えてください。または、できないと言ってください。

0 投票する
7 に答える
31176 参照

database - VB6 で SQLITE を使用する

現在、再配布可能なアプリに MSAccess mdb ファイルを使用しています。

少し前に、私のソリューションの代替として SQLite について知りましたが、それらが提供するバイナリは、VB6 でオブジェクトとして使用する可能性を提供しません。(または、少なくとも私はその方法を理解できませんでした)。

誰かがリンクを持っているか、VB6 から SQLite DB に接続すること、および ADO を使用する場合との違いについて少し書くことができますか?

0 投票する
6 に答える
63952 参照

delphi - OLEDB ドライバーがシステムにインストールされているかどうかを確認する方法は?

アプリケーションの起動時に特定の OLEDB ドライバーがインストールされていることを確認するにはどうすればよいですか? Delphi の ADO を使用しており、ドライバが見つからない場合に説明的なエラー メッセージを表示したいと考えています。ADO から返されるエラーは、常にユーザー フレンドリーであるとは限りません。

インストールされているすべてのドライバーを返す素敵な小さな関数があるかもしれませんが、私はそれを見つけていません。

0 投票する
2 に答える
6315 参照

vba - ADO レコードセットのテキスト フィールドを数値として並べ替える

ADODB.RecordsetVBAを使用すると、すべての列を として返す関数のセットがありますadVarChar。残念ながら、これは数値がテキストとしてソートされることを意味します。したがって、1,7,16,22 は 1,16,22,7 になります。

列のタイプを変更せずに数値をテキスト列としてソートできる方法はありますか?

注意: 私は Project 2003 と Excel 2003 を使用しており、Microsoft ActiveX DataObject 2.8 Libraryを参照しています。

0 投票する
2 に答える
9675 参照

iis - IIS 接続プールの調査/リークの追跡

この有用な記事に従って、W2k3 を実行している IIS 6 サーバー上の一部のアプリケーションで接続プール リークがあることを確認しました。

難しいのは、このサーバーの 700 人の開発者によって作成された 300 の Web サイトを 6 つのアプリケーション プールで提供していることです。その 50% は .NET 1.1 であり、CLR データ パフォーマンス カウンターに接続さえ表示されません。すべてが .NET 2.0 以降であれば、自分の側で接続が拡大するのを見ることができますが、そのスリムな監視ツールではうまくいきません。

私の 300 の Web サイトは、おそらく 100 以上のデータベースに接続しており、それらは Oracle、SQLServer、異常値の間に広がっているため、データベースからの接続が終了するのを見ることもできません。

今のところ、私の最善かつ唯一の計画は、最悪の犯罪者を大まかに二分探索することです. アプリケーション プールを強制終了し、そのプールからアプリケーションをゆっくりと削除します。プールを強制終了したときに、どの個々のアプリケーションで最も多くの接続が切断されるかがわかるまで続けます。しかし、これは生産用のボックスであり、私は継続的な雇用が好きなので、追跡方法としては数週間かかる可能性があります.

IIS接続プールに問い合わせて、その起源または所有者を知る方法を知っている人はいますか? 作成時にアタッチできる MSMQ トリガーはありますか? 私が見落としているばかげたことはありますか?

ケビン

(他のユーザーが検索で回答を見つけやすくするためにエラー コードを含めます: 例外: System.InvalidOperationException メッセージ: タイムアウトが発生しました。プールから接続を取得する前にタイムアウト期間が経過しました。これは、プールされたすべての接続が使用し、最大プール サイズに達しました。)

0 投票する
5 に答える
1689 参照

ms-access - ADO を介して Access DB を開き、自分は書き込み可能で、他のユーザーは読み取りしかできないようにするにはどうすればよいですか?

ドキュメントから、私は adModeShareDenyWrite がその方法であると期待していますが、正しく機能していません。

ADO 経由で Access データベースを使用しています。私の接続文字列は Mode=8 で、これは adModeShareDenyWrite です。しかし、テーブルから行を削除しようとすると、次のようになります。

詳細不明のエラー、説明: 指定されたテーブルから削除できませんでした。、ソース: Microsoft JET データベース エンジン

つまり、この設定により、ME は自分の接続を使用してデータベースを更新できなくなります。

同じことを報告している Web 上の他の投稿をいくつか見つけました。

管理者がアクセス許可を変更する必要のないソリューションを探しています。私のプログラムが制御できるものである必要があります。

ここでの私の動機は、データベースが破損する可能性を最小限に抑えることです。Microsoft が文書化した mdb ファイルの破損の原因の 1 つは、2 つのアプリが同じデータベースに書き込むことです。そのため、1 つのアプリのみがデータベースへの書き込み接続を持つことができるようにしたいと考えています。他の人は読むことができますが、書き込もうとすると失敗するはずです。最初に接続を確立した人が勝ちます。