[SQL Server] Démarrer un serveur à distance

-- =============================================

-- Author:        KHARROUBI Zouhaier

-- Create date:   10/12/2014

-- Description:   Démarrer un serveur à distance

-- =============================================

CREATE PROCEDURE [dbo].[usp_DemarrerServeurDistant]

      -- Add the parameters for the stored procedure here

AS

BEGIN

      -- SET NOCOUNT ON added to prevent extra result sets from

      -- interfering with SELECT statements.

      SET NOCOUNT ON;

     

      DECLARE @Requete    AS NVARCHAR(MAX)

      DECLARE @Nbre_Fic_Error AS INT

      DECLARE @Nom_Fic_Error AS VARCHAR(60)

      DECLARE @Mail_Body AS NVARCHAR(MAX)

     

      IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE id = object_id(N'[tempdb]..[#ListeFichiersError]'))

            DROP TABLE #ListeFichiersError

     

           

      CREATE TABLE #ListeFichiersError

      (

      Num_Fic_Error     INT IDENTITY(1,1),

      Nom_Fic_Error VARCHAR(60) NULL

      )

     

     

      SELECT @Requete='INSERT INTO #ListeFichiersError EXEC master.sys.xp_cmdshell ''DIR \\Serveur_2\JOURNAL\*.zip /B'''

      EXEC (@Requete)

      DELETE FROM #ListeFichiersError WHERE Nom_Fic_Error LIKE '%File Not Found%' OR LTRIM(RTRIM(Nom_Fic_Error))='' OR Nom_Fic_Error IS NULL

      SELECT @Nbre_Fic_Error=COUNT(*) FROM #ListeFichiersError WHERE Nom_Fic_Error NOT LIKE '%File Not Found%'

     

      IF @Nbre_Fic_Error>=15

            BEGIN

                  SELECT @Mail_Body= N'<H>Bonjour,<BR></BR></H>'

                  SELECT @Mail_Body=@Mail_Body+ '<H><b></b>L''intégration des données a échouée.<BR></BR></H>'

                  SELECT @Mail_Body= @Mail_Body+ N'<H>Le nombre de(s) fichier(s) Erronés sont : ' + CAST(@Nbre_Fic_Error AS VARCHAR(3)) + '<BR></BR></H>'

                 

                  SELECT @Mail_Body= @Mail_Body+  N'<H>Le Serveur Serveur_2 a été démarré.<BR></BR></H>' +

                  N'<H><i>Cordialement,<BR></BR></H>' +

                  N'<H>Service Base de Données</i></H>' ;

                            

                  IF @Nbre_Fic_Error>0

                  BEGIN

                        --Envoyer un mail d'alerte

                        EXEC msdb..sp_send_dbmail@profile_name='SendMail',@importance='High', @recipients='Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.', @subject='Echec Intégration de Données',@body=@Mail_Body, @body_format = 'HTML';

           

                        --Forcer le démarrage  de la machine Serveur_2

                        EXEC master.sys.xp_cmdshell'C:\PSEXEC\psexec.exec \\01.02.03.04 shutdown -r -f -t 30 -c "Demarrage forcee suite Anomalie Integration"'

                  END

            END

            DROP TABLE #ListeFichiersError

END