2013-07-08 42 views
2

我想从访问.mdb文件中插入数据到sqlserver, 这是执行数据插入SQL BulkCopy或使用OLEDB的OPENDATASOURCE的最快方式。SQL BulkCopy与OPENDATASOURCE哪一个更快

数据将像约20个表的100,000个记录。

谢谢。

我正在做这从c#代码,我需要哪一个执行更好,我无法比较,因为OPENDATASOURCE要求管理员权限。

回答

0

你有没有尝试从访问文件导入数据到SQL数据库? 数据库 - >任务 - >导入,Microsoft Access作为数据源,mdb文件作为参数

如果要通过C#执行此操作,则应考虑在存储过程中使用用户定义表类型。

+0

我这样做从C#代码,我需要哪一个更好,我无法比较,因为OPENDATASOURCE是要求管理员权限。 – Lalitya

+1

考虑使用用户定义表类型 – Ehsan

1

在我的观点中,插入大量数据的最佳插入性能可以通过使用SQL批量复制实现,因为此方法完全绕过SQL查询语言并直接将数据流传输到SQL。

此外性能改进

  • 通过默认使用SqlBulkCopy大容量复制操作期间使用行锁。如果指定了SqlBulkCopyOptions中的TableLock选项,则会在批量复制操作期间获得批量更新锁定,并且性能将得到改进。
  • 集群表:如果可行,加载它的最佳方法是删除聚集索引。
  • 指标:指标创造巨大的问题与并行所以是时候,一个好的 想法没有任何活动指数来加载

,您可以了解更多关于白皮书:SqlBulkCopy的http://www.sqlbi.com/wp-content/uploads/SqlBulkCopy-Performance-1.0.pdf的性能

+0

thanks.but我想要哪一个表现更好,因为我必须将其发布到生产中。 – Lalitya

+0

也感谢您的白皮书。它非常翔实。 – Lalitya

+0

不用客气。并没有什么可比的SQLBulkCopy ..我见过开发人员要求在论坛上Oledb的bulkcopy类像sqlbulkcopy使用sqlbulkcopy http://forums.asp.net/t/1537002.aspx/1 ..和http:// www.codeproject.com/Questions/46816/Bulk-Copy-in-oledb ..所以我再说一遍sql批量复制:) – Microtechie