如何使用SQL Server 2014从远程服务器上的命名管道批量插入?

时间:2015-08-24 10:52:02

标签: c# sql-server ssis named-pipes

这个问题与Can Sql Server BULK INSERT read from a named pipe/fifo?

的回答有关

@Grimace_of_Despair使用C#提供了解决方案。有关详细信息,请参阅the GitHub project

  1. 使用server name = .

    创建命名管道
    public NamedPipe(string name, string server, string dataValue)
    {
             _dataValue = dataValue;
    
             Name = name;
             Server = server;
             Stream = new NamedPipeServerStream(name, PipeDirection.Out, 2,
                                                PipeTransmissionMode.Byte, 
                                                PipeOptions.Asynchronous);
             Stream.BeginWaitForConnection(OnConnection, this);
    }
    
  2. 使用命名管道批量插入

    var insertCommand = DbConnection.CreateCommand();
    
    insertCommand.CommandText = "BULK INSERT [MyTable] FROM '\\.\pipe\mypipe' WITH (FORMATFILE='c:\path\to\formatfile')";
    insertCommand.ExecuteNonQuery();
    
  3. 当我在同一台服务器上批量插入并使用\\\\.\pipe\mypipe

    时,上面的批量插入命令正常工作

    当我用\\\\.\pipe\mypipe替换\\\\LocalMachineName\pipe\mypipe时,出现错误:

      

    System.Data.SqlClient.SqlException(0x80131904):批量加载:数据文件中遇到意外的文件结尾。

    是否有人知道此错误的原因以及如何解决此问题?

0 个答案:

没有答案