SQL Server中的sp_table选项
我想知道为SQLServer2005/2008设置“大容量加载时的表锁”的sp_table选项的利弊?我的场景是,我有3个处理数据库的线程,一个查询线程,一个批量插入线程和一个删除线程 以下是sp_tableoption的MSDN相关链接 提前感谢,,SQL Server中的sp_table选项,sql,sql-server,bulkinsert,Sql,Sql Server,Bulkinsert,我想知道为SQLServer2005/2008设置“大容量加载时的表锁”的sp_table选项的利弊?我的场景是,我有3个处理数据库的线程,一个查询线程,一个批量插入线程和一个删除线程 以下是sp_tableoption的MSDN相关链接 提前感谢,, 乔治只需在批量插入中执行即可 例子 将锁定表的大容量插入 BULK INSERT Northwind.dbo.[ORDER Details] FROM 'f:\orders\lineitem.tbl' WITH (
乔治只需在批量插入中执行即可 例子 将锁定表的大容量插入
BULK INSERT Northwind.dbo.[ORDER Details]
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ':\n',
FIRE_TRIGGERS,
TABLOCK --this is it
)
BULK INSERT Northwind.dbo.[ORDER Details]
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ':\n',
FIRE_TRIGGERS
)
此语句不会锁定表
BULK INSERT Northwind.dbo.[ORDER Details]
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ':\n',
FIRE_TRIGGERS,
TABLOCK --this is it
)
BULK INSERT Northwind.dbo.[ORDER Details]
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ':\n',
FIRE_TRIGGERS
)
通过使用-h(用于提示)开关和“tablock”使用tablock进行BCP
您可以从SSI或DTS中进行大容量插入,然后插入到那里的表锁中
例如,在DTS中的“转换数据”任务下,查看“选项”选项卡,选中“使用快速加载和表锁定”
SSIS也有类似的东西我很困惑。您提到--“改为在大容量插入中执行”,但我没有注意到您在大容量插入SQL语句中设置了任何tableoption?你能澄清一下吗?我在第一个查询中使用TABLOCK参数,在第二个查询中使用-h“TABLOCK”我更新了答案,为批量插入器提供了两个查询,一个带TABLOCK,另一个不带TABLOCK。我感到困惑。在我提到的MSDN页面中,默认情况下,在执行大容量插入时,将使用行级锁。为什么你在这里提到tablock(tablock是表锁)?您的意思是建议在执行大容量插入时使用表锁吗?是的,这两个可以从命令行或SSMS执行,但您需要在xp_cmdshell中包装bcp。我的意思是,您还可以通过执行sql任务执行bul insert,您只需检查“使用快速加载”和“表锁”