새 데이터베이스에 테이블 (수십 개)을 만들고 이전 데이터베이스의 특정 정보를 복사하려면 하루에 여러 번 실행되는 스크립트가 필요합니다.이 정보를 'prev'데이터베이스라고 부릅니다. .sqlserver 테이블의 복사본 구조체 인덱스가
각 테이블의 구조를 '이전'데이터베이스에서 새 데이터베이스로 복사하려고합니다. 그렇게하기 쉽습니다 (Google 덕분에). 또한 새 테이블에서 동일한 정보를 색인화 할 수 있기를 원합니다. 색인은 때로는 열에 있고 때로는 열의 조합입니다. 나는이 인덱스를 수작업으로 쉽게 충분히 만들 수있다. 그러나 SQL을 스크립팅하는 SQL 스크립팅 방법이 있는지 궁금합니다. "어서,이 테이블에있는 인덱스를보고이 새 테이블에 같은 테이블을 넣으십시오."
-- rename underlying files of old db.
ALTER DATABASE abc SET OFFLINE
alter database abc
modify file (name=abc,
filename = 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\xyz.mdf')
GO
ALTER DATABASE abc
modify file (name=abc_log,
filename = 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\xyz_log.ldf')
GO
ALTER DATABASE abc SET ONLINE
-- give new logical name to the prev database
-- not sure this will work, but I think it will
USE master
GO
ALTER DATABASE abc MODIFY NAME = xyz
GO
-- make a new database
CREATE DATABASE abc
GO
-- note that prev db is xyz, new one is abc but has no tables yet
USE abc
GO
-- for each table, copy the structure into table of new db with same name
SELECT TOP 0 INTO dbo.atab FROM xyz.dbo.atab
GO
-- for each index in THIS table
CREATE INDEX idx_field1 ON db.atab (field1)
GO
CREATE INDEX idx_combined ON db.atab (field2, field3)
GO
-- etc.
어쨌든, 나는 이와 같이 생각합니다. 그 마지막 부분을 할 수있는 더 좋은 방법이 있습니까?