Fehler bei SQL Abfrage - Filter Funktion
Hallo zusammen,
Wir haben hier eine SQL Abfrage erstellt (funktioniert soweit auch alles) nur wenn wir das ganze als Schedulded Task laufen lassen erhalten wir einen Fehler. > SQL Server Agent -> Jobs
Wie gesagt die Abfrage funktioniert. SQL 2012 ist im Einsatz
Output.
Und nun zum Fehler.
Wenn wir die SQL Abfrage manuell laufen lassen kommen die Zeilen wie Dokument Nr. 583150 oder 583972 nur einmal aber wenn wir dieselbe Abfrage automatisch als Job laufen lassen, dann erhalten wir das Ergebnis wie oben.
Kann man den Output unter umständen filtern, so dass eine Dokumenten Nr. nur einmal vorkommt?
Gruss
MS
Wir haben hier eine SQL Abfrage erstellt (funktioniert soweit auch alles) nur wenn wir das ganze als Schedulded Task laufen lassen erhalten wir einen Fehler. > SQL Server Agent -> Jobs
Wie gesagt die Abfrage funktioniert. SQL 2012 ist im Einsatz
DECLARE @job_name varchar(256)
DECLARE @subject nvarchar(max)
DECLARE @body nvarchar(max)
DECLARE @xml nvarchar(max)
DECLARE @recipients varchar(256)
DECLARE @COUNT int
-- Freigegebene Archivzeichnung mit Nr, zu der es eine alte Archivzeichnung
-- in Konstruktion/Freigabe gibt mit identischer Nr
-- Archivzeichnungen ermitteln
-- Tabelle anlegen und Werte zwischenspeichern
CREATE TABLE #TTEMP
(
[DocID] int,
[ReinzNr] int,
[ProjektNr] int, -- E
[TeilprojektNr] int, --
[Erstelldatum] numeric (16,6) --
)
--select vb_objidnr1,d1.do_ext,vb_objidnr2,d2.DO_EXT,dv1.D2_VFLO33,d2.DO_CDATE from
insert into #TTEMP
select DO_IDNR as DocID, ReinzNr,dv_vstl6 as ProjektNr,dv_vstl8 as TeilProjektNr,do_dcdate as Erstelldatum --,datediff (day, [dbo].[PRO_FN_GetSQLDateTimeUTC]( DO_DCDATE) , GETUTCDATE())
from
(select ReinzNr from
(select DV_VSTL1 as Nr from dokstamm
inner join SPERREN on SP_OBJIDNR=DO_IDNR and SP_OBJTYP=3 and SP_ART=10 and SP_KENN=200
inner join DOKVAR on DV_IDNR=DO_IDNR and DV_VSTL1 like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
where do_dtnr=5
and datediff (day, [dbo].[PRO_FN_GetSQLDateTimeUTC]( DO_DCDATE) , GETUTCDATE())=1
and DO_VERSIONCOUNT=DO_VERSIONINDEX) t
inner join DOKVAR on t.ReinzNr=DV_VSTL1
inner join DOKSTAMM on DV_IDNR=DO_IDNR and do_dtnr=5 and DO_VERSIONCOUNT=DO_VERSIONINDEX
inner join SPERREN on SP_OBJIDNR=DO_IDNR and SP_OBJTYP=3 and SP_ART=10 and SP_KENN in (0,200)
and datediff (day, [dbo].[PRO_FN_GetSQLDateTimeUTC]( DO_DCDATE) , GETUTCDATE())>2) t1
inner join DOKVAR on t1.ReinzNr=DV_VSTL1
inner join DOKSTAMM on DV_IDNR=DO_IDNR and do_dtnr=5 and DO_VERSIONCOUNT=DO_VERSIONINDEX
inner join SPERREN on SP_OBJIDNR=DO_IDNR and SP_OBJTYP=3 and SP_ART=10 and SP_KENN in (0,200)
order by ReinzNr,Erstelldatum
-- Auswertung:
-- E-Mail an xy
select @COUNT=count(*) from #TTEMP
if @COUNT >0
begin
-- Change your email address to email distribution group or person who needs to get
-- Success Notification
SET @recipients = 'user@domain.com'
set @job_name = 'SendDailyReport-Nr-Check'
--FROM msdb..sysjobs
--WHERE job_id = $(ESCAPE_SQUOTE(JOBID))
SET @subject = 'Daily Report on Nr-Check'
SET @xml = CAST(( SELECT DocID AS 'td', ' ',ReinzNr AS 'td', ' ',ProjektNr AS 'td', ' ',TeilprojektNr AS 'td', ' ',Erstelldatum AS 'td'
FROM #TTEMP -- ORDER BY Rank
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
set @body ='<html><body><H3>Nr. Info</H3>
<table border = 1>
<tr>
<th>Dokument-Nr. </th> <th> Nr.</th> <th> Projekt-Nr.</th> <th> Teilprojekt-Nr.</th> <th>Erstelldatum</th>'
set @body = @body + @xml +'</table></body></html>'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'ProfileMailService',
@recipients = @recipients,
@body = @body,
@body_format ='HTML',
@subject = @subject ;
end
DROP TABLE #TTEMP
Output.
Nr. Info
Dokument-Nr. Nr. Projekt-Nr. Teilprojekt-Nr. Erstelldatum
583150 701066881 15966 230 20160519.073407
583150 701066881 15966 230 20160519.073407
583150 701066881 15966 230 20160519.073407
583150 701066881 15966 230 20160519.073407
583972 701066881 15966 230 20160601.081418
583972 701066881 15966 230 20160601.081418
583975 701066881 15966 230 20160601.082214
583975 701066881 15966 230 20160601.082214
584001 701066881 15966 230 20160601.083742
584001 701066881 15966 230 20160601.083742
583972 701066881 15966 230 20160601.081418
583972 701066881 15966 230 20160601.081418
583975 701066881 15966 230 20160601.082214
583975 701066881 15966 230 20160601.082214
584001 701066881 15966 230 20160601.083742
584001 701066881 15966 230 20160601.083742
583976 701066881 15966 230 20160601.082749
583976 701066881 15966 230 20160601.082749
583976 701066881 15966 230 20160601.082749
583976 701066881 15966 230 20160601.082749
Und nun zum Fehler.
Wenn wir die SQL Abfrage manuell laufen lassen kommen die Zeilen wie Dokument Nr. 583150 oder 583972 nur einmal aber wenn wir dieselbe Abfrage automatisch als Job laufen lassen, dann erhalten wir das Ergebnis wie oben.
Kann man den Output unter umständen filtern, so dass eine Dokumenten Nr. nur einmal vorkommt?
Gruss
MS
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 306137
Url: https://administrator.de/contentid/306137
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
2 Kommentare
Neuester Kommentar