問題タブ [openquery]
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.
sql-server - パラメータ付きの OPENQUERY を使用した exec ストアド プロシージャ
次の手順があります。
この行で実行すると:
というエラーが表示されますerror at line 9
私は何を間違っていますか??
tsql - SQL Server OpenQuery() の動作が TOAD からの直接クエリとは異なる
次のクエリは、TOAD (ネイティブの Oracle ドライバーを使用) を使用して Oracle 11 に対して直接実行すると効率的に機能します。
を介して SQL Server 2008 から同じ Oracle データベースに渡された場合、まったく同じクエリが返されることはありませんopenquery()
。SQL Server には、Oracle Provider OLE DB ドライバーを使用して Oracle データベースへのリンクがあります。
妥当な時間内にクエリが返されず、ユーザーがクエリを強制終了します。最終的に正しい結果が返されるかどうかはわかりません。
直接の TOAD クエリが効率的に機能し、openquery()
バージョンが「決して」返されないこの結果は再現可能です。
を少し変更するとopenquery()
、正しい効率的な結果が得られます。 に変更eff_endt
しtrunc(eff_endt)
ます。
それは良いことですが、変更が必要なようには見えません。
openquery()
TOAD とopenquery()
動作にどのような違いがあるのでしょうか?
私たちが気にする理由は、Oracle に直接アクセスする TOAD を使用して複雑なクエリを頻繁に開発するためです。クエリが機能して最適化されたらopenquery()
、SQL Server アプリケーションで使用する文字列に変換します。openquery()
クエリが直接クエリとして機能していることがわかっているときに、クエリが突然失敗することは非常に厄介です。次に、試行錯誤しながら回避策を探す必要があります。
2 つのシナリオの Oracle トレース ファイルを確認したいのですが、Oracle サーバーは別の組織内にあり、Oracle DBA から協力を得られません。
ドライバー、TOAD、または???を知っている人はいますか?不一致を説明できる問題はありますか?両方の方法で常に同じ結果が得られるように問題を解決する方法はありますか?
sql-server - SQL サーバー、開いているクエリでのリンク サーバー エラー
開いているクエリ行でこのエラーが発生する理由がわかりません。
「sys.servers にサーバー 'Server_Name' が見つかりませんでした。正しいサーバー名が指定されていることを確認してください。必要に応じて、ストアド プロシージャ sp_addlinkedserver を実行して、サーバーを sys.servers に追加してください。」
コードを部分的に実行すると動作します...
sql-server - IBM db2 は MS Sql Server からの openquery は悪いことですか? 完全に防ぐことはできますか?
IT チームから、MS Sql Server で Openquery コマンドを使用できなくなったと言われました。彼らは、すべてのクエリがテーブル全体のロードを必要とし、すべてのクエリが速度を低下させるなどの理由で、サーバーの速度を低下させる可能性があると主張しました。
OpenQuery コマンドは Access の「パススルー」クエリに似ていると思っていたので、これには少し戸惑いました。クエリは IBM サーバーに送られ、そこでコマンドが実行され、結果のみが SQL Server に返されます。インターネットで OpenQuery を読んだことがありますが、テーブル全体をロードまたは送信し、SQL Server が結果をフィルター処理しているとは信じられません。
DB2サーバーをロックダウンしてリンクサーバーをSQL Serverから防ぐことは可能だと思いますが、私の将来の知識のために、IBM DB2に接続するときにOpenQueryを使用することの危険性を誰かが説明できますか?
ありがとう、
sql-server - tsql ストアド プロシージャ内で OPENQUERY を使用する理由は何ですか?
現在、データベースでストアド プロシージャを実行するいくつかのジョブを検討しています。これらのストアド プロシージャはすべて、リンク サーバーに接続しています。私はこの機能にあまり慣れていません。私が実行しているクエリがデータを引き込んでいるように見えるため、現在、これらが通常のクエリと比較して使用された理由を判断しようとしています。
これはMSDNのopenqueryの説明です。:
http://technet.microsoft.com/en-us/library/ms188427.aspx
これは、ローカルサーバーで使用しない理由について話しているstackoverflowリンクです。:
ローカル サーバーで OPENQUERY を使用するのが悪いのはなぜですか?
私の質問は、ストアド プロシージャがリンク サーバーの埋め込み資格情報を必要とする場合に、基本的にこれを使用するだけですか? または、私が認識していない OpenQuery を使用するその他の理由はありますか?
sql-server - sp_executesql 内で OPENQUERY をどのように使用しますか?
リンクサーバーにジョブ番号が存在することを確認し、存在するかどうかを示す変数 (@JobExists) を取得しようとしています (はいの場合は 1、いいえの場合は 0)。
これを行うには、ジョブ番号のパラメーターを渡す必要があるため、sp_executesql と共に OPENQUERY を使用しようとしています。以下のコードを試してみましたが、「プロシージャーはタイプ 'ntext/nchar/nvarchar' のパラメーター '@statement' を予期しています。テスト目的で、変数 @JobNumber を宣言して設定しました。
ここでsp_executesqlを読みました:http://technet.microsoft.com/en-us/library/ms188001.aspx また、さまざまな検索を行いましたが、自分に合った答えに出くわしていません。
足りないものはありますか?
c# - リンクされたサーバーにクエリを実行できません
OpenQuery を使用して C# コードからリンクされた Oracle サーバーにクエリを実行できませんが、4 部構成の名前または OpenQuery を使用して、Sql サーバー自体からサーバーにクエリを実行できます。コードを使用すると、次のエラーが発生します。
System.Data.SqlClient.SqlException: リンク サーバー "LinkedServer" の OLE DB プロバイダー "OraOLEDB.Oracle" がエラーを報告しました。プロバイダーは、エラーに関する情報を提供しませんでした。リンク サーバー "LinkedServer" の OLE DB プロバイダ "OraOLEDB.Oracle" のデータ ソース オブジェクトを初期化できません。System.Data.SqlClient.SqlConnection.OnError (SqlException 例外、ブール型 breakConnection) で System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj) で System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream) で、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj) の System.Data.SqlClient.SqlDataReader.ConsumeMetaData() の System.Data.SqlClient.SqlDataReader.get_MetaData() の System.Data.
私のコードは次のようになります。
mysql - Openquery を使用した特別なステートメント
MS SQL Server データベースから MySQL データベースにデータを転送したいと考えています。そこで、MS SQL にリンク サーバーを追加して、Openquery を使用して MySQL データベースにデータを挿入できるようにしました。データ転送のパフォーマンスを最適化したいのですが、MySQL でのデータ読み込みのパフォーマンスを改善するためのガイドラインを見つけました。
最適化の 1 つは AUTOCOMMIT モードを無効にすることですが、Openquery を使用してそれを行うことはできませんでした。
私は両方の方法を試しました:
そして私は得ました:
オブジェクト "SET autocommit=0" を処理できません。リンク サーバー "MYSQL" の OLE DB プロバイダ "MSDASQL" は、オブジェクトに列がないか、現在のユーザーがそのオブジェクトに対するアクセス許可を持っていないことを示しています。
openquery を介してそのようなステートメントを実行することは可能ですか?
ありがとう、ミカエル