Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSIS模式切换死锁_Sql_Sql Server_Ssis - Fatal编程技术网

Sql SSIS模式切换死锁

Sql SSIS模式切换死锁,sql,sql-server,ssis,Sql,Sql Server,Ssis,我有一个SSIS包,它接收过去1/2小时内更改的数据,并将其从DB2数据库传输到SQL server。该数据被加载到一个空的导入表(import.tablename)中,然后插入到一个临时表(newlive.tablename)中。然后,在事务中,将staging表与live(dbo)表进行模式切换。仅供参考,dbo表是可视化工具(Looker)的后端 我的问题是模式切换现在正在创建死锁。每次运行包时,它都会影响不同的表。我以前在较大的表中使用过这个过程(也是后端到Looker),以前没有遇到过

我有一个SSIS包,它接收过去1/2小时内更改的数据,并将其从DB2数据库传输到SQL server。该数据被加载到一个空的导入表(import.tablename)中,然后插入到一个临时表(newlive.tablename)中。然后,在事务中,将staging表与live(dbo)表进行模式切换。仅供参考,dbo表是可视化工具(Looker)的后端

我的问题是模式切换现在正在创建死锁。每次运行包时,它都会影响不同的表。我以前在较大的表中使用过这个过程(也是后端到Looker),以前没有遇到过这个问题

我在另一篇文章中读到,由于索引,用户遇到了类似的问题,但所有数据都已写入目标表

如果您有任何关于去哪里找的想法或建议,我们将不胜感激

代码位于SSIS包中的执行SQL任务中,包含:

BEGIN TRAN 
ALTER SCHEMA LAST_LIVE TRANSFER DBO.TABLENAME 
ALTER SCHEMA DBO TRANSFER NEW_LIVE.TABLENAME 
GRANT SELECT ON DBO.TABLENAME TO LOOKER_LOOKUP 
COMMIT TRAN

@bilinkc I更新了主postMy假设中的模式切换代码,即死锁发生在第一条语句上—尝试将表从dbo切换到last_live会被Looker工具中的读卡器活动阻止。一种快速的测试方法是将DBO.TABLENAME上的
REVOKE SELECT添加到LOOKER\u查找中在您的交易之前。这样,alter模式应该能够在执行切换所需的时刻在表上获得独占锁。看看分区切换是否会遇到同样的挑战可能会很有趣。可能会,但我不知道<代码>将TABLE dbo.TABLENAME切换为NEW_LIVE.TABLENAME@bilinkc谢谢。我会尝试你的想法在撤销测试,但任何想法,为什么它发生在不同的表,而不是相同的。另外,这是在开发环境中运行的,没有其他用户,只有我自己,所以dbo会被访问是很奇怪的,因为我没有运行任何来自Looker工具的查询。哦,如果它是安静的,那么您需要查看死锁图,以找出还有哪些进程在表上阻止您获得独占锁。