2016-08-01 29 views
0

Wenn ich diesen Befehl im Management Studio:Wie kann ich die Nachrichtenergebnisse einer Abfrage in eine #temptable in SQL einfügen?

DBCC CHECKIDENT ('TBL_NAME', RESEED, 0); 

Ausgabe lautet:

prüfen Identitätsinformationen: aktuelle Identitätswert '0', Wert aktuelle Spalte '0'.
DBCC-Ausführung abgeschlossen. Wenden Sie sich an Ihren Systemadministrator, wenn DBCC Fehlermeldungen gedruckt hat.

Ich möchte diese Ausgabe erhalten und in eine #temptable einfügen, irgendwelche Gedanken?

+5

Mögliches Duplikat von [Wie man die Ausgabe eines DBCC-Statements in ein Versuchbares einfängt] (http://stackoverflow.com/questions/5946813/how-to-catch-the-output-of-a-dbcc- Aussage in einem Versuchbaren –

Antwort

1

Wenn Ihre Absicht die neueste erzeugte Identität für eine bestimmte Tabelle zu erhalten ist, und speichern Sie es auf eine temporäre Tabelle, ausgehend von SQL Server 2008 R2 können Sie die IDENT_CURRENT Funktion wie folgt verwendet werden:

SELECT IDENT_CURRENT('TBL_NAME') AS CurrentIdentity 
INTO #temptable 

Für früheren Versionen von SQL Server können Sie den Zugriff auf

SELECT IC.last_value AS CurrentIdentity 
INTO #temptable 
FROM sys.identity_columns IC 
    INNER JOIN sys.objects O ON IC.object_id=O.object_id 
WHERE O.object_id=OBJECT_ID('TBL_NAME') 

Capturing der Druckausgabe von DBCC oder andere gespeicherte Prozedur ist möglich, mit vielen Einschränkungen durch die Outputfunktion wie folgt aus:

DBCC CHECKIDENT ('TBL_NAME', RESEED, 0); 
CREATE TABLE #temptable TABLE ([Buffer] NVARCHAR(MAX)) 
INSERT @output 
EXEC ('DBCC OUTPUTBUFFER(@@SPID)') 
SELECT * FROM #temptable 

Ich würde die Verwendung von OUTPUTBUFFER außer zur Fehlersuche stark interressieren.