-1

[这是我几天前提出的类似问题的不同方法,我认识到“克隆”的方法是错误的,因为这将涉及太多更改并使实际数据库脱机]

解释:

我有一组系统安装(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)
4

1 回答 1

0

既然您提到您想将 90% 的AzureSQL数据库复制到现有的数据库中。我可以将这种情况视为比较模式和数据中的两个数据库,并尝试将选定的更改从原始数据库发送到目标数据库。

也就是说,我建议使用SQL Server Data Tools,它有一套完整的工具可以在这种情况下为您提供帮助,以及多种更新命运数据库的方法:内联、通过脚本、通过 dacpac、通过 bacpac。

另外,由于您的问题是如此开放,我不知道它是否会解决您的情况,但请尝试查看它及其比较功能。

于 2017-01-30T00:30:13.177 回答