【问题标题】:Modify table row while export/import table to another database SQL Server在将表导出/导入到另一个数据库 SQL Server 时修改表行
【发布时间】:2019-02-04 04:31:18
【问题描述】:

我的生产数据库有问题,所以我想在我的开发数据库上重现该问题。我使用的 DBMS 是 SQL Server 2016 (SP1)

为了重现错误,我使用 SQL Server Management Studio 中的导出将所有数据复制到开发数据库。

生产数据库正在运行,用户仍在使用该数据库,因此在导出数据时会插入、更新甚至删除行

  • 在我导出数据时,修改后的行(插入、更新甚至删除)会发生什么。它会被导出到我的开发数据库吗?为什么,比如 SQL Server 如何处理这样的事情?

  • 将生产数据库迁移到开发数据库的好方法是什么?

  • 还有一个极端,如果在导出过程中修改了表列会发生什么?

编辑: 我需要提一下,生产中的 DBMS 版本高于开发版本,所以我不能使用备份/恢复来移动数据库

【问题讨论】:

  • 备份/恢复?
  • 检查this article。它声明 SSIS 元素具有 SERIALIZABLE 事务隔离级别..
  • @VojtěchDohnal 已经尝试过了,但我有问题,因为生产数据库上的 DBMS 版本高于开发数据库

标签: sql-server database ssms


【解决方案1】:

将生产数据库转移到开发的好方法是什么 数据库

您应该在生产服务器上backup 您的数据库,在开发服务器上restore 它。 这不会阻止用户在产品上的活动

修改后的行会发生什么(插入,更新,甚至删除) 在我导出数据时。

如果您的insert/update 是并发的,但读取过程已经在一张表上进行,您的更改将被阻止。反之亦然,如果任何DML 已在同一行上启动,则读取过程将等到修改提交/回滚。

还有一个极端的情况,如果表列被修改了会发生什么? 正在导出?

当您阅读Sch-S 时,表上已持有锁,因此在释放此锁之前无法进行任何列修改。

【讨论】:

  • 除了备份/恢复还有什么方法可以移动数据库?因为我的 DBMS 生产版本高于开发版本
  • 其他方式是 SSIS 包(它是导入/导出向导使用的)、复制数据库向导(它还创建 SSIS 包但针对所有表)或编写数据库架构脚本 + bcp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 2017-12-01
  • 2011-05-02
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
相关资源
最近更新 更多