我的生产数据库有问题,所以我想在开发数据库上重现该问题。我使用的DBMS是SQL Server 2016(SP1)
为重现该错误,我正在使用SQL Server Management Studio中的“导出”将所有数据复制到开发数据库中。
生产数据库正在运行,并且用户仍在使用该数据库,因此在我导出数据时将插入,更新甚至删除行。
在我导出数据时,对修改后的行(插入,更新甚至删除)会发生什么情况。它将导出到我的开发数据库中吗?为什么呢,例如SQL Server如何处理这样的事情?
将生产数据库迁移到开发数据库的好方法是什么?
还有一个极端的问题,如果在导出过程中修改表列会发生什么?
编辑: 我需要提及的是,生产环境中的DBMS版本高于开发环境,因此我无法使用备份/还原来移动数据库
答案 0 :(得分:2)
将生产数据库转移到开发中的好方法是什么 数据库
您应该backup
在生产服务器上restore
在开发服务器上。
这不会阻止用户在产品上进行活动
修改后的行会发生什么(插入,更新甚至删除) 当我导出数据时。
如果您的insert
/ update
是并发的,但是读取过程已经放在表上,则您的更改将被阻止。反之亦然,如果任何DML
已在同一行上启动,则读取过程将等待,直到提交/回滚修改。
最极端的是,如果在修改表列的同时 出口正在进行中吗?
正在读取Sch-S
锁在表上时,因此在释放此锁之前无法进行任何列修改。