Wie Sie wahrscheinlich von früheren Antworten verstanden haben, können Sie nicht wirklich tun, wonach Sie suchen. Ich denke, dass Sie das Problem verstehen können, das SQL Server mit nicht zu wissen, wie die zusätzlichen/fehlenden Spalten zuordnen.
Das heißt, da Sie erwähnen, dass der Zweck von dem, was Sie hier versuchen, Backup ist, vielleicht können wir mit SQL Server arbeiten und das Problem umgehen. Nicht Ihr genaues Szenario zu wissen, macht es unmöglich, mit einer richtigen Antwort hier zu treffen, aber ich nehme an, die folgend:
- Sie wünschen, einen Backup/Audit-Prozess für eine Tabelle zu verwalten.
- Sie haben wahrscheinlich ein paar davon und möchten vermeiden, abhängige Objekte bei jeder Spaltenaddition/-entfernung zu ändern.
- Die Sicherungstabelle kann zusätzliche Spalten für Überwachungszwecke enthalten.
Ich wünsche Ihnen zwei Möglichkeiten vorschlagen:
Die effiziente Praxis (IMO) für das sein kann Schemaänderungen mit DDL-Trigger zu erkennen und nutzen sie entsprechend der Backup-Tabelle zu ändern. Dadurch können Sie die Methode 'Select * from ...' verwenden, da die Spaltenliste zwischen den beiden Tabellen konsistent ist.
Ich habe diesen Ansatz erfolgreich verwendet und Sie können DDL-Trigger verwenden, um Ihre Auditing-Tabellen automatisch zu verwalten. In meinem Fall habe ich eine Namenskonvention für eine Tabelle verwendet, die Audits erfordert, und der DDL-Trigger hat sie nur im Handumdrehen verwaltet.
Eine andere Option, die für Ihr spezifisches Szenario nützlich sein könnte, besteht darin, eine unterstützende Ansicht für die Tabellen zu erstellen, die die Spaltenliste ausrichten. Hier ist ein kurzes Beispiel:
create table foo (id int, name varchar(50))
create table foo_bk (id int, name varchar(50), tagid int)
go
create view vw_foo as select id,name from foo
go
create view vw_foo_bk as select id,name from foo_bk
go
insert into vw_foo
select * from vw_foo_bk
go
drop view vw_foo
drop view vw_foo_bk
drop table foo
drop table foo_bk
go
Ich hoffe, das hilft :)
Dies ist nur auf einer neuen Tabelle arbeitet wird. – JeffO
INTO funktioniert nicht, wenn die Tabelle bereits existiert. – HLGEM
Und ja, Sie können wählen * in Sql Server 2000 – HLGEM