【问题标题】:SQL Server Azure, replicate/copy/importing 90% of source-db into existing oneSQL Server Azure,将 90% 的源数据库复制/复制/导入到现有数据库中
【发布时间】:2017-01-28 18:59:21
【问题描述】:

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

解释:

我有一组系统安装(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,由于内存不足、trow 和异常(使用 16gb ram)而无法真正尝试。数据库太大或有问题?

基于手动使用备份sql函数的解决方案,如: https://www.mssqltips.com/sqlservertip/1243/auto-generate-sql-server-database-restore-scripts/ Azure 不支持...

为了让实例“清除”并准备好接收备份,我真的很喜欢下一篇文章的想法,过滤掉属于核心的对象: Drop all the tables, stored procedures, triggers, constraints and all the dependencies in one sql statement

由于数据量大,如果“数据流”直接从 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)

【问题讨论】:

  • 你能澄清你的问题吗?一个不明确的问题会给你一个不明确的答案。示例:如何将架构从一个 Azure sql db 传递到另一个?如何传递数据?如何同时传递数据和架构?
  • @feranto,对不起,是的,是的,我很清楚(英语不是我的第一语言)。我尝试在各个表上传递 90% 的操作系统模式和数据

标签: sql-server database azure database-backups backup-strategies


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回复,不知道我该怎么做才能解决这个问题,对我来说(在我看来)似乎很简单,可以将不包括少数对象的 bacpac 恢复到现有数据库中。我意识到“选择性恢复备份”可能看起来违反直觉。我相信我的场景与 PRODUCTION -> QUALITY 克隆没有什么不同,其中存在特定于环境的对象。感谢 SQL-Server-Data_tools,我不认识它们,但基本上它们看起来像 RedBelt 或 ApexSQL 工具,不是吗?
猜你喜欢
  • 2015-09-11
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多