AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 258188
Accepted
Ali
Ali
Asked: 2020-01-26 09:38:50 +0800 CST2020-01-26 09:38:50 +0800 CST 2020-01-26 09:38:50 +0800 CST

SQL Server 仅将一张表从一种环境自动刷新到另一种环境

  • 772

我正在寻找一种最佳实践/选项,仅将一张表从 Prod 刷新到 Staging 环境。

技术细节:

  1. Source 中的表格每天都在加载新数据。
  2. 目标中的表应仅在刷新时表示新数据。

我正在考虑的一些选项:

  1. 复制(事务性)
  2. SSIS
  3. TSQL 脚本 - SQL 代理作业

我的第一个偏好是选择选项 3。这是一个不错的选择吗?如果是的话,有人可以指导我编写脚本。

sql-server t-sql
  • 1 1 个回答
  • 838 Views

1 个回答

  • Voted
  1. Best Answer
    LadyBug1
    2020-01-27T04:22:13+08:002020-01-27T04:22:13+08:00

    这是一个偏好问题。请看下面我发现与它们一起工作的一些优点/缺点。

    1. 复制(事务) - 只要您不需要触摸表格,就可以很好地工作。它是实时的,因此您将使您的开发人员/测试人员对“新鲜”、几乎实时的数据感到非常满意。如果您需要添加列、删除列或表结构发生更改,这会变得很棘手,因为在几乎所有情况下,您都需要从头开始重新初始化复制,但是对于一个几 MB 的表,它会很快工作,这变成从几 GB 开始的问题,因为这需要时间。如果您使用您的帐户设置复制,请确保它不会过期或被禁用,因为您会使复制崩溃;最好是使用服务帐户。要考虑的另一件事是网络和服务器资源 - 实时复制的事务将“吸收” 一些网络和一些服务器内存和 I/O,但除非您的表每秒修改数百行(或更多),否则我认为这不是一个真正的问题。你有一个关于如何设置的很好的教程在这里。
    2. SSIS - 您的暂存环境中将没有(几乎)实时数据。因此,如果您的任何开发人员或测试人员有在产品和阶段之间比较数据的想法 - 需要考虑刷新时间。如果您更改表结构,则需要修改包(始终确保同时刷新包内的元数据)。我的经验是,与重新创建复制相比,您为使 SSIS 包保持最新状态所做的工作更多,但这取决于个人偏好和要求。此外,如果您将包设置为“截断和加载”,无论您的源表是否更新,您每天都会删除并再次写入相同的数据。如果你不希望你需要在你的包中添加一些逻辑,这可能会很复杂,如果你不这样做会导致数据丢失或重复 不太了解您的数据。要考虑的另一件事是您的访问权限:如果您想部署它,您需要类似 SQL 管理员的权限,如果您想从本地文件夹运行它,您需要该机器的 RDP 权限和写入权限以将您的包复制到服务器上的本地驱动器。您仍然需要一个 SQL 代理作业来自动化它(我假设您不想手动运行它)。请记住,您需要使用带有 BI 插件的 Visual Studio 来创建包。您可以找到有关设置 SSIS 包的文档 您仍然需要一个 SQL 代理作业来自动化它(我假设您不想手动运行它)。请记住,您需要使用带有 BI 插件的 Visual Studio 来创建包。您可以找到有关设置 SSIS 包的文档 您仍然需要一个 SQL 代理作业来自动化它(我假设您不想手动运行它)。请记住,您需要使用带有 BI 插件的 Visual Studio 来创建包。您可以找到有关设置 SSIS 包的文档这里和一个很好的教程在这里。
    3. TSQL 脚本 - SQL 代理作业 - 这也是我个人的偏好,因为它最容易设置和维护,特别是如果您没有 SSIS 和/或复制经验。就像 SSIS 一样,您将没有(几乎)实时数据。如果您的表结构发生变化,您将拥有更多控制权并且更容易更改。根据您可以对源表进行的更改类型,同步数据可能会变得很棘手,但是您始终可以选择截断表并每次都插入生产中的所有内容(强烈不推荐用于大表,即使您的今天的桌子很小,想想 3-5 年后它会有多大!)。当我设置这样的工作时,我通常会花时间了解数据和可能发生的所有更改,并使用合并语句越多越好。如果你的 prod 表中有一个插入日期列,那么你可以围绕它来处理你的逻辑。设置 SQL 代理作业时,请确保将所有者更改为服务帐户,否则如果您的帐户被禁用,作业将崩溃。

    对于第 2 点和第 3 点,请考虑在插入/修改数据后立即进行一些索引工作,以将性能保持在较高水平。

    • 2

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve