复制本地SQL Server数据库(不在Azure上)

时间:2012-12-10 08:45:58

标签: sql-server tsql azure-sql-database sql-server-2012

要定期备份我的SQL Azure数据库,我一直在使用简单的tSQL语句

CREATE DATABASE FiveModes10_12_12 AS COPY OF FiveModes

但是对于这个项目(分析一些实验结果)我的数据库是一个本地SQL Server 2012,我无法运行该语句(我收到错误Incorrect syntax near 'COPY')。查看the documentation for the CREATE DATABASE command for SQL Server 2012没有AS COPY OF选项。什么是最简单的替代方案?

1 个答案:

答案 0 :(得分:2)

对于长寿命副本,请改为使用e数据库备份:

backup database FiveModes to disk = 'path to .bak file' with init, copy_only;

您可以在需要时恢复此功能:

restore database FiveMode from disk = 'path to .bak file';

您甚至可以将备份还原为新数据库,但是您需要在还原期间移动MDF / LDF文件的位置:

restore database FiveMode_12_12 from disk = 'path to .bak file'
   with move 'FiveMode' to '<path to place the new copy of MDF>',
   move 'FiveMode_log' to '<path to place the new copy of LDF>'

如果您只需要短期副本(例如,创建副本,进行一些实验,还原到副本),您可以使用数据库快照,但它需要Enterprise许可证。见Database Snapshots

create database FiveModes10_12_12  on
  (Name = 'FiveMode', FileName = '<path to MDF snapshot file>')
as snapshot of FiveModes;

但请注意,快照根本不像Azure副本,这对于长时间保存它们是非常不利的。长时间复制使用备份。