2017-12-19 16 views
1

SQL Server 17で、Oracleサーバーの接続フィードを使用して、開いているクエリを実行しようとしています。私が下に掲示された質問を実行すると、毎晩行7833で立ち往生します。同じ行番号でOpenqueryが実行されない

問合せ:

SELECT 
    sys_ohi, 
    "Region", 
    sub_acct_no_ohi, 
    serv_cde_ohi, 
    connect_dte_ohi, 
    charge_amt_ohi 

FROM openquery (MyServer, ' 
(SELECT DISTINCT 
    sys_ohi, 
CASE 
    WHEN prin_ohi = ''1000'' THEN ''Seattle East'' 
    WHEN prin_ohi = ''1500'' THEN ''Seattle West'' 
    WHEN prin_ohi = ''2000'' THEN ''Oregon'' 
    WHEN prin_ohi = ''3000'' THEN ''Sacramento'' 
    WHEN prin_ohi = ''3500'' THEN ''San Francisco'' 
     END AS "Region", 
    sub_acct_no_ohi, 
    serv_cde_ohi, 
    connect_dte_ohi, 
    charge_amt_ohi 

FROM mytable_ohi 

WHERE serv_cde_ohi IN (''INSTALL'') 
AND connect_dte_ohi > trunc(to_date(''06-01-2017'',''MM-DD-YYYY'')))') 

私は36種類serv_cde_ohi IN (''INSTALL'')を持っていますが、私は声明「の」パフォーマンスのためにひどかった内でそれらを置くしようとしているので36 UNION異なるシナリオのためのすべてのクエリを作成しました。

なぜこのクエリが同じ場所に止まっているのかを知る必要があります。

+0

「固着」とは何を意味しますか? –

+1

Microsoft SQL Serverでは、クエリの完了は行7833に達した時点で停止します。ただし、照会の状況は「照会の実行」です。アクティビティモニタをチェックすると、RUNNINGタスクとSELECTコマンドに「スタック」しています。私はそれをキャンセルし、私のサーバーを完全に再起動するまで、クエリは停止しません。 – cbrown92

+0

'MyServer'でクエリを実行すると、正しく完了しますか? –

答えて

0

UNION ALL宣言は、実行を開始する暗黙的なデータ変換に依存する可能性があります。この場合、暗黙の変換が観察されているようなカーソルのフェッチ中にデータ条件が発生します。

すべての暗黙の依存関係を排除します。各SELECTの各項目について、明示的にデータ型を設定します(当然のことながら各項目に同じ種類)。

+0

ありがとうございました。あなたはそれが日付の具体的なデータ変換と関係していることは間違いありません。私はOracleから引っ張っています。このデータベースは、Microsoft SQL Serverに取り込んでいるものとは異なる日付形式です。答えをありがとう、それは私に日付フィールドを再評価して、今働いている。 – cbrown92

+0

@ cbrown92聞いて嬉しいです。最終的に日付の値を暗黙的に変換すると誰もが噛み付いてしまう。私は、OracleとSQL Serverが「異なる日付形式」を持っているのではないことを明確にしたいと思いますが。データ保管のチェーンのどこかで、日付値は単なる文字列であり(日付データ型ではない)、日付データ型は予期しない/暗黙の形式パターンで文字列に変換される(データ型に変換される)可能性があります。 –

+0

私はフォローアップ、マイケルに感謝します! – cbrown92

関連する問題