2011-06-01 50 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存储上