将表从一个数据库复制到另一个数据库时,将sql server 2008锁定源表

时间:2014-04-02 13:45:31

标签: sql sql-server database

我有一个产品表,我们的生产数据库有4200万条记录。 为了建立索引和备份,我们在名为“ProductsDB”的同一个框中创建了另一个数据库

如果我将带有SSMS导入向导的产品表的所有记录从DB1导入DB2,它会在DB1(生产)上创建任何锁定或缓慢吗?

我不关心DB2(ProductsDB)在锁定或缓慢方面的问题,在我们调整代码之前无法访问它们。


这不是一个有效的答案,但我的经验是:

由于我无法找到问题的“确切”答案(我在线搜索了很多),我冒了风险并在此表上使用了导入向导。完成时间不到5分钟,并且没有注意到Web服务器或数据库服务器上的性能/锁定问题。

此交易的缺点; - 它没有创建任何主键 - 它没有从源表

创建任何现有索引

我需要再次创建它们,但它仍然很好,这就是我想要的。

希望这有助于将来的参考,我会继续寻找它。

2 个答案:

答案 0 :(得分:2)

This文章可以帮助您。

部分内容:

Bulk Update Locks Bulk update (BU) locks are used when bulk copying data into a table and either the TABLOCK hint is specified or the table lock on bulk load table option is set using sp_tableoption. Bulk update (BU) locks allow processes to bulk copy data concurrently into the same table while preventing other processes that are not bulk copying data from accessing the table.

答案 1 :(得分:2)

您可以使用Table Hints来阻止SQL Server锁定数据。以NOLOCK为例。

请注意,这可能非常危险,因为您可能最终会读取随后回滚的未提交数据;所以要知道你在做什么并小心。