2011-06-01 29 views
0

這與passing a huge string parameter to stored procedure不完全一樣......SQL Server Sproc大字符串參數?

我有一個SQL Server 2008 sproc,它需要一個id int和一個大字符串並將其插入到表中。該sproc由.NET 4.0代碼調用,該代碼將File.ReadAllText轉換爲字符串,然後將其發送到存儲區。字符串的來源是一個文本文件。想將來每天將許多100MB文件讀入一個不可變的「使用一次」字符串,然後將其發送到SQL Server聽起來會讓內存浪費在C#端。

什麼是更聰明的方式將文本從磁盤流式傳輸到sproc?我可以將當​​前的Varchar(Max)參數更改爲任何更合理的參數。

所有的想法表示讚賞。

謝謝。

+0

有沒有可能以某種方式將文件複製到物理SQL Server計算機(其驅動器之一)?或者,運行應用程序的SQL Server計算機和計算機共享一個驅動器?這個想法是使用「Copy」命令將文件移動到服務器的磁盤 - 然後將其加載到服務器本身。 – 2011-06-01 20:39:04

+0

我從來沒有見過在關係數據庫中存儲大文件的要點。我認爲將文件保存在磁盤上並將文件路徑插入數據庫會更聰明。 – mikerobi 2011-06-01 20:39:29

回答

0

我看您的具體情況三個選項:

  1. 保持你現有的設計
  2. 使用OPENROWSET在SP
  3. 文件流

項目一個是最好的,如果該文件是遠離服務器和唯一的名稱。

第二項將取消c#端的工作,但您將不得不處理文件上的SQL讀取權限,命名約定和文件清理。

第3項是當前SQL Server 2008的最佳實踐。有許多HOW2文章可供參考。這種選擇將允許SQL管理文件,同時將文件保留在NTFS存儲上