我試圖使用批量方法向表(列數據類型:VARBINARY(MAX)
)插入一個500 MB的文件,SQL需要大約15分鐘來插入文件。我有2GB內存,我的電腦是2核心,我正在使用SQL Server 2008 R2。使用批量插入將文件插入到SQL Server 2008 R2
我的問題:
- 是正常需要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 '''[email protected]+''', 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
這不是一個編程問題,您應該將此問題移至[數據庫管理員](http://dba.stackexchange.com)。 – parth6 2014-10-18 07:14:13
好 - 向我們展示**您的代碼!**您的SQL語句是什麼?你插入的表的結構是什麼? – 2014-10-18 07:27:12
即使考慮到正在製作這些數據的多個副本,這確實非常慢。由於這些副本,系統可能開始分頁。運行時查找硬頁面錯誤的增量。使用Process Explorer,使用系統內存信息「窗口」。 – usr 2014-10-18 08:27:52