2017-10-31 4 views
1

スケジュールされたジョブを毎日実行するように作成しましたが、スケジューラを介してジョブを実行すると「アイテムの近くに構文が正しくありません。エラー102)」。SQL構文エラー(スケジュールされたジョブとして実行されている場合のみ)

これは、ジョブがスケジューラを介して実行されている場合にのみ発生し、直接実行すると正常に動作します。

DELETE FROM [NAVQueriesDB].[dbo].[New Items on Order] GO 
    SET ANSI_WARNINGS OFF 
    GO 
INSERT [NAVQueriesDB].[dbo].[New Items on Order] (
    [Updated Date], 
    [Location Code], 
    [Order No_], 
    [Item No_], 
    [Item Description], 
    [Variant Code], 
    [Description 2], 
    [Outstanding Qty_], 
    [Order Date], 
    [Vendor_No], 
    [Vendor_Name]) 

    SELECT 
    GETDATE() AS "Updated Date", 
    [Purch Line].[Location Code], 
    [Purch Line].[Document No_], 
    [Item].[No_], 
    [Item].[Description], 
    ISNULL([Purch Line].[Variant Code],'-') AS "Variant Code", 
    ISNULL([Variant].[Description 2],'-') AS "Description 2", 
    CAST(SUM([Purch Line].[Outstanding Quantity]) as decimal(18,0)) AS "Outstanding Qty.", 
    [Purch Line].[Order Date], 
    [Purch Line].[Buy-from Vendor No_], 
    [Vendor].[Name] 
FROM [Wings$Item] AS "Item" 
    LEFT JOIN [Wings$Purchase Line] AS "Purch Line" 
    ON [Item].[No_] = [Purch Line].[No_] 

    LEFT JOIN [Wings$Item Variant] AS "Variant" 
    ON [Item].[No_] = [Variant].[Item No_] AND [Purch Line].[Variant Code] = [Variant].[Code] 

    LEFT JOIN [Wings$Vendor] AS "Vendor" 
    ON [Purch Line].[Buy-from Vendor No_] = [Vendor].[No_] 

    LEFT JOIN [Wings$Item Ledger Entry] AS "Item Ledger" 
    ON [Item].[No_] = [Item Ledger].[Item No_] 

    WHERE 
    [Item].[No_] > '5618%' 
    AND [Item].[No_] <> 'Z999999' 
    AND [Item Ledger].[Item No_] IS NULL 
GROUP BY 
    [Purch Line].[Location Code], 
    [Purch Line].[Document No_], 
    [Item].[No_], 
    [Item].[Description], 
    [Purch Line].[Variant Code], 
    [Variant].[Description 2], 
    [Purch Line].[Outstanding Quantity], 
    [Purch Line].[Order Date], 
    [Purch Line].[Buy-from Vendor No_], 
    [Vendor].[Name] 
ORDER BY 
    [Location Code], 
    [Item].[No_], 
    [Item].[Description], 
    [Purch Line].[Variant Code] 
+0

これは、テーブルの名前を変更することと関係がありますか?[Wings $ Item] AS "Item"とそれを "Item"としてジョインステートメントの残りの部分を参照していますか? Wings $ Itemを "Item"の代わりに使用するように結合を変更しようとしましたか? – Seano314

+0

'選択 'の前に' [NavQueriesDB] 'を使う必要がありますか?開始ビットは完全修飾テーブル名を使用しますが、選択は行いません。 – Hellion

+0

@Hellionあるデータベースでこのクエリを実行して別のSQLデータベースにデータを入力しているため、設定する必要があります。 –

答えて

1

あなたの識別子に二重引用符を使用することは悪い考えです(IMO)。引用符で囲まなければならない場合、標準は[]です(引用符を付ける必要がないように、私の名前のスペースを避ける理由もあります)。

SQL Agentのデフォルト値はQUOTED_IDENTIFIERで、OFFに設定されています。二重引用符を角括弧に変更すると、これはうまくいくはずです。代わりに(ただし推奨されません)、スクリプトの最初の行をSET QUOTED_IDENTIFIER ONにすることができます。

たとえば、GETDATE() AS "Updated Date" ... GETDATE() AS [Updated Date]です。 GETDATE() AS updated_dateが最適です。

+0

ありがとう@Tom。応答を感謝します!引用符で囲まれた識別子を有効に設定する。大括弧付きのベストプラクティスを使用してアドバイスを受け取りましょう! –

関連する問題