Sql server CLR过程能否打开端口并侦听它?
我希望有一个clr过程,调用该过程时打开一个udp端口以侦听传入数据。它永远不会返回给调用方。调用方将其超时设置为无限。MSSQL服务器会允许吗?这是一个判断调用。我认为最重要的决定因素是插座保持打开的时间。如果它是一个“事务性”长度,在不同的系统中差异很大,那么我会说这很好。我看不出集群有任何问题,因为SQLServer没有活动/活动集群(但NLB肯定可以)。另一个决定因素是套接字是否是单个实例(在非广播端口上侦听) 因此,如果:Sql server CLR过程能否打开端口并侦听它?,sql-server,udpclient,Sql Server,Udpclient,我希望有一个clr过程,调用该过程时打开一个udp端口以侦听传入数据。它永远不会返回给调用方。调用方将其超时设置为无限。MSSQL服务器会允许吗?这是一个判断调用。我认为最重要的决定因素是插座保持打开的时间。如果它是一个“事务性”长度,在不同的系统中差异很大,那么我会说这很好。我看不出集群有任何问题,因为SQLServer没有活动/活动集群(但NLB肯定可以)。另一个决定因素是套接字是否是单个实例(在非广播端口上侦听) 因此,如果: 函数/存储过程将从T-SQL(SQL Server代理或SS
- 函数/存储过程将从T-SQL(SQL Server代理或SSRS?)调用
- 函数/存储过程预计将在“事务”时间段内退出
(我会说30秒是典型的-但是在高负载系统中,一个锁,然后等待30秒的调用可能是该死的,所以你需要考虑你的用例。) - 该函数是可重入的(可以并行运行多次)
- 该函数是从C#或其他功能更强大的客户端调用的(您在那里处理吗?可能是一个库?)
- 函数将等待远远超过典型事务长度的不确定时间
- 该函数是单个实例(只有单个会话才能成功执行该函数)
- 必须从SQL调用(便于维护和故障报告)
- 如果超过设定的超时时间(~30s),则应超时
- 可以在多个会话中并行运行
- 答案:是SQL CLR函数的理想候选
- 必须从SQL调用以处理多种平台的混合(有些客户端在Linux上的PHP上,有些客户端在Windows上的VB6上)
- 具有已定义且用户可控制的超时(但此测试部分失败,因为它可能会超过事务持续时间)
- 可以在多个会话中并行运行(广播)
- 答案:SQL CLR函数的“确定”候选项
- 没有真正的理由必须从SQL调用它,因为它正在缓冲一个表
- 没有超时-预计将全天候运行
- 调用应用程序(SQL Server代理)必须确保此函数始终只执行一次,并在失败时重新启动它(重新实现service manager)