Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net SqlBulkCopy是常规批量插入的方法吗?_.net_Security_Sqlbulkcopy - Fatal编程技术网

.net SqlBulkCopy是常规批量插入的方法吗?

.net SqlBulkCopy是常规批量插入的方法吗?,.net,security,sqlbulkcopy,.net,Security,Sqlbulkcopy,我正在.NET 4中开发一个在线工具,将可能较大(数千行)的Excel页面读取到数据表中,然后使用SqlBulkCopy.WriteToServer()将其上载到匹配的Sql Server 2000(即将于2008年)表中。它只在我的公司内部使用,所以我不需要太担心外部使用的安全问题 我让它像做梦一样工作,而且自然比我以前执行的逐行插入快得多。但现在我在问自己,这是否是正确的方法 首先,从业务的角度来看,所有其他数据访问都是通过授予用户exec权限的存储过程进行的,而这需要表级安全性 其次,大多

我正在.NET 4中开发一个在线工具,将可能较大(数千行)的Excel页面读取到数据表中,然后使用SqlBulkCopy.WriteToServer()将其上载到匹配的Sql Server 2000(即将于2008年)表中。它只在我的公司内部使用,所以我不需要太担心外部使用的安全问题

我让它像做梦一样工作,而且自然比我以前执行的逐行插入快得多。但现在我在问自己,这是否是正确的方法

首先,从业务的角度来看,所有其他数据访问都是通过授予用户exec权限的存储过程进行的,而这需要表级安全性

其次,大多数在线文档都提到这是一个一次性操作的工具,而不是日常使用的地雷

我找不到太多关于使用SqlBulkCopy的负面信息。是否有任何安全问题或其他我应该担心的问题?有没有其他我可以考虑的方法?与所有事情一样,我的主要目标是让它在安全和“正确”的方法下尽快工作


非常感谢。

我想说你对这个选择很满意。与标准的insert语句相比,它具有常规命令、非批处理调用的性能优势。这就是为什么它可能不同于存储过程的“标准”方法

我想说,安全性并不是简单地验证输入的问题。看起来您使用它所做的只是将数据直接传输到表中,而不是运行任何自定义SQL

至于不止一次地运行它,我们在生产代码中使用它在多个地方、多次执行大数据操作—性能优势超过了您必须使用的略有不同的DAL代码


唯一的潜在问题是内存压力。如果您从一个对象图创建一个
DataTable
(我们所做的事情),您将在内存中获得该数据的第二个副本(albiet,short-live)。在某些地方,我们将代码从使用
DataTable
更改为使用自定义类,该类在对象图(我说的是图形,通常是两个平面列表)上实现
IDataReader
。这避免了内存压力。

我认为您对这个选择没有意见。与标准的insert语句相比,它具有常规命令、非批处理调用的性能优势。这就是为什么它可能不同于存储过程的“标准”方法

我想说,安全性并不是简单地验证输入的问题。看起来您使用它所做的只是将数据直接传输到表中,而不是运行任何自定义SQL

至于不止一次地运行它,我们在生产代码中使用它在多个地方、多次执行大数据操作—性能优势超过了您必须使用的略有不同的DAL代码


唯一的潜在问题是内存压力。如果您从一个对象图创建一个
DataTable
(我们所做的事情),您将在内存中获得该数据的第二个副本(albiet,short-live)。在某些地方,我们将代码从使用
DataTable
更改为使用自定义类,该类在对象图(我说的是图形,通常是两个平面列表)上实现
IDataReader
。这避免了记忆压力。

谢谢亚当-这正是我想要的。@Kurt没问题。我唯一能提出的建议就是以某种方式记录标准的差异。不幸的是,我们有大量毫无意义的代码段,并且打破了传统-但却被某个特定的人发现,这是为了性能/bug修复/黑客而做的,原因没有任何解释。谢谢Adam-这正是我要找的。@Kurt没问题。我唯一能提出的建议就是以某种方式记录标准的差异。不幸的是,我们有大量毫无意义的代码段,并且打破了传统——但却被某个特定的人发现,它是为了性能/bug修复/黑客而做的,而没有任何解释。