これを行うバックアップテーブルを作成するこのSQL Serverエージェントがあります:
DECLARE @date datetime, @insert_cmd varchar(1000)
SET @date =GETDATE()
set @insert_cmd = 'select * into [tablename_'+CONVERT(varchar(100), @date, 112 )+'] from tableA'
exec (@insert_cmd)
問題は、select * into table が機能するのは、テーブルがまだ存在しない場合のみです。これを変更して tablename_.... 気にせずに挿入し、必要に応じて上書きする方法はありますか?
次のようなことをして、テーブルが存在するかどうかを確認するためにSQLを使用してみました:
IF OBJECT_ID ('tablename', 'U') IS NOT NULL DROP tablename;
それに関する問題は、それらの引用符を配置して、テーブル名に追加された日付/時刻を作成する方法です? いくつかのバリエーションを試しましたが、どれもうまくいきませんでした:
/* errors with quotations: */
set @del_cmd = 'IF OBJECT_ID ('[tablename_'+CONVERT(varchar(100), @date, 112 )+']', 'U') IS NOT NULL DROP [tablename_'+CONVERT(varchar(100), @date, 112 )+']';