問題タブ [linked-server]

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 投票する
1 に答える
3233 参照

sql-server - SQL リンク サーバーにクエリを実行できません -> MS Access をリモートで、サーバー上でのみ動作します

リモート サーバー (LAN) 上の SQL Server 2008 Express インスタンスにクエリを実行する C# アプリケーションに取り組んでいます。

ワークステーション/開発マシンにいるときは、SQL Server Management Studio を開き、Windows 認証を介して SQL インスタンスに接続できます。すべての意図と目的のために、エクスペリエンスはサーバー上の SSMS で作業するのと同じです。私が知る限り、サーバー上でできることはすべて自分のワークステーションから実行できます。

同じサーバーが Access 2003 .mdb ファイルをホストし、SQL インスタンスでリンク サーバーとして設定されます。

問題のクエリは、SQL データベースと Access データベースのテーブルを結合してコンパイルされた結果セットを返します。

サーバー上でクエリを実行すると、つまり、サーバー マシンで SQL Server Management Studio を実行すると、すべてが期待どおりに機能します。ただし、開発マシンから同じクエリを実行しようとすると、SSMS で実行する場合でも、統合テストを実行したりアプリケーションをデバッグしたりする場合でも、リンク サーバーでは何もできません。SSMS で確認できますが、何かを実行しようとすると、次のようになります。

<DatabaseNameリンク サーバー ' >'の OLE DB プロバイダー 'Microsoft.Jet.OLEDB.4.0' のデータ ソース オブジェクトを初期化できません。

このエラーに関連する多くのスレッドを調べ、プロバイダー設定の多くの順列を試しましたが、すべて役に立ちませんでした。

  • Access DBにはパスワードがありません(パスワードなしで名前「Admin」を使用するようにセキュリティを設定しようとしました)
  • ワークステーション ユーザー アカウントには、Access DB が配置されているサーバー ディレクトリに対する完全なアクセス許可があります。
  • Win XP Pro SP3 のサーバーで同じ動作が発生し、現在は Win Server 2003 で発生しています。
  • Win XP Pro SP3 と同じ動作がクライアントで発生し、現在は Win 7 Pro x32 で発生しています。

リモートではなく、サーバー上でうまく機能します。

大変助かりました。

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

c# - C# .NET からの SQL サーバーのタイムアウト 2000

SQL Server 2000 と 2 つのリンク サーバーを使用しているときに奇妙な問題が発生しました。2 年間、私たちのソリューションは滞りなく実行されてきましたが、昨日突然、あるデータベースから別のデータベースにデータを同期するクエリがタイムアウトし始めました。

データが必要な注文を含むサーバーにリンクされている生産ネットワークのサーバーに接続します。

クエリにはいくつかの結合が含まれていますが、基本的にこれは何が行われたかを要約したものです:

明らかに、問題を解決するための最初の試みは、タイムアウト制限を元の 5 分から増やすことでした。しかし、30分に到着してもタイムアウトが発生したとき、何か他のことが起こっているのではないかと疑い始めました. クエリの実行時間が 5 分未満から一晩で 30 分以上になることはありません。

