【发布时间】: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