执行用户定义例程或聚合“存储过程”期间发生 .NET Framework 错误:System.Net.WebException:

问题描述 投票:0回答:1

以用户身份执行:usr_emanD。
执行用户定义例程或聚合“uspCLRNotify”期间发生 .NET Framework 错误:System.Net.WebException:无法连接到远程服务器

System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立的连接失败 19.20.xxx.xx:xxxx

System.Net.Sockets.SocketException:
在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress 套接字地址)
在System.Net.ServicePoint.ConnectSocketInternal(布尔connectFailure,套接字s4,套接字s6,套接字和套接字,IP地址和地址,ConnectSocketState状态,IAsyncResult asyncResult,异常和异常)
System.Net.WebException:
在 System.Net.HttpWebRequest.GetRequestStream(TransportContext& 上下文)
在 System.Net.HttpWebRequest.GetRequestStream()
在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串方法名称,对象[]参数)
在Notifications.com.direction.page.server.MailI4.Notify(字符串GUID)
在 StoredProcedures.Notify(String GUID) 。 [SQLSTATE 42000](错误 6522)。 该步骤失败。

我正在将服务器迁移到新服务器,之前的服务器是物理 Windows Server 2008,但新服务器是 Microsoft Server 2019 上的虚拟服务器。我保留相同的数据库服务器来保持作业通知的执行。

但是现在,当我关闭以前的服务器并尝试使用新服务器运行每日通知时,会出现以下错误。我想更改数据库服务器为新虚拟服务器的新 IP 地址所采用的 IP 地址。

SQL错误是:

执行用户定义例程或聚合“uspname”期间发生 .NET Framework 错误,作业 SQL Server 出现错误

and 是一个存储过程,只有一个程序集,只有程序集的地址,即 ServiciosWebClr2。它唯一拥有的就是内部加密的二进制代码。我已经检查过其他论坛,他们提到它可能在源代码中,但我在代码中的任何地方都没有旧的IP。

有谁知道怎么解决或者有类似情况吗

我已经尝试过反编译程序集,但我在磁盘上找不到它,并且根据注释,它不是物理文件,它只是由 SQL Server 生成的,我得到了

c:\\SqlClassLibrary.XmlSerializers.dll, 
c:\\SqlClassLibrary.dll, SendDataBaseMail.dll 
ServiciosWebClr2.dll

当我进行查询搜索时,文件显示一个 id 为“1”的表格,然后显示带有二进制数字的内容。当我在服务器中查找文件时,它显示“找不到”。我尝试使用 Dot Peek 获取程序集但不起作用,我尝试在 Visual Studio Code Main 中进行修改,但没有结果。

c# sql-server dll migration
1个回答
0
投票

这里有一个非常原始的 ps 模块可以帮助您入门:

$results = Invoke-Sqlcmd -ServerInstance "yourserver" -Database "yourdatabase" -Query "select content, case when name like '%\%' then right(name, charindex('\', reverse(name)) -1) else name end as name, datalength(content) as ln
from sys.assembly_files
--where assembly_id = 65539" -MaxBinaryLength 99999999

foreach ($r in $results)
{
    $r #for debugging
    Set-Content -Path $r["name"] -Value $results["content"][0..($results["ln"]-1)] -Encoding Byte
}

它获取所有程序集并将其存储到单独的文件中,为了以防万一,我已经删除了它的路径部分。然后你就可以反编译它了。

您可以添加where条件来保存特定文件。

© www.soinside.com 2019 - 2024. All rights reserved.