SQL クエリ (元は C# コードでした) をログに出力し、クエリ アナライザーでデータベース サーバー上で直接クエリを実行することにしました。驚いたことに、クエリは 10 秒もかからずに正しく実行されました。

そのため、単純なテスト プログラムで SQL の実行を分離し、このソリューションを最初に実行したサーバーと、データベース サーバーでローカルに実行したときの両方で、同じクエリ タイムアウトを観察しました。また、ストアド プロシージャを作成してプログラムから実行しようとしましたが、これもタイムアウトします。Query Analyzer で実行すると、数秒もかからずに正常に動作します。

この問題は、C# プログラムからこのクエリを実行した場合にのみ発生するようです。以前にそのような動作を見て、その解決策を見つけた人はいますか?

更新: サーバーで SQL プロファイラーを使用しました。明らかな違いは、.NET プログラムからクエリを実行すると、"exec sp_executesql N'INSERT INTO ...'" としてログに表示されますが、クエリ アナライザーから実行すると、通常のクエリとしてログに記録されることです。 .

さらに、プログラムと同じ SQL ユーザーを使用して SQL Query Analyzer に接続しようとしましたが、これが Query Analyzer でも問題を引き起こしました。そのため、sql ユーザーを使用して TCP/IP 経由で接続する場合にのみ問題が発生するようです。

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

sql-server - SQL Server 2000 を使用して Oracle リンク サーバーの分散トランザクションを実行する

SQL Server 2000 を使用して、単一の Oracle リンク サーバーに対して分散トランザクションを実行しようとしています。次のスクリプトを思い付きました。

スクリプトが実行されるとすぐに、次のエラーが発生し、続いて SQL Management studio がフリーズして接続を閉じます。

メッセージ 7399、レベル 16、状態 1、行 3
リンク サーバー "WSF08_CONTA_ORADATA_II" の OLE DB プロバイダー "OraOLEDB.Oracle" がエラーを報告しました。プロバイダーは、予期しない壊滅的な障害を報告しました。
メッセージ 7303、レベル 16、状態 1、行 3 リンク サーバー "WSF08_CONTA_ORADATA_II" の OLE DB プロバイダー "OraOLEDB.Oracle" のデータ ソース オブジェクトを初期化できません。

何が起こっている?

*PD:

  1. 通常のクエリを使用してデータを作成/更新/削除できますが、DISTRIBUTED TRANSACTION句が含まれているとエラーが表示されます。
  2. 私たちは最近、サーバーを Oracle 10g にアップグレードまたはリンクしました。
0 投票する
1 に答える
3548 参照

sql-server - リンクサーバーから返されたエラーメッセージをキャプチャするにはどうすればよいですか?

リンクサーバーから返されたエラーメッセージをキャプチャするにはどうすればよいですか?

例として、SQL Server ManagementStudioで次のコマンドを実行した場合:

次の結果が得られます。

リンクサーバー「my_linked_server」のOLEDBプロバイダー「MSDASQL」が「[Informix][InformixODBCドライバー][Informix]指定されたテーブル(xxx)がデータベースにありません。」というメッセージを返しました。ErrorNumber ... 7215 ErrorSeverity ... 17 ErrorState ... 1 ErrorProcedure ... ErrorLine ... 3ErrorMessage...リモートサーバー'my_linked_server'でステートメントを実行できませんでした。

SQLServerはOLEDBプロバイダーエラーを保存しますか?(デバッグのためにこの情報をキャプチャすると便利です。)

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

sql-server-2005 - リンクサーバーの追加-SQLServer2005-後で名前を変更する

テストSQLサーバーとデータベースを使用するテスト環境でWebアプリを開発しています。現在、リンクサーバーを追加し、[Servername]。[DatabaseName].dbo。[TableName]を使用してリンクサーバーのデータベースとテーブルにアクセスしています。

ただし、本番環境にプッシュした後、DBサーバーの名前は変更されます。したがって、すべてのストアドプロシージャを再度開いて、サーバー名を変更する必要がありますか?

通常の習慣は何ですか?

ありがとうございました。

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

sql-server - SQL Server リンク サーバーから Microsoft Access

Microsoft Access 2003 テーブルにアクセスするために次の手順を実行して、SQL Server 2008 のリンク サーバーを利用しようとしました。

ただし、次のエラーが表示されます。

私のアクセスデータベースにはパスワード/ユーザー名はありませんが、ドキュメントを見て理解したところ、上記のように sp_addlinkedsrvlogin を使用する必要がありました。ログインせずに試してみました。

少しまだ同じエラーが発生します-何が起こっているのですか?!

皆さんありがとう

デバッグ出力

[メッセージ] => [Microsoft][SQL Server Native Client 10.0][SQL Server]リンク サーバー "access1265293168" の OLE DB プロバイダー "Microsoft.Jet.OLEDB.4.0" がメッセージ "不明なエラー" を返しました。) )

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

sql - リンク サーバーを使用した SQL Server 2008 でのクエリが遅い。何を見ることができますか?

このクエリはもともと、ODBC を介して外部データベースにリンクされている MS Access テーブルにアクセスする VB6 プログラムからのものでした。実行には約3:30かかります。

これで、より優れたデータベース システムに移行する方法を評価するために、SQL Server 2008 Express ボックスをセットアップしました。そこで、外部サーバーへのリンク サーバーをセットアップし (DWPROD と呼びます)、クエリを変換 (iif ステートメントを case に変更) して実行すると、12 分間実行しましたが、まだ終了しません。私は SQL Server を初めて使用するので、何がそんなに時間がかかっているのかを確認するにはどうすればよいですか? これを高速化するための提案はありますか? これについてもっと学ぶことができるように、推奨されるリソースはありますか? これは、私たちが持っているものと比較して単純なクエリであるため、この問題にもう一度取り組みます。

クエリ:

私はそれが長いことを知っています。ご覧いただきありがとうございます。

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

sql - リンク サーバーに一時テーブルを作成することはできますか?

リモートのリンク サーバーに対してかなり複雑なクエリを実行しています。一時テーブルに情報を保存し、それに対して結合を実行できると便利です。すべてリモート データを使用します。一時テーブルをローカルに作成し、ワイヤを介してそれらに結合すると、非常に遅くなります。

リモートサーバーに一時テーブルを強制的に作成することはできますか? 自分自身の実際の (永続的な) テーブルを作成するための十分な権限を持っていないと仮定します。

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

linked-server - リンクサーバーを使用してOracleデータベースをクエリする際のパフォーマンスの問題

リンクサーバーとMicrosoftoledboracleドライバーを使用して、sqlserver2005からoracledbサーバーに接続しています。

Oracle DBに存在するテーブルには、DateTimeスタンプがあります。したがって、where条件を指定してクエリを渡すことにより、そのテーブルから最新のレコードのみをフェッチしますが、クエリには約6〜7分かかります。

クエリしているテーブルには、2,000万件のレコードがあります。

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

sql - SQL Server 2008 でリンク サーバーに対して DELETE ステートメントを実行する際の問題

このクエリの実行に問題があります:

IRPROD は、Oracle 10g データベースにリンクされたサーバーです。これは、Oracle OleDB プロバイダーを使用してリンクされています。削除する必要があるレコードは最大 79000 です。このクエリを実行すると、54 が削除されます。もう一度実行すると、このエラー メッセージが表示されます。

明らかに、「壊滅的な失敗」は何か悪いことです。しかし奇妙なことに、SELECT ステートメントと INSERT ステートメントを 1 日中実行でき、問題なく動作します。行を削除する権限があります。また、Access を介してテーブルをリンクすると、レコードを削除できます。

何か案は?