Caractères max. SQL 2000 Jobs planifiés

J'essaye de planifier un long script T-SQL. Cependant, le script est tronqué lorsqu'il est collé dans la textbox. J'ai googlé le problème et il y a une limite de 3200 caractères.

Que recommandz-vous que je fasse pour résoudre ceci? Créer une procédure stockée et l'exécuter en tant que travail planifié? Y a-t-il une meilleure option? Si ça aide, voici le script.

INSERT INTO CheltonCustomizations..SOBacklogAudits (SoNo, SoRev, SysItemNo, UserItemNo, Release, OrderDate, DueDate, PartNo, PartRev, OrderQty, ShippedQty, ShippedNotInvoicedQty, InvoicedQty, ProdCl, [Group], NetAmount, SorelsIdentityColumn, BacklogDate) SELECT SOR.fsono, SOM.fsorev, SOR.fenumber, SOR.finumber, SOR.frelease, SOM.[forderdate], SOR.fduedate, SOR.fpartno, SOR.fpartrev, SOR.forderqty, SOR.fshipbook + SOR.fshipbuy + SOR.fshipmake, COALESCE ( DBO.GETSHIPPEDNOTINVOICEDQTY ( SOR.fsono + SOR.finumber + SOR.frelease), 0), SOR.finvqty, SOI.fprodcl, SOI.fgroup, (SOR.forderqty - SOR.finvqty - COALESCE ( DBO.GETSHIPPEDNOTINVOICEDQTY ( SOR.fsono + SOR.finumber + SOR.frelease), 0)) * SOR.funetprice, SOR.identity_column, getdate () --CONVERT (DATETIME, '02/09/2009') FROM SORELS SOR INNER JOIN SOITEM SOI ON SOR.finvqty < SOR.forderqty - COALESCE ( DBO.GETSHIPPEDNOTINVOICEDQTY ( SOI.FSONO + SOR.finumber + SOR.frelease), 0) - 0 AND SOR.finvqty < SOR.forderqty - COALESCE ( DBO.GETSHIPPEDNOTINVOICEDQTY ( SOR.fsono + SOI.FINUMBER + SOR.frelease), 0) - 0 AND SOR.FSONO = COALESCE (SOI.FSONO, SOI.FSONO) AND SOR.FINUMBER = SOI.FINUMBER INNER JOIN SOMAST SOM ON SOR.finvqty < SOR.forderqty - COALESCE ( DBO.GETSHIPPEDNOTINVOICEDQTY ( SOM.FSONO + SOR.finumber + SOR.frelease), 0) - 0 AND SOR.FSONO = COALESCE (SOM.FSONO, SOM.FSONO) AND SOI.FSONO = SOM.FSONO WHERE SOM.FSTATUS = 'OPEN' AND FMASTERREL = COALESCE (0, 0) AND SOM.forderdate >= CONVERT (DATETIME, '01/01/2002') AND SOR.forderqty > 0 + SOR.finvqty + COALESCE ( DBO.GETSHIPPEDNOTINVOICEDQTY(SOR.fsono + SOR.finumber + SOR.frelease), 0) AND SOR.finvqty < SOR.forderqty - COALESCE ( DBO.GETSHIPPEDNOTINVOICEDQTY(SOR.fsono + SOR.finumber + SOR.frelease), 0) 

Comme vous l'avez mentionné, j'utiliserais une procédure stockée, appelez ça du travail.

Vous avez également l'avantage que vous pouvez mettre à jour le code mais laisser le travail intact

en faire une procédure stockée. Je n'aurais jamais exécuter un travail autre qu'une procédure stockée. vous pouvez continuer à append la logique etc. à la procédure et ne pas embêter avec le travail du tout …

D'accord avec ci-dessus – définitivement le mettre dans un proc stocké et l'appeler du travail.

Il est généralement recommandé de placer tout le code dans les procédures stockées. Cela vous permet d'appeler facilement une procédure stockée par nom plus tard (pour une utilisation dans un travail ou un package DTS, par exemple).

Si vous deviez créer plusieurs jobs ou packages DTS qui appelaient la même procédure stockée et que vous deviez apporter des modifications à cette procédure stockée, vous ne devez effectuer la modification qu'une seule fois.

Si vous avez simplement copié le code dans le package travail / DTS, vous devrez entrer dans chaque travail pour mettre à jour votre code si des modifications étaient nécessaires.