CLR集成中的套接字通信

套接字通信在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分钟。我也将相同的代码复制到常用function,而不是CLR集成,它只需要大约30 seconds.TCP服务器和SQL Server在同一台机器上运行。如果删除tcpClient.Write(value)代码,只需从表中获取数据,就可以快速完成。

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