MS SQL 2008 - 创建没有数据的数据库副本

use*_*527 34 sql-server iis schema

在MS SQL Server 2008 R2中,如何基于旧数据库的模式创建新数据库,但不复制任何数据?我正在使用SQL Server管理工作室.

cod*_*ger 49

右键单击数据库并选择Tasks- > Generate Scripts.

然后,您可以选择所需的所有对象或仅选择某些对象.

您应该查看一些脚本选项:

  • 脚本使用数据库 - 如果要创建具有不同名称的新数据库,则应将其设置为false.
  • 索引和触发器不是默认脚本
  • 登录和对象级权限不是默认脚本
  • 为依赖对象生成脚本 - 默认情况下将其设置为false,但您可能希望将其更改为true以确保所有对象都已编写脚本.

您可以将它们创建到新的查询窗口或将它们保存到SQL文件.


Bri*_*ter 8

摘要

创建此脚本是为了更容易在非常不同的数据库模式之间练习主要网站的数据库迁移.该脚本将执行以下任务:

  1. 使用数据备份最新版本的架构.(示例:开发数据库)
  2. 删除目标数据库(如果存在)
  3. 将备份还原到目标测试数据库
  4. 尽管存在约束和外键,但删除目标数据库中的所有数据

使用说明

第1部分

您可能希望使用备份对话框从SSMS中获取此代码.单击带圆圈的图标以获取特定方案的脚本.

  • 如果这样做,请记住在生成脚本之前在备份选项中设置"覆盖" - 我们不想附加到备份集.

在此输入图像描述

第2部分

USE MASTER在删除目标数据库之前,请不要忘记包含该命令.如果在单个SSMS会话中第二次运行此脚本,如果不包含此命令,则会出现致命错误.我们DROP DATABASE在这里也使用它不仅删除过时的TargetDB,还删除它的文件(注意,DB必须是"活动的"才能工作)

第3部分

您可能希望使用SSMS对话框为您生成此初始还原脚本,类似于您对备份的第1部分所执行的操作.

第4部分

不要在这里使用Truncate - 如果你有外键它将无法工作

源代码(在SSMS中运行)

----------------------------------------------------------------------------------------
-- CREATE AN EMPTY COPY OF DATABASE
----------------------------------------------------------------------------------------
/* PART 1: Backup the good database */
BACKUP DATABASE [OriginalDB] 
        TO  DISK = N'd:\backup.bak' WITH NOFORMAT, INIT,  
            NAME = N'OriginalDB-Full Database Backup', SKIP, 
        NOREWIND, NOUNLOAD,  STATS = 33
GO

/* PART 2: If your destination database already exists, drop it */
USE master -- Make sure to include this -- it allows you to reuse script in same SSMS session
DROP DATABASE [migration]

/* PART 3: Restore the backup to the new location */
RESTORE DATABASE [TargetDB] 
        FROM  DISK = N'D:\backup.bak' WITH  FILE = 1,  
        MOVE N'OriginalDB' TO N'D:\sql data\TargetDB.mdf',  
        MOVE N'OriginalDB' TO N'C:\SQL Data\TargetDB_1.ldf',  
        NOUNLOAD,  STATS = 33
GO

/* PART 4: Delete all tables' data in the migration testing target */
PRINT N'Clearing [TargetDB]'
USE [TargetDB]
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"       -- disable all constraints
EXEC sp_MSForEachTable "DELETE FROM ?"                  -- delete data in all tables
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"  -- enable all constraints
----------------------------------------------------------------------------------------
-- BLANK DATABASE COPY CREATED, READY FOR TESTING
----------------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)