簡體   English   中英

批量插入權限被拒絕-BLOB與FILESTREAM

[英]BULK INSERT permission denied - BLOB vs FILESTREAM

我的公司在安全性方面非常嚴格。 我的項目(使用VB.Net和SQL Server 2008構建)要求用戶上載PDF文件,然后將其與關聯的路徑一起存儲到數據庫中。 因為文件大小約為256kb或更小,所以我想將文件插入為Single BLOB 我的表有兩列Path為varchar(50)Filevarbinary(max) 我的SQL查詢看起來像這樣:

INSERT INTO [DBNAME].[dbo].[SOMETABLE](PATH, FILE)
values ('C:\Somefile.pdf', (SELECT * FROM 
OPENROWSET(BULK N'C:\Somefile.pdf', SINGLE_BLOB)
AS import ))

不幸的是,我僅對數據庫具有讀取和寫入權限,因此產生以下錯誤: You do not have permission to use the bulk load statement. 我已經閱讀了這篇文章,但是出於其他安全原因,我不會被授予InsertADMINISTER BULK OPERATIONS權限。 在我閱讀的其他文章中,沒有權限,此選項似乎是死路一條。

現在,我正在研究使用FILESTREAM插入文件,但將無法創建新數據庫。 我可以通過在現有數據庫和數據庫表上啟用FILESTREAM並使用它們來完成此操作嗎? 我已經做了兩天了,任何幫助或想法都將不勝感激。

如果您無法創建新的數據庫,我猜他們也將不允許您更改現有數據庫。 您可以添加FILESTREAM功能,但至少需要創建一個新的FILEGROUP。 如果尚未將服務器配置設置為支持FILESTREAM功能,則還需要更改服務器配置。 同樣,在您描述的環境中聽起來不太可能。 另外,通常建議將FILESTREAM用於較大的文件(> 1 MB),而不是您提到的256KB。

由於它們在您的環境中非常嚴格,因此您可以嘗試將文檔加載到VB前端,對其進行編碼,然后從此處將其存儲為數據庫,作為從此處插入的字節數據。 它不需要BLOB / BULK插入,聽起來像在這樣的受限環境中可能是更好的選擇。

為什么不僅僅通過普通的SQL語句和二進制數組加載文件? 大小足夠小,這意味着您只需要從應用程序訪問文件,而服務器無需查找和讀取它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM