使用 SQL Server Business Intelligence Development Studio,我对 OLE DB 目标数据流执行了大量平面文件,以将数据导入到我的 SQL Server 表中。在 OLE DB 目标编辑器中的“数据访问模式”下,它默认为“表或视图”而不是“表或视图 - 快速加载”。有什么不同; 我能感觉到的唯一明显区别是快速加载传输数据的速度要快得多。
通常在我的工作中,我必须在 SQL Server 中创建一个过程,该过程将处理数百万数据行,将它们保存到临时表(临时表)中,最后将它们保存到数据库中的一个或多个表中。
我不是在寻找替代解决方案,例如 SSIS。
我无法禁用索引、约束、使数据库脱机、更改恢复模式等。
我们一直在寻找将这个过程设置为在系统不那么繁忙时运行的方法,但我们在 24/7/365 在线零售商环境中工作。
有一个非常相似的问题: Performance Inserting and Updating Millions of rows into a table
这个问题也很重要: 插入大量行的最快方法是什么?
例子一:
CREATE PROCEDURE [dbo].[udpstaging_page_import_fromFilter]
@sourceDesc nvarchar(50) -- e.g. 'Coremetrics'
,@feedDesc nvarchar(50) -- e.g. 'Daily Exports'
,@process_job_task_logID bigint
AS BEGIN
SET NOCOUNT ON;
BEGIN TRY
--truncate table prior INSERT
exec dbo.udpstaging_page_truncateTable;
declare @source_feedID int;
exec crm_admin.dbo.udpsource_feedID_select @sourceDesc
,@feedDesc
,@source_feedID = @source_feedID OUTPUT;
-- drop temp tables
if exists (select * from tempdb.dbo.sysobjects o where o.xtype in ('U') and …Run Code Online (Sandbox Code Playgroud) performance sql-server insert update sql-server-2014 query-performance