使用大容量插入将文件插入SQL Server 2008 R2

使用大容量插入将文件插入SQL Server 2008 R2,sql,sql-server-2008-r2,bulkinsert,Sql,Sql Server 2008 R2,Bulkinsert,我试图使用批量方法将一个500 MB的文件插入表中(列数据类型:VARBINARY(MAX)),SQL大约需要15分钟来插入该文件。我有2GB内存,我的电脑是Core2Duo,我使用的是SQLServer2008R2 我的问题是: 15分钟是正常的吗,还是太长了 有没有更快的方法 谢谢 我的程序是SQL CREATE PROCEDURE [dbo].[UploadFile] ( @FileName nvarchar(100) , @FileSize nvarchar(

我试图使用批量方法将一个500 MB的文件插入表中(列数据类型:
VARBINARY(MAX)
),SQL大约需要15分钟来插入该文件。我有2GB内存,我的电脑是Core2Duo,我使用的是SQLServer2008R2

我的问题是:

  • 15分钟是正常的吗,还是太长了
  • 有没有更快的方法
谢谢

我的程序是SQL

CREATE PROCEDURE [dbo].[UploadFile]
(
    @FileName   nvarchar(100) , 
    @FileSize  nvarchar(50) ,
    @FileDescription  nvarchar(200),
    @FileExtontion  nvarchar(10), 
    @DateUploaded  nvarchar(50),
    @FilePath  nvarchar(3500),
    @UserId int 
)
AS
BEGIN
    SET NOCOUNT ON;

    declare @FileInBinary varbinary(MAX)

    IF OBJECT_ID('#ORStable') IS NULL 
    BEGIN
        -- Temporary stored into a hash table for avoid data error     
        CREATE TABLE #ORStable (Length BIGINT, vDocument VARBINARY(MAX))

        DECLARE @SQL_QUERY NVARCHAR(4000)
        SET @SQL_QUERY= 'INSERT INTO #ORStable
                         SELECT len(bulkcolumn), *
                         FROM OPENROWSET(BULK '''+@FilePath+''', SINGLE_BLOB) AS BinaryData'

        exec SP_executesql @SQL_QUERY
    END

    SELECT TOP 1 @FileInBinary = vDocument FROM #ORStable

    insert into [File] ([FileName], FileSize, FileDescription, FileExtontion,
                        DateUploaded, FileInBinary, UserId)
    values (@FileName, @FileSize, @FileDescription, @FileExtontion,
            @DateUploaded, @FileInBinary, @UserId)

    DROP TABLE dbo.#ORStable
END
我正在尝试使用大容量将一个500 MB的文件插入表中(列数据类型:VARBINARY(MAX)) 方法,

对于像您这样的低性能系统,需要大文件

15分钟是正常的吗,还是太长了

在文件夹之间同时复制两次该文件需要多长时间?(由于日志记录,这比SQL Server需要做的要多一点)?我的sql数据库可以以接近1gb/秒的速度复制类似的内容,或者可以进行爬网(可能是在一台低功耗机器上,可能只有一张慢速光盘,而不是一吨SSD)

有没有更快的方法


为手头的任务准备合适的硬件。IO是王者,SQL Server靠它生存。您的machien内存不足,无法完成此任务,并且可能有一个类似的非需求匹配光盘子系统。

这不是编程问题,您应该将此问题转移到。好吧-向我们展示您的代码!您的SQL语句是什么?您要插入的表的结构是什么?这确实非常缓慢,即使考虑到正在制作此数据的多个副本。可能是因为这些副本,系统开始分页。在运行时查找硬页错误的增量。使用Process Explorer,使用系统内存信息“窗口”。我的系统需要1分钟才能将一个500 MB的文件从一个文件夹复制到另一个文件夹,但SQL需要在内存中保留更多的内容,而且严重的是,2gb还不足以在windows级别上获得良好的体验(我的平板电脑上说),因此您需要在其中添加分页。我会说,死亡是因为不懂计算机基础知识。Anda文件副本-一个文件副本-是两个操作流。sql插入至少包含3个流。