sp_MSforeachtable und rename
-
Hallo,
ich verwende
EXEC sp_MSforeachtable @command1 = 'select * into dest_db.? from ? where 1 = 2'
um alle Tabellen einer Datenbank in einer anderen Datenbank anzulegen.
Ich möchte jetzt zusätzlich in der Zieldatenbank den Tabellen ein Präfix voranstellen (z.B. neu_...)
EXEC sp_MSforeachtable @command1 = 'select * into dest_db.neu_? from ? where 1 = 2'
funktioniert nicht, da ? zu [schema].[tabellenname] aufgelöst wird, sodass dann unsinnigerweise dest_db.neu_[schema].[tabellenname] rauskommt.
Mit parsename("?",1) innerhalb des Selects komme ich nicht weiter, bei einem Print klappt das hingegen problemlos:
EXEC sp_MSforeachtable @command1 = 'DROP TABLE ? print parsename("?",1)'
Wie könnte es im select into gehen?
Grüße
-
Mach nochmal ein EXEC im EXEC.
Sowas in der Art sollte gehen:EXEC sp_MSforeachtable @command1 = 'EXEC ''select * into dest_db.neu_'' + parsename("?",1) + '' from '' + ? + '' where 1 = 2'''
-
Danke Hustbaer.
Ich bekomme es mit einem einzelnen exec nicht hingefummelt,
in mehreren Schritten würde es aber so gehen:EXEC sp_MSforeachtable @command1 = 'declare @cmd varchar(1024) select @cmd = "select * into dest_db.dbo.neu_" + parsename("?",1) + " from ? where 1 = 2" exec (@cmd)'