問題タブ [msdasql]
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.
excel - vb6を使用してExcelから抽出する無視された列
vb6 を使用して Excel (2003) スプレッドシートから値のテーブルを抽出しようとしています。その結果は (adodb) レコードセットに保存する必要があります。テーブルは次のようになります。
SELECT * FROM [Sheet1$]
クエリ " " または列固有のクエリ " " (脚注 1 を参照)を接続して実行しSELECT [Option#6] FROM [Sheet1$]
、結果をループすると、正しい値 5、6、および 7 ではなく、Null
行-->の値が与えられます。スプレッドシートへの接続は、有効なテーブル制限を決定する「最良の推測」を使用しているようで、設定された行数のみが考慮されます。 Name9
Option.4
Option.6
スプレッドシートに接続するために、両方の接続プロバイダーを試しましMicrosoft.Jet.OLEDB.4.0
たMSDASQL
が、同じ問題が発生します。
私が使用する接続設定は次のとおりです。
この問題は、行数が 8 行 (列名を除く) を超えている場合にのみ発生MaxScanRow=0
し、MSDASQL
接続を設定しましたが、同じ結果になりました。
私が含めた注目すべきプロジェクトの参考資料は次のとおりです。
- MS ActiveX データ オブジェクト 2.8 ライブラリ
- MS ActiveX データ オブジェクト レコードセット 2.8 ライブラリ
- MS Excel 11.0 オブジェクト ライブラリ
- MS データ バインディング コレクション VB 6.0 (SP4)
この問題で何か助けていただければ幸いです。
(1) なぜかカラム名に小数点を含めると#と解釈される。
みんな、ありがとう!KB155512 onedaywhenの優れた投稿Schema.ini
から「プログラムで」セットアップしようとしている途中で、解決策が示されました。
同様の問題を抱えている人には、投稿とコメントを読むことをお勧めします。解決策は人によってわずかに異なるためです.
sql-server-2005 - リンクサーバー"(null)"のOLEDBプロバイダー"MSDASQL"のデータソースオブジェクトを初期化できません
興味深い問題があります。Sql2005のOpenRowsetを介してサーバー上のExcelファイルから読み取っています。クエリを何回も問題なく実行しました。簡単な会議に出かけたところ、突然「リンクサーバー「(null)」のOLEDBプロバイダー「MSDASQL」のデータソースオブジェクトを初期化できません」というエラーが表示されます。
サーバーでファイルが使用されていないことを確認し、ファイルを削除してサーバーに再コピーしましたが、それでも同じエラーが発生します。
更新:これは、異なるopenrowsetからの2つの選択に参加した場合にのみ発生するようです。クエリを個別に実行しても、正常に機能します。私は以前に問題なく参加しました。アイデア?
utf-8 - リンクサーバーとODBCを使用した「要求された変換はサポートされていません」
私たちのWebアプリケーションは、UTF-8でエンコードされたデータをVARCHARフィールドに格納します。最近、DataDirectのOpenAccessODBCドライバーを使用してODBC経由でこのデータにアクセスできるようになりました。これは、DataDirectのOpenAccess SDKを使用して実現され、サービスとインターフェイスするC#.Netクラスを記述します。お客様はSELECTクエリのみを実行できます。また、現時点では結果を100K行に制限しています。
このソリューションは、このエンコードされたデータの一部を使用してフィールドをクエリすることは、当然のことながら、ユーザーにはぎこちないように見えることを除いて、実際にうまく機能します。私たちのサービスの次のリリースでは、エンコードされていない文字列を使用してクエリを実行し、その後エンコードされていない結果を表示する機能をユーザーに提供したいと思います。
着信クエリをUTF-8でエンコードし、VARCHARフィールドにフラグを付けてエンコードされていない結果を返すことでこれを解決しました。これはWVARCHARでした。これは実際に非常にうまく機能しています。ただし、Unicode文字が存在する(または存在しない)にもかかわらず、すべてのVARCHAR列がWVARCHARとして返されることを意味します。
現時点では、多くのお客様が独自のSQL ServerインスタンスでSSMSにリンクサーバーを作成する方法を採用しており、これが私の推奨する接続方法です。サービスでは結果が100K行に制限されているため、OPENQUERYを使用してクエリを実行することをお勧めします。ただし、SSMSのリンクサーバーの構成に不足しているものがあるようです。これらのWVARCHAR列に対して文字列関数(LEFT、RIGHT、SUBSTRINGなど)を実行すると、SSMSは次のエラーを返します。
リンクサーバー「LOCAL」のOLEDBプロバイダー「MSDASQL」は、「要求された変換はサポートされていません。」というメッセージを返しました。メッセージ7341、レベル16、状態2、行1リンクサーバー「LOCAL」のOLEDBプロバイダー「MSDASQL」から列「[MSDASQL].ColName」の現在の行の値を取得できません。
これは、次のようなクエリに対して返されます。
このクエリから関数を削除するLEFT
と、FirstName列が返され、エラーなしで適切にデコードされます。
この問題は、たとえばMSExcelのクエリには影響しません。また、表面的には、DataDirect製品にインターフェイスする.Netクラスをデバッグするときに、文字列はそれぞれの機能によって適切に影響を受けるように見えます。リンクサーバーのプロパティですべてのサーバーオプションを変更しようとしましたが、適切な組み合わせを見つけることができませんでした。ここで吠えるのにぴったりの木を探しています。結果をWVARCHARに変更して処理するのですか?それとも、SSMSリンクサーバーの属性を変更する必要があるのでしょうか。
odbc - リンク サーバーの INSERT、UPDATE、および DELETE が「不明なプロバイダー エラー」で失敗する
突然、特定のファイル (AS/400 であると思われるリモート システム内のテーブル) の INSERT、UPDATE、および DELETE が失敗します。
使用するリンク サーバーは SQL Server でセットアップされ、ODBC データ ソース (DSN) を使用しています。データ ソースは、「iSeries Access for Windows の ODBC データ ソース」です。
この問題が発生するテーブルは 1 つだけです。エラーなしで、同じリンク サーバーを使用して他のテーブルで挿入と更新を行うことができ、SELECT は問題のあるテーブルに対して引き続き機能します。
INSERT および UPDATE ステートメントに対して次のメッセージが表示されます (以下のコードではサーバー名と DB 名が置き換えられています)。
そして、DELETE は次のメッセージを表示します。
これについて何か手がかりがあれば、遠慮なくこの質問に答えてください。
ありがとう、アンドレアス
sql-server-2008 - SQL Server リンク サーバーでの Timberline ODBC エラー: データ ソース オブジェクトを初期化できません
土台を築くだけです:
- 64 ビット Windows サーバーには、SQL Server 2008 R2 の 64 ビット インストールがあります。
- 同じマシンに 32 ビット バージョンの SQL Server Express をインストールしました
32 ビット Express バージョンを使用して、次のように Timberline データ ストアへのリンク サーバーを正常に作成しました。
/li>
次に、すべてのテーブルを返します。
また、次のようにユーザーを作成しました。
また、SSMS クエリ ウィンドウ内で、マスター データベースに対して実行すると、これはうまく機能します。
SSMS 内からクエリを実行する限り、すべてが正常に機能します。ただし、そのリンク サーバーにアクセスしようとする可能性のあるサードパーティ ツールを起動すると、問題が発生し始めます。接続文字列を入力してクエリを実行できる小さなクエリ テスト ツールがあります。この接続文字列を使用して、最初にマスター データベースにアクセスします。
その接続は機能し、サーバーに ping を実行してマスター データベースにクエリを実行できます。しかし、同じ Timberline クエリ (select * from timberlinetest....) を試すと、次のエラーが発生します。
リンク サーバー "timberline test" の OLE DB プロバイダー "MSDASQL" のデータ ソース オブジェクトを初期化できません。リンク サーバー "timberline test" の OLE DB プロバイダー "MSDASQL" から、"[Sage Timberline Office][Sage Timberline Office ODBCDriver][DRM File Library] 無効なアカウント名" というメッセージが返されました。
注意すべき点がいくつかあります...テスト目的で:
- ディレクトリ
c:\Training\Extended
で、セキュリティ全体を開き、Everyone
完全な読み取り/書き込み権限に設定します - Timberline 自体で、セキュリティを無効にしました ([ツール] > [セキュリティ管理者] > [セキュリティ設定] > [アプリケーション セキュリティを有効にする] のチェックを外しました)。
ここで他に何をすべきかわかりません。どんなアドバイスも素晴らしいでしょう。
sql-server - SQL Server 2000 で Biztalk Server バックアップ ジョブが失敗する
バックエンドで SQL Server 2000 と連携する Biztalk Server があります。Biztalk が作成した完全バックアップ用のバックアップ ジョブと Tran Log バックアップが、突然次のようなエラーで失敗し始めました。サービス アカウントを使用します。MSDASQL に関するあらゆるヘルプを歓迎します。
OLE DB プロバイダー 'MSDASQL' がエラーを報告しました。認証に失敗しました。
[SQLSTATE 42000] (エラー 7399)
ユーザー '(null)' のログインに失敗しました。理由: 信頼された SQL Server 接続に関連付けられていません。
[SQLSTATE 01000] (エラー 7312)
OLE DB エラー トレース [OLE/DB プロバイダー 'MSDASQL' IDBInitialize::Initialize が 0x80040e4d を返しました: 認証に失敗しました]。
[SQLSTATE 01000] (エラー 7300)
ステップは失敗しました。
sql-server - リンク サーバー: OLE DB プロバイダー "MSDASQL" のスキーマ行セット "DBSCHEMA_INDEXES" を取得できません
ODBC リンク サーバー接続を介して、SQL Server Management Studio から Teradata の特定のテーブルから選択する場合
特定のテーブルでは上記のエラーが発生しますが、他のテーブルでは発生しません。ランダムに思えます。
エラーの詳細:
リンク サーバー "TD" の OLE DB プロバイダー "MSDASQL" から、"複数ステップの OLE DB 操作でエラーが発生しました。利用可能な場合は、各 OLE DB ステータス値を確認してください。作業は行われませんでした。" というメッセージが返されました。メッセージ 7311、レベル 16、状態 2、行 3 リンク サーバー "TD" の OLE DB プロバイダー "MSDASQL" のスキーマ行セット "DBSCHEMA_INDEXES" を取得できません。プロバイダーはインターフェイスをサポートしていますが、使用時にエラー コードを返します。
openedge - MSDASQL の WHERE 句を使用した SUBSTRING でエラーが発生する
データを DB テーブルにロードする Progress OpenEdge アプリケーションの機能をテストしています。私がテストしているテーブルのフィールドの多くは、アプリケーションによって 256 文字に制限されているため、いくつかのエッジ ケース テストを行って、256 文字より小さい、等しい、またはより大きいエントリをロードしようとしています。データのロード後、DB にクエリを実行し、結果を検証します。テスト プログラム TestComplete を通じて、ODBC ドライバー用の OLE DB プロバイダーを使用しています。これは私が使用しているクエリです:
テストを実行する前は、ODBC ドライバーはこのクエリに問題はありませんでした。しかし、実行した後、このテーブルには 256 文字のフィールドがあり、ODBC ドライバーはその長さのデータに問題を抱えています。を使用してそれを回避しようと考えましたSUBSTRING
が、このクエリを使用しようとすると、まだ検証エラーが発生します。
The specified query is invalid. Database engine reports: [DataDirect][ODBC Progress OpenEdge Wire Protocol driver]Error in row
参考になります!これは、ODBC が好む長さよりも長いデータがテーブルにある場合によく見られるエラーです。奇妙なことに、このWHERE
句を削除すると、SUBSTRING
.
これは、フィールドに ODBC ドライバーが想定するよりも多くの文字があるためですか、それとも句に関連する何かWHERE
(構文が正しくないなど) のためですか? どうすれば回避できますか? dbtool を使用して設定を変更せずにこれを実行したいと考えています。テストを正確に行うには、DB に特定の設定を行うことが重要です。
mysql - MySQL > SSMS 2012 リンク サーバー「要求された変換はサポートされていません。」
この小さな宝石のおかげで、しばらくの間、私は前進し続けてきましたが、私はまだそれほど前進していません.
環境
- SSMS 2012 SP1 (ターゲット) (サーバー 2012 64 ビット)
- MySQL (ソース)
- ODBC 5.3 64 ビット Unicode ドライバーを使用するリンク サーバー
テーブルを MySQL から SSMS に移植しようとしています。テーブルの大部分は正常に動作します....8000文字を超えるキャストされた列に到達するまで。
私は問題を抱えていたので、問題のあるColumnmを選択しようとしました
シンプルな実行
エラーを返します
だから私はそれから試しました
これは同じエラーを返します
SSMSでデータを表示することさえできないように見えるので、私は完全に混乱しています(元のMySQLキャストに基づくいくつかのルールに従ってフィールドをキャストするスクリプトを持っています)
私が言うように、他の分野の大多数にとっては問題ではありません。
RogueCol の MySQL キャストは varchar(32767) です。
MSDASQL プロバイダーで有効な設定は次のとおりです。
- ネストされたクエリ
- レベルゼロのみ
- インプロセスを許可
- 「いいね」をサポート
これまでのところ、次のようなさまざまなフォーラムで「発見」した多くのことを試しました。
- 実際の呼び出しで CASTING、CONVERTING、LEFT、LTRIM(RTRIM())。
- TOP 1レコードに制限しようとしました(LEN = 45、文字列に空白や外国の文字はありません)
- ANSI バージョンの ODBC ドライバーをセットアップする
- ODBC ドライバー内のさまざまな設定 (大きな結果セットを許可する、文字セットを変更する、列を 32 ビットに制限する、文字をスペースで埋めるなど)
これには気が狂ってしまうので、あなたの集合的な知識を求めて、さらに提案をお願いできますか?
どうもありがとう