|
|
1
5
我已成功地使大容量插入(但不是BCP)在Windows 7 ans SQL Server 2008R2上正确使用命名管道。这里有一些技巧。 二 两个不同线程上的命名管道实例,都具有相同的管道名称。SQL Server将打开第一个实例,从中读取几个字节,然后关闭它,导致WriteFile在第一个线程中引发PipeException。SQL Server随后将立即重新打开命名管道,并从中输入所有数据。如果在后台没有第二个线程准备好提供数据,SQL server将在第一个线程有时间从PipeException恢复之前返回错误。 其次,我必须在对WriteFile的一次调用中写入所有数据。我从一个循环开始,在这个循环中,我向管道写入了多个批,但批量插入只使用了我编写的第一批。它似乎执行非阻塞读取,并将任何返回零字节的读取视为文件结尾。
|
|
|
2
5
我想对@DanMenes发表评论(感谢您的启发),但出于参考目的,我将添加它作为一个单独的答案。
I've worked out a solution in .NET
我将总结导入器的实施情况: 1.创建管道
3.开始批量插入
注意:我还没有将性能测试添加到项目中,但初步测试确实显示,在事务方面,性能提高了2倍到5倍
|
|
|
3
4
我不确定管道是否可以设置为允许在同一管道上使用两个独占锁,而不会发生严重的黑客攻击。我想你可以绕过它,或者侵入fltmgr.sys:) 正如其他海报所建议的,使用.NETAPI进行批量处理或使用OLEDB或ODBC接口可能更简单,尽管这意味着您必须编写自己的文件解析器。 |
|
4
-1
做
|
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |