受管理层鼓励编写 SQL Server 存储过程的 C# 开发人员经常会产生这样的过程
create table #t1 (...);
insert into #t1 Select ... from table_a where ...;
insert into #t1 Select ... from table_b where ...;
update #t1 Set ... = ... where ...
Select * from #t1;
Run Code Online (Sandbox Code Playgroud)
单个语句相当简单,这种方法使它们产生正确的结果。
我的任务通常是将这些过程迁移到 Oracle。
让我们面对以下事实。
我从 Oracle dba 那里学到的一件事是尽可能避免使用临时表。甚至 SQL 服务器上的性能也受益于此类修改。
用联合替换单个刀片
在最简单的情况下,上面的可以转换成类似
select case when ... then ... end, ... from table_a where ...
union
select case when ... then ... end, ... from table_b …Run Code Online (Sandbox Code Playgroud) 我正在处理一个包含用于迁移的映射数据库元素的项目,我想知道其他人使用哪些工具来执行此操作?
Excel 是一种非常灵活的记录简单映射的方式,但我想知道是否有人有他们遵循的特定方法或他们可以推荐的其他工具?
我需要将数据从旧数据库导入新数据库,但结构略有不同。例如,在旧数据库中,有一个表记录了员工及其主管:
CREATE TABLE employee (ident TEXT PRIMARY KEY, name TEXT, supervisor_name TEXT)
Run Code Online (Sandbox Code Playgroud)
现在,新的数据库如下:
CREATE TABLE person (id BIGSERIAL PRIMARY KEY, name TEXT, old_ident TEXT);
CREATE TABLE team (id BIGSERIAL PRIMARY KEY);
CREATE TABLE teammember (person_id BIGINT, team_id BIGINT, role CHAR(1));
Run Code Online (Sandbox Code Playgroud)
也就是说,新的(更通用的)数据库可以创建人员团队,而不是带有主管姓名的普通员工表。员工是有角色的成员,有角色的'e'主管's'。
问题是如何轻松地将数据employee从新结构迁移到新结构,每个员工-主管对一个团队。例如,员工
employee: ('abc01', 'John', 'Dave'), ('abc02', 'Kyle', 'Emily')
Run Code Online (Sandbox Code Playgroud)
将被迁移为
person: (1, 'John', 'abc01'), (2, 'Dave', NULL), (3, 'Kyle', 'abc02'), (4, 'Emily', NULL)
team: (1), (2)
teammember: (1, 1, 'e'), (2, 1, 's'), (3, …Run Code Online (Sandbox Code Playgroud) 我是管理 SQL Server 的新手,但我对 SQL 语言和制作 SSIS 包很满意。
我想将数据从 SQL Server 2005 迁移到 2016。
我的问题是我是否需要担心系统数据库和其他对象,例如索引、存储过程、视图、安全性和权限。登录或者我可以只迁移数据。
在这种情况下,这将是推荐的程序。
我的步骤:
pg_dumpall在服务器上运行 finalprod-server-oldprod-server-old永远。prod-server-new)prod-server-new现在如何避免在pg_dumpall(step1和step2之间)期间对数据库进行修改,使这段时间的修改不会丢失?
在我的情况下,有一个小的停机时间是 100% 可以的。
“集群”中有几个数据库(顺便说一句,我不喜欢“集群”这个词。我想大多数人认为“集群”是一组多台计算机,但在这种情况下,它指的是一台 Postgres 服务器,其中包含几个数据库)。
我的问题被标记为可能与“使 Postgres 数据库暂时只读(用于执行卷快照)”重复。我不认为它是重复的,因为在我的情况下是不同的,因为我不要求临时只读状态。
目前,我们的应用程序使用 Oracle 11g 数据库运行。我们正在开发在 MySQL 集群上运行的应用程序的更新版本。我们需要将数据从Oracle 数据库迁移到MySQL 数据库。这不是数据库对象的直接副本。在较新版本的应用程序模式(表结构和关系)中发生了变化。审计表也需要复制。有什么方法可以映射旧 Oracle 模式中的表、列和新 MySQL 模式并应用复制以便复制数据?
我们正在考虑分两步进行这项活动。
在执行这种从一个 RDBMS 供应商到另一个 RDBMS 供应商的数据库迁移时,是否有任何最佳实践?是否有任何可用的开源或商业工具?
我的公司正在将我们的基础设施迁移到新的数据中心,我正在尝试找出使新服务器上的数据库与当前生产数据库保持同步的最佳方法,直到新环境准备好投入使用。作为一名全职 DBA,我做了一些研究,从我所读到的内容来看,跨国复制设置似乎最适合我们的需求。
一些细节:生产数据库的大小约为 90 GB,使用 Robocopy 将其副本移动到其中一台新服务器需要大约 9 个小时。当前的生产数据库需要在整个迁移过程中保持在线和可访问。由于是简单恢复,所以数据库镜像不可用。
事务复制是保持数据库同步的最佳方法吗?
我的计划:
我心里有两件事。事务复制要求每个发布的表都有一个主键,而生产数据库中的很多表都没有定义主键。我不认为这会是一个太大的问题,因为我主要关心的是让数据库同步。我们将在稍后的数据中测试使用数据库的不同应用程序,但我想确保这不是一个严重的问题。其次,我是否还需要从原始实例中移动任何关联的系统 DB,例如 master?我们正在新环境中迁移到 Active Directory 设置,所以我不关心用户等,但我不确定系统 DB 的必要性。
总的来说,我是否正确理解了这些概念?
我有 SQL Server 2012 备份文件,想将这些文件还原到 SQL Server 2016/2014。它会起作用吗?
我需要在卸载 SQL Server 2012 之前找出这一点。
我在 2014 年有 20 个听众,大约有 500 个 DBS,
以最少的停机时间和精力来迁移这些的最佳方法是什么
我的想法是:停止访问备份 dbs 开始恢复 dbs 在恢复运行时:在 2014 年删除 AOG 在 2016 年创建它完成
这看起来很简单,但是对于 TB 数据,这需要一些时间。
找到了这个 -> 从 2014 年到 2016 年升级 AlwaysOn AG 的推荐方法 但它也没有解释
希望有人能帮忙
sql-server migration availability-groups sql-server-2014 sql-server-2016
在开发解决方案的原型时,通常还没有确定技术,并且可能与最终产品中使用的技术不同。
在这种情况下,我倾向于使用 Microsoft SQL Server 编写尽可能标准的查询,以简化最终迁移到另一台服务器的过程。
是否有一种方法或一些已知的做法可以直接在 SQL Server 中或通过SQL Server Management Studio (SSMS)强制使用标准 SQL over T-SQL 方言?
migration ×10
sql-server ×4
postgresql ×2
backup ×1
mysql ×1
oracle ×1
pg-dump ×1
restore ×1
sql-standard ×1