CLR集成中的套接字通信

时间:2015-01-30 06:36:54

标签: c# sql-server sockets sqlclr

套接字通信在CLR集成中是否表现良好。

例如:我在CLR Integration中创建了一个PROC。它从表中获取所有数据,只想将数据发送到TCP服务器。

命令:

CREATE ASSEMBLY TcpClr FROM 'G:\TcpClrTest.dll' WITH PERMISSION_SET = EXTERNAL_ACCESS
GO

CREATE PROCEDURE SendDataToSrv
(
@NAME nvarchar(20)
)
AS EXTERNAL NAME 
TcpClr.[TcpClrTest.TcpSend].SqlProce;
GO

EXEC SendDataToSrv 'cdc.dbo_Test_CT'

TcpClrTest.dll 中的一些代码:

using (SqlCommand cmd = new SqlCommand("SELECT * FROM tableName", con))
{
     using (SqlDataReader reader = cmd.ExecuteReader())
     {
         while (reader.Read())
          {
              //string value = reader[0].ToString();
              //tcpClient.Write(value);
              //  ......get all data and send to tcp server.
          }
      }
}

我用命令EXEC SendDataToSrv 'cdc.dbo_Test_CT'执行了proc,该表有100000行和18列。这将花费大约5分钟。我也将相同的代码复制到常用功能,而不是CLR集成,它只需要花费30秒.TCP服务器和SQL Server在同一台机器上运行。如果我删除tcpClient.Write(value)代码,只需从表中获取数据,它就会很快。

在CLR集成中,我应该做些什么来改善

0 个答案:

没有答案