我目前正在进行 SQL Server 迁移(从 SQL Server 2005 到 2008 R2 服务器,在新的物理服务器上)。
数据库本身将使用数据库备份和恢复脚本进行传输。我已经测试过了,它工作正常,没有问题。
我担心的是所有其他实例/系统对象,例如登录、SQL 代理作业。这些已从源服务器编写并重新应用到新服务器上,恐怕我已经忘记了一些。我可以明显地直观地比较使用SQL Management Studio,这就是我所做的,但它既耗时又容易出错。因此,在及时拔掉现有服务器的插头之前,我更希望有一种更“科学”的方法来确认一切都在那里......
我一直在寻找进行这种比较的软件,但只找到了模式或数据比较工具。我想我可以比较 sys.sql_logins 和 msdb.dbo.sysjobs 等系统表,但我不知道它们全部。
简而言之,有没有一种方法可以快速比较两个服务器的实例级对象,如果可能的话,还可以比较它们的内容,而不仅仅是通过名称?
谢谢。
我们有一个生产 SQL Server 2005 服务器,我们在上面托管了 200 个数据库。
我们想在我们的新服务器上托管这些数据库。在新服务器上安装了 SQL Server 2005 并准备就绪。
我想知道迁移整个数据的最佳和最方便的方法包括:
总之,我希望在新服务器上的新实例上拥有与当前 SQL Server 2005 完全相同的副本。
如果你能指导我解决这个问题,我将不胜感激。
此致
我是数据库管理的新手,我们正在使用 PostgreSQL。我需要做的就是将 CSV 文件(对应大约 200 个表)迁移到我们的数据库。为每个 CSV 文件手动创建表格有点烦人,所以请帮帮我。有什么办法不仅可以导入数据,还可以从CSV文件生成表格吗?
我必须做一个迁移,我应该从 40 个 Access 表中检索数据,这些表应该包含几个相同的列(但不是全部,模式不同)。为简化起见,我使用 SSMA 在 SQL Server 中转换这些表。
它是通过 SSIS 迁移的一部分。我必须将所有这些表合并到一张表中,而不会重复。所有表格的部分处理都是相同的,但有一些微妙之处。一个问题是列名略有不同(如 X_Y 而不是 X)。每个表都有特定的列,但我不想检索其中的数据。
我希望这不是一个太宽泛的问题,但是:
尝试做一个通用的部分,将表名作为变量,对其中的条件应用相同的处理来处理差异是否更好?
或者我应该只是复制和粘贴核心/模板数据流并在单独的包中管理每个差异?
我有一个大数据库(大约 900GB),当我将它迁移到新服务器时,转储速度不超过 2MB/s(非常慢)。服务器之间的链路为 10Gb/s。
该数据库包含 20 个不同大小的表(最大的一个有 600GB 左右)。由于服务器具有不同版本的 postgresql(源 9.3 和目标 9.4),我无法将所有集群复制到新服务器。我尝试使用:
pg_dump -h source | pg_restore -h 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
但没有结果。我也尝试转储到文件,然后使用 '-j' 参数恢复,但也没有结果(20 分钟后只有一个线程工作,因为其他人完成了他们的工作)。问题不在于磁盘速度,因为这两种方法都给了我相似的速度。
我没有任何迁移如此大数据的经验,所以也许这种方法很糟糕。您有什么建议为什么这种迁移会变慢,以及如何加快速度?
场景是这样的,prod 是两个带镜像的两节点 FCI(主/灾难 DC)。这工作得很好。新硬件即将推出,版本升级到 SQL Server 2012(从 2008 R2 开始),主要形式为两个双节点 FCI,带有异步 AG,以将数据传输到第二个 FCI。(DR 是在 DR 站点中具有相同框的所有 SAN 镜像)
当 SQL Server 2012 FCI 主数据库位于 AG 中时,我可以将 2008 R2 主数据库和日志传送到 SQL Server 2012 FCI 主数据库吗?
如果没有,我可以让 AG 关闭,然后登录船进行迁移,然后上线并设置 AG,这不是世界末日。只是想看看我是否可以跳过此设置。
根据对这个问题的回答,我设法产生了以下输出以获得运行的值总和:
id creation operation value running sum
SyJw-c 2016-09-01 00:11:08.307419 positive_op_1 1.33 28.82
SyJw-c 2016-08-21 08:32:54.431662 negative_op_1 -1 27.49
SyJw-c 2016-08-18 07:38:33.878365 positive_op_2 1 28.49
SyJw-c 2016-08-14 18:12:03.599797 negative_op_1 -1 27.49
SyJw-c 2016-08-02 15:44:29.693303 positive_op_1 1.33 28.49
SyJw-c 2016-07-31 12:08:50.659905 override_op_1 4.66 27.16
SyJw-c 2016-06-26 06:53:54.537603 negative_op_1 -3.5 22.5
SyJw-c 2016-05-31 13:34:08.005687 negative_op_1 -1 26
SyJw-c 2016-05-31 13:34:04.776970 negative_op_1 -1 27
SyJw-c 2016-05-31 11:27:09.502983 override_op_2 28 28
Run Code Online (Sandbox Code Playgroud)
但我的情况更复杂。我不仅需要对这些值求和,还需要能够首先根据其下方行的运行总和对某些行执行转换。
我先解释一下动机:
目前我有一个带有增量、减量和覆盖操作的表。我想将数据移植到一个只有增量和减量操作的表中,这样我就可以直接总结这些值。我不希望维护旧表,只是一种将数据迁移到更简单模型的方法,因此只将数据附加到新表。
采用上面的“原始”表,我想编写一个查询(我在 postgresql 9.5 上运行)并获得一个与下面非常相似的表。(相反,我想知道我正在尝试的是 …
我正在迁移 SQL Server 群集。我想听听成功迁移的注意事项。
生产集群的规格是:
目标集群的规格是:
特别注意事项:
此时我所做和测试的内容如下:
还:
要做或考虑的事情:
我有一个与其他人描述的类似的问题。
IN使用索引,需要10分钟才能运行;我试过了
set session eq_range_index_dive_limit=4294967295; 没有运气。set @@global.max_seeks_for_key=100; 还是没有运气。这是在我升级了一些服务器之后发生的。
mysql_upgrade 没有报告任何问题。
正如我所指出的,我看到了其他问题,但其中提出的答案都没有解决我的问题。
非常感谢罗兰多到目前为止的回答。我继续在 my.cnf 的 [mysqld] 部分对此进行了测试
optimizer_switch = index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=off,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=off,derived_merge=off
Run Code Online (Sandbox Code Playgroud)
遗憾的是,索引仍然没有被拾取。我尝试关闭所有新添加的选项:
duplicateweedout=off
condition_fanout_filter=off
derived_merge=off
Run Code Online (Sandbox Code Playgroud)
我什至尝试过,因为我在我的解释计划中SET optimizer_switch='block_nested_loop=off'
得到了'Using where; Using join buffer (Block Nested Loop)'和。'Using temporary; Using filesort'
还在挠头。谢谢,最重要的是升级导致很多查询不使用索引,这仍然是一个痛苦。数据库接近 2TB,但查询在 5.6 上的最后几个 master 中运行良好
精简版:
我正在尝试将备份从一个 SQL 托管实例恢复到另一个 SQL 托管实例。这些在不同的订阅中。使用此处的示例 3,我至少可以看到恢复从 sys.dm_operation_status 开始,但错误消息是“订阅 [目标] 不包含 [源 SQL MI]”。
问题: 如何将数据库从一个 SQL 托管实例迁移到另一个(在不同订阅中)?我目前的解决方法是对 blob 存储执行 copy_only 并以这种方式恢复。
一旦我们启用 TDE(进行中),我们将无法对 blob 执行 copy_only 备份。然后怎样呢?
长版:
最近,我们公司开始在 SQL 托管实例(和其他 PaaS/IaaS)上运行 Azure 中的生产工作负载,并且进展顺利。尽管我确实熟悉数据库迁移服务 (DMS),但我们有一个足够大的窗口,表明我们能够使用完整备份执行初始加载。
但是现在我们正在扩展我们的 dev/test/qa 环境,当然我们现在希望从生产环境恢复到这些环境。出于隔离目的,每个人都获得了自己的订阅。
这些命令有效,因为我至少可以在 sys.dm_operation_status 中看到恢复操作开始,但它失败并出现错误。错误是“订阅 [目标] 不包含 [源 SQL MI]”并让我相信交叉订阅还原对我们不起作用(尽管跨区域可以)。
DMS 似乎不支持使用数据库迁移服务作为源的方案。
Select-AzSubscription -Subscription $SourceSubscriptionID
$GeoBackup = Get-AzSqlInstanceDatabaseGeoBackup -ResourceGroupName $SourceResourceGroupName `
-InstanceName $SourceSQLMI `
-Name $SourceDatabaseName
Select-AzSubscription -Subscription $TargetSubscriptionID
Restore-AzSqlInstanceDatabase -FromGeoBackup `
-GeoBackupObject $GeoBackup `
-TargetInstanceDatabaseName $TargetDatabaseName `
-TargetInstanceName $TargetSQLMI ` …Run Code Online (Sandbox Code Playgroud) migration ×10
sql-server ×5
postgresql ×2
backup ×1
clustering ×1
csv ×1
mirroring ×1
ms-access ×1
mysql ×1
mysql-5.6 ×1
mysql-5.7 ×1
pg-dump ×1
replication ×1
restore ×1
scripting ×1
ssis ×1
upgrade ×1