Olá pessoal,
Boa noite!
Neste post vou demonstrar como validar pelo SQL Server, se um servidor está respondendo à rede, utilizando o CLR (C#) e a classe PING, que simula uma requisição de ping que você realiza no prompt do DOS no Windows ou no Shell do Unix.
No dia a dia, utilizo muito essa função para verificar se um servidor de compartilhamento de arquivos, por exemplo, está disponível para gravar arquivos de rotinas de bancos de dados. Caso contrário, posso fazer com que minha rotina dispare um e-mail ou mesmo grave esses arquivos em outro diretório. Podemos utilizar essa função para criar monitoramentos de servidores também. Enfim, as possibilidades são muitas, e variam de acordo com a sua necessidade e criatividade.
Código-fonte da função do CLR (C#):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System; using System.Data.SqlTypes; using System.Net.NetworkInformation; public partial class UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction] public static SqlBoolean fncMaquina_Ligada(SqlString Ds_Hostname) { try { var ping = new Ping(); var reply = ping.Send(Ds_Hostname.Value, 5); //timeout em segundos return (reply != null) && (reply.Status == IPStatus.Success); } catch (Exception e) { return false; } } } |
Uma vez compilada no banco de dados, podemos utilizar a função assim:
And that's it, folks!
Grande abraço e até o próximo post.
SQL Server – Como verificar se a máquina está ligada check computer server is online ping
SQL Server – Como verificar se a máquina está ligada check computer server is online ping
Bom dia Dirceu, estou precisando tentando utilizar essa função mas recebo o seguinte erro: “System.Security.SecurityException: Falha na solicitação da permissão de tipo ‘System.Net.NetworkInformation.NetworkInformationPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.”
Se puder me ajudar a enteder o que está acontecendo agradeço muito!
Oi Thiago. Já viu se não é a permissão do assembly? Pra fazer ping, precisa publicar como external access ou unsafe. O modo padrão (safe) não vai funcionar.
É exatamente a permissão Dirceu! Mas quando altero para unsafe ou external access não consigo nem publicar porque dá o seguinte erro: “O assembly é confiável quando uma das seguintes condições é verdadeira: o assembly está assinado com uma chave assimétrica ou de certificado que tem logon correspondente à permissão UNSAFE ASSEMBLY”