Dies ist eine SQL 2000-Datenbank, mit der ich arbeite.SQL 2000 'TRY CATCH like' Fehlerbehandlung
Ich habe, was ich eine Staging-Tabelle, die eine Rohdaten-Dump von Daten ist, nennen, so ist alles Ntext oder Nvarchar (255).
Ich brauche zu werfen/konvertieren alle diese Daten in die entsprechenden Datentypen (dh int, dezimal, nvarchar, etc.)
Die Art und Weise, ich würde dies tun war durch alle Datensätze iterieren ein mit While-Schleife und versuchen Sie eine CAST für jede Spalte in einem einzelnen Datensatz während jeder Iteration, nachdem ich einen bestimmten Datensatz besuche ich es als bearbeitet (Bit-Feld).
Aber wie kann ich den Fehler protokollieren, wenn/wenn es auftritt, aber die While-Schleife weitermachen.
Zuerst implementierte ich dies mit einem TRY CATCH in einer lokalen SQL 2005-Instanz (um das Projekt in Gang zu bringen) und alles funktionierte gut, aber ich erfuhr heute, dass die Entwickler-& Produktionsdatenbank, die die internationalen DBAs eingerichtet haben eine SQL 2000-Instanz, also muss ich mich anpassen.
BEARBEITEN: Ich verwende ein SSIS-Paket, um die Staging-Tabelle aufzufüllen. Ich sehe, dass ich jetzt dieses Paket erneut besuchen und eine Skriptkomponente implementieren muss, um die Konvertierungen zu handhaben. Danke Jungs
EDIT: Ich am tue dies auf einem datensatzweise, nicht ein Batch-Einsatz, so dass die Transaktion Idee scheint, wie es möglich wäre, aber ich bin nicht sicher, wie Fall @@ ERROR und ermöglichen, dass die gespeicherte Prozedur fortgesetzt wird.
EDIT: Ich mag Guy's approach, ich werde es auf diese Weise implementieren.