在MS SQL Server 2008 R2中,如何根据旧数据库的模式创建新数据库,但不复制任何数据?我正在使用SQL Server管理工作室。
答案 0 :(得分:49)
右键单击数据库并选择Tasks
- > Generate Scripts
。
然后,您可以选择所需的所有对象或仅选择某些对象。
您应该查看一些脚本选项:
您可以将它们创建到新的查询窗口或将它们保存到SQL文件。
答案 1 :(得分:8)
创建此脚本是为了更容易在非常不同的数据库模式之间练习主要网站的数据库迁移。该脚本将执行以下任务:
您可能希望使用备份对话框从SSMS中获取此代码。单击带圆圈的图标以获取特定方案的脚本。
在删除目标数据库之前,不要忘记包含USE MASTER
命令。如果在单个SSMS会话中第二次运行此脚本,如果不包含此命令,则会出现致命错误。我们在这里使用DROP DATABASE
不仅可以删除陈旧的TargetDB,还可以删除其文件(注意,数据库必须是“活动的”才能使其工作)
您可能希望使用SSMS对话框为您生成此初始恢复脚本,类似于您对备份的第1部分所做的操作。
不要在这里使用Truncate - 如果你有外键它将不起作用
----------------------------------------------------------------------------------------
-- 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
----------------------------------------------------------------------------------------
答案 2 :(得分:4)
有一个很好的脚本向导可以帮助你。您可以使用对象资源管理器中的右键单击数据库来尝试 - >任务 - >生成脚本。您可以从数据库中选择要导出的对象。
答案 3 :(得分:2)
在SQL Server Management Studio中,您可以通过菜单单击对象并选择...
"Script [Object] As" ... "CREATE to"... "New Query Window"
您需要为要创建的每个对象创建脚本。
如果您想完成所有操作,请单击数据库菜单,然后选择
“任务”...“生成脚本”并按照此article按照向导进行操作: