[这是我几天前提出的类似问题的不同方法,我认识到“克隆”的方法是错误的,因为这将涉及太多更改并使实际数据库脱机]
解释:
我有一组系统安装(WebApp + SQL Server 数据库),其中数据库有两组对象,一个是小的“核心”,另一个是大的“instance_specific”。
这些系统需要不时在另一个系统的基础上重建(如 Excel 财务场景案例),如果“核心”可以保留,那么重建系统将是最好的,其他所有内容都从源数据库中删除和导入(源数据库有时会有所不同)
至今:
CREATE DATABASE Database1_copy AS COPY OF Database1;
不是一个选项,因为需要重建所有核心,Azure 都不能很好地管理从 SSMS 创建的数据库,既不建立所需的连接,也不维护用户和角色......(更改数据库不是好主意)
与从备份/导入数据层应用程序恢复相同...
脚本似乎真的不是一个好的选择,不包括 SEQUENCES(可能还有其他对象)并且它的重量太大而不实用(见最后的注释)。我应该如何在 SSMS 上加载 360mb 脚本以在目标系统上执行它?
SQLAzureMW v5.15.6 Release Binary for SQL Server 2014,无法真正尝试,因为我用完了内存和异常(16gb ram)。数据库太大或有问题?
Azure 不支持基于手动使用备份 sql 函数的解决方案,例如: https ://www.mssqltips.com/sqlservertip/1243/auto-generate-sql-server-database-restore-scripts/ ...
为了让一个实例“清晰”并准备好接收备份,我真的很喜欢下一篇文章的想法,过滤掉属于核心的对象: 在一个 sql 语句中删除所有表、存储过程、触发器、约束和所有依赖项
而且由于数据量大,如果“数据流”直接从 db 到 db,而不是返回到本地,那就太好了,如果可以从目标数据库执行就更好了
所以:
在我最美好的梦想中,我想象一个 SP(类似于 stackoverflow 上的一种形式),它逐个对象地进行重构,并在其中加载数据,甚至将序列初始化为最后使用的值。
我尝试复制 TABLES(带有约束和索引,AND DATA)、SEQUENCES(带有实际值)、VIEWS、SP、FUNCTIONS,我认为仅此而已(不需要传递 USERS 和 ROLES)
我也来过 Apexsql 和 RedBeltTools,还没有尝试过,但也许是解决方案,即使我不想依赖在本地运行的 3rd 方软件。
我没有选择吗?
我应该开始研究如何构建自己的 SP 迁移工具吗?(我不确定如何/从哪里开始......)
只是一些实际源数据库的数量:
CHECK_CONSTRAINT 12
DEFAULT_CONSTRAINT 259
FOREIGN_KEY_CONSTRAINT 145
PRIMARY_KEY_CONSTRAINT 162
SEQUENCE_OBJECT 7
SERVICE_QUEUE 3
SQL_INLINE_TABLE_VALUED_FUNCTION 1
SQL_SCALAR_FUNCTION 27
SQL_STORED_PROCEDURE 765
SQL_TABLE_VALUED_FUNCTION 6
UNIQUE_CONSTRAINT 54
USER_TABLE 268
VIEW 42
除了用户和角色,我认为这里没有其他任何遗漏,不是吗?
Script DB delivers a 360 mb (over 500k lines)
and it seems to not include SEQUENCES at least
(SMSS scripting let me just chose: Tables/Views/SPs/UserDefFunctions/Users/DatabaseRole)