MS SQL 存储过程生成脚本创建现有数据库的副本

Posted

技术标签:

【中文标题】MS SQL 存储过程生成脚本创建现有数据库的副本【英文标题】:MS SQL Stored procedure to generate a script create a copy of existing database 【发布时间】:2014-05-09 15:05:16 【问题描述】:

我需要在 SQL Server 2008 中创建数据库副本方面的帮助。所以我找到了这篇文章 http://blog.sqlauthority.com/2011/05/07/sql-server-2008-2008-r2-create-script-to-copy-database-schema-and-all-the-objects-data-schema-stored-procedure-functions-triggers-tables-views-constraints-and-all-other-database-objects/ 它告诉如何生成一个脚本,该脚本创建整个数据库的副本,包括数据、键约束、触发器等,这很好,但我想自动化这个过程,这样我每个月左右可以运行一次存储过程生成此脚本以使用所有当前数据创建数据库副本并运行脚本以创建数据库副本。这可能吗?请帮忙。

谢谢

【问题讨论】:

【参考方案1】:

假设执行数据库的备份和恢复是可以接受的 - 这就是代码在 BACKUPRESTORE AdventureWorks 中的样子

BACKUP DATABASE [AdventureWorks2012] TO  DISK = N'd:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\AdventureWorks2012.bak' 
WITH NOFORMAT, NOINIT,  NAME = N'AdventureWorks2012-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

请注意,“复制”数据库的名称是 AdventureWorks2012_Copy

RESTORE DATABASE [AdventureWorks2012_Copy] FROM  DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\AdventureWorks2012.bak' 
WITH  FILE = 1,  MOVE N'AdventureWorks2012_Data' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Copy_Data.mdf',  
MOVE N'AdventureWorks2012_Log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Copy_log.ldf',  NOUNLOAD,  STATS = 5

GO

代码有点冗长,因为它是通过脚本 SSMS GUI 功能生成的。

您可能还需要考虑是否要删除 .bak 文件,或者您可能希望设置什么流程来重复执行此操作。

【讨论】:

以上是关于MS SQL 存储过程生成脚本创建现有数据库的副本的主要内容,如果未能解决你的问题,请参考以下文章

如何为包含所有存储行的现有 SQL Server 表生成 INSERT 脚本?

sql 使用PowerShell和SMO为给定数据库中的MS SQL存储过程和视图创建drop + create脚本

如何生成将使用数据重建我的 MS SQL Server 2005 数据库的脚本?

MS SQL生成数据库字典脚本

ER/Studio生成SQL2008脚本注意事项

表和存储过程未包含在生成的脚本中