【问题标题】:How to create a script that creates a full database schema in the proper order?如何创建一个以正确顺序创建完整数据库模式的脚本?
【发布时间】:2017-10-24 13:53:30
【问题描述】:

我想编写整个 SQL Server 数据库(表、视图、函数、过程、用户)的脚本。

我尝试了管理工作室的“生成脚本”功能,但它以错误的顺序创建对象,我希望创建顺序是有意义的,例如这个创建顺序对于一个只有 4 个表的简约数据库有意义:

CREATE TABLE ORDER_LINES
CREATE TABLE SUPPLIERS
CREATE TABLE ORDERS
CREATE TABLE USERS

有没有一种方法可以按依赖顺序(从最不依赖到最依赖)列出所有数据库对象?

我想要实现的是在不使用备份文件的情况下在同一服务器实例上制作数据库副本。

谢谢

【问题讨论】:

  • >>>复制数据库
  • 您还可以使用 SSIS 复制数据库(有或没有数据),或使用 SSDT(SQL Server 项目)导出架构并创建 dacpac 文件。您可以使用 SSMS 导出数据层应用程序文件 (dacpac),然后使用命令行或 SSMS 重新部署它。在 SSDT 中,您可以进行模式比较并执行同步。也有 3rd 方工具。我认为这个问题对于 SO 来说有点宽泛,但在 Database Administrators 上可能有意义。
  • @sepupic 我想要架构和数据,但我想在为架构创建坚如磐石的脚本后编写数据查询。
  • @Pred 我会参加 SSIS 谢谢

标签: sql-server database sql-server-2008-r2


【解决方案1】:

您可以使用 sp_detach_db 'DatabaseName',然后复制并粘贴文件(数据和日志文件 mdf 和 ldf),然后重新附加它。

然后可以使用复制的文件以其他名称重新附加它:

CREATE DATABASE MyAdventureWorks   
    ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),   
    (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')   
    FOR ATTACH;  

https://docs.microsoft.com/en-us/sql/relational-databases/databases/attach-a-database

【讨论】:

  • 我不想使用备份或 mdf ldf 文件流文件。我正在寻找一种仅用于复制表格数据的脚本方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多