Jump to content

Schreiben einer LOG-Datei bei Script-Abbruch


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

folgende Anforderung

Schreiben einer LOG-Datei z.B. eine INSERT_ERROR.txt in das Verzeichnis c:\Import\ERROR\ wenn irgendetwas den INSERT-Vorgang abbricht!

 

 

Script: (Import.csv)

Sorry, wollt in als CODE-darstellen, kommt aber nur sch... raus!

 

----------------------------------------------------------------------------------

set language deutsch

USE [Rechnungen]

GO

SET ANSI_NULLS

ON

GO

SET QUOTED_IDENTIFIER ON

GO

 

 

-- Import der Daten aus der CSV-Datei

bulk insert dbo.tblImport from 'c:\import\Rechnungen.csv'

go

-- hinzufgen der "MARKER"-Spalte

ALTER TABLE tblImport ADD MARKER Int

Go

-- fieldseperator = ;

WITH (fieldterminator = ';',DATAFILETYPE = 'char' , rowterminator = '\n', FIRSTROW = 2, ERRORFILE = 'c:\Import\ERROR\Import_log.txt')

go

 

-- deklarieren

der Variablen

DECLARE @RechnungsNummer nvarchar(20);

DECLARE @RechnunsDatum nvachar(50);

 

While (SELECT count (*) FROM tblImport) > 0

Begin

 

-- ersten Datensatz der Import-Tabelle markieren

update top (1) tblRechnungen set MARKER = 1

 

-- setzen der Variablen

SET @RechnungsNummer = (select RechnungsNummer from tblImport where MARKER = 1)

SET @RechnunsDatum= (select RechnungsDatum from tblImport where MARKER = 1)

 

-- Insertvorgang

INSERT INTO dbo.tblRechnungen (ReNummer, ReDatum)

VALUES (@RechnungsNummer, @RechnunsDatum)

 

- Importierte Zeile lschen

DELETE FROM tblRechnungen where MARKER = 1

 

End

 

ALTER TABLE tblImport DROP COLUMN MARKER

go

 

------------------------------------------------------------------

 

 

Dieser Script wird jede Stunde durch eine Import.bat angestoßen:

Inhalt:

sqlcmd -S Datastore -U sa -P [bleibtgeheim] -i "C:\Schnittstelle\scripts\IMPORT.sql"

 

 

 

Ich hoffe, dass ich die Anforderung klar gestellt und beschrieben habe und mir jemand dabei behilflich sein kann, das Problem zu lösen!

 

Vielen Dank im Voraus!

 

da Hartl

 

 

 

 

Link zu diesem Kommentar

Wir drehen uns im Kreis, BCP hast Du ja schon selbst genannt:

 

http://msdn.microsoft.com/en-us/library/ms175937.aspx#MethodsForBuliIE

http://msdn.microsoft.com/en-us/library/aa337544.aspx

 

Hier siehst Du den Wizard:

http://www.databasejournal.com/features/mssql/article.php/3580216/SQL-Server-2005-Import--Export-Wizard.htm

 

In diesem Link ist auch ein gutes Beispiel zu finden:

http://www.mssqltips.com/sqlservertutorial/202/simple-way-to-export-data-from-sql-server/

 

Am besten erstellst Du dir eine View, die dir die Daten der letzten Stunde oder auch zwei Stunden aus der Protokoll Tabelle ausgibt, die nimmst Du als Grundlage für den Export.

Link zu diesem Kommentar

Ich möchte keine externe Verarbeitung oder nachträgliche Verarbeitung, sondern einen Möglichkeit IN dem SQL-Script selbst!

 

Dann schau dir die Möglichkeiten mit den Wizards an, das kannst Du AFAIK auch als Script abspeichern und immer wieder nutzen. Das SSIS Paket kann man auch aus einer Stored Procedure heraus starten, zumindest meine ich das schon mal gelesen zu haben.

 

Weitere Links zu dem Thema:

http://www.insidesql.org/blogs/cmu/sql_server/task-prozess-ausfuehren-mit-ereignishandler

 

https://www.video2brain.com/de/tutorial/ssis-pakete-erstellen

Link zu diesem Kommentar

Da ich einen SQL Server 2005 Express habe, kann ich mit dem Script-Assistenten erstelle Abfragen leider nicht speichern!

 

In einem anderen Forum hab ich jetzt die Lösung gefunden:

 
declare @sql varchar(8000)
select @sql = 
'bcp 
"select * from Rechnungen..tblImport" queryout c:\Import\ERROR\Import_ERROR.txt 
-c -t; -T -S' + 
@@servername
-- -c -t; 
-r\n
exec Rechnungen..xp_cmdshell 
@SQL

(Sorry aber "Code" sieht einfach sch.. aus... warum auch immer)

 

Wichtig ist halt nur xp_cmdshell vorher zu aktivieren und dem user sysadmin - Rechte zu geben

 

 

 

-- To allow 
advanced options to be changed.
EXEC 
sp_configure 'show advanced options', 1
GO
-- To update 
the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable 
the feature.
EXEC 
sp_configure 'xp_cmdshell', 1
GO
-- To update 
the currently configured value for this feature.
RECONFIGURE
GO

Mehr dazu steht hier:

http://msdn.microsoft.com/de-de/library/ms175046.aspx

 

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...