套接字通信在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集成中,我应该做些什么来改善