{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/05/03/audit-des-connexions-echouees-dans-sql-server-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/05/03/audit-des-connexions-echouees-dans-sql-server-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/05/03/audit-des-connexions-echouees-dans-sql-server-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Audit des connexions échouées dans SQL Server\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-05-03T17:06:13+00:00","modified_at":"2019-05-03T17:06:13+00:00","word_count":1520,"reading_time_seconds":456,"summary":"Apparemment, le lien avec la conversation simple ne fonctionne plus. Le nouveau lien est dans mon script Voici le script que j&#39;utilise pour suivre les informations de connexion ayant échoué à l&#39;aide de notifications d&#39;événement (2005 / 2008R2) / * DBA_FailedConnectionTracker: conservez une vue d&#39;ensemble des connexions établies avec cette instance SQLServer. &#8211; Cet utilisateur [&hellip;]","summary_points":["Apparemment, le lien avec la conversation simple ne fonctionne plus.","Le nouveau lien est dans mon script\n\nVoici le script que j&#39;utilise pour suivre les informations de connexion ayant échoué à l&#39;aide de notifications d&#39;événement (2005 / 2008R2)\n/ *\nDBA_FailedConnectionTracker: conservez une vue d&#39;ensemble des connexions établies avec cette instance SQLServer.","&#8211; Cet utilisateur d&#39;implémentation SQLServer Service Brocker avec notifications d&#39;événement\n* /\nUTILISEZ YourBonitoring db;\nsi object_id (&#39;dbo.T_DBA_FailedConnectionTracker&#39;) est nullcommencer    print &#39;Table [T_DBA_FailedConnectionTracker] Créé&#39;;    CREER LA TABLE [dbo].[T_DBA_FailedConnectionTracker](        [host_name] [varchar](128) NOT NULL,        [program_name] [varchar](128) NOT NULL,        [nt_domain] [varchar](128) NOT NULL,        [nt_user_name] [varchar](128) NOT NULL,        [login_name] [varchar](128) NOT NULL,        [original_login_name] [varchar](128) NOT NULL,        [client_net_address] [varchar](48) NOT NULL,        [Database_Name] [varchar](128) non nul,        [tsRegistration]  datetime NOT NULL par défaut getdate (),        [FailedLoginData]  XML            )    Créer un index clusterisé clX_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([tsRegistration])    Créer un index X_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([login_name], [program_name])\nfin \n/ *source utilisant SSB: http://www.simple-talk.com/sql/sql-server-2005/logon-triggers/\nils ont réorganisé leur site.","c&#39;est la nouvelle URL http://www.simple-talk.com/sql/t-sql-programming/logon-triggers/* /\n&#8211; Activer la base de données Service Broker pour DDBAServerPing si c&#39;est le casSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_broker_enabled = 0)Commencer    print &#39;SSB enabled&#39;;    ALTER DATABASE DDBAServerPing SET ENABLE_BROKER;FIN\n&#8211; Nous allons accéder à partir de la procédure stockée activée à une vue qui est &#8211; situé dans une base de données différente &#8211; la vue de gestion dynamique sys.dm_exec_sessions&#8211; Le contexte de sécurité de la procédure stockée ne nous permettrait pas de le faire&#8211; sauf si nous définissons l&#39;option TRUSTWORTHY sur ON.&#8211; Pourquoi et une autre méthode que vous pouvez trouver ici:&#8211; http://blogs.msdn.com/remusrusanu/archive/2006/03/01/541882.aspx\nSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_trustworthy_on = 0)Commencer    print &#39;digne de confiance commuté sur ON&#39;;    ALTER DATABASE DDBAServerPing SET TRUSTWORTHY ON;FIN\n&#8211; Créer une file d&#39;attenteCREATE QUEUE Q_FailedLogon_Tracker_Queue; \n&#8211; Créer un serviceCREATE SERVICE S_FailedLogon_Tracker_Service    ON QUEUE Q_FailedLogon_Tracker_Queue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])\n&#8211; Créer un itinéraireCREATE ROUTE R_FailedLogon_Tracker_Route     WITH SERVICE_NAME = N&#39;S_FailedLogon_Tracker_Service &#39;        , ADRESSE = N&#39;LOCAL &#39;;aller\n/ * L&#39;utilisateur actuel devient propriétaire de EVENT NOTIFICATION, passez donc à &#39;sa&#39; * /EXEC AS LOGIN = &#39;sa&#39;;aller&#8211; Créer la notification d&#39;événement au niveau du serveur pour l&#39;événement AUDIT_LOGINCREATE NOTIFICATION D&#39;EVENEMENTS N_Failed_Login_Notification     SUR SERVEUR POUR AUDIT_LOGIN_FAILED         TO SERVICE &#39;S_FailedLogon_Tracker_Service&#39;, &#39;base de données actuelle&#39;;\naller/ * Revenir à l&#39;utilisateur d&#39;origine * /REVENIR;ALLER \n&#8211; Créer la procédure stockée qui gérera les événements&#8211; Définissez d&#39;abord les options requises pour utiliser le type de données XML.SET ANSI_NULLS ON;SET QUOTED_IDENTIFIER ON;ALLER\nCREATE PROCEDURE dbo.spc_DBA_FailedConnectionTrackerCOMMECOMMENCERSET NOCOUNT ON;&#8211; Utilisez une boucle sans fin pour recevoir des messagesPENDANT (1 = 1)    COMMENCER      DECLARE @messageBody VARBINARY (MAX);            DECLARE @messageTypeName NVARCHAR (256);                 ATTENDRE (                 RECEVEZ LE TOP (1)                                     @messageTypeName = nom_type_message,                                     @messageBody = message_body                                     FROM Q_FailedLogon_Tracker_Queue                                  ), TIMEOUT 500      &#8211; S&#39;il n&#39;y a pas de message, quittez          SI @@ ROWCOUNT = 0            COMMENCER                 PAUSE ;            FIN ;      &#8211; Si le type de message est EventNotification, effectue le travail réel."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"97a9deaf18e8fc1b60da93a263d1ed6c","plain_text":"Apparemment, le lien avec la conversation simple ne fonctionne plus.\nLe nouveau lien est dans mon script\n\nVoici le script que j&#39;utilise pour suivre les informations de connexion ayant échoué à l&#39;aide de notifications d&#39;événement (2005 / 2008R2)\n/ *\nDBA_FailedConnectionTracker: conservez une vue d&#39;ensemble des connexions établies avec cette instance SQLServer.\n&#8211; Cet utilisateur d&#39;implémentation SQLServer Service Brocker avec notifications d&#39;événement\n* /\nUTILISEZ YourBonitoring db;\nsi object_id (&#39;dbo.T_DBA_FailedConnectionTracker&#39;) est nullcommencer    print &#39;Table [T_DBA_FailedConnectionTracker] Créé&#39;;    CREER LA TABLE [dbo].[T_DBA_FailedConnectionTracker](        [host_name] [varchar](128) NOT NULL,        [program_name] [varchar](128) NOT NULL,        [nt_domain] [varchar](128) NOT NULL,        [nt_user_name] [varchar](128) NOT NULL,        [login_name] [varchar](128) NOT NULL,        [original_login_name] [varchar](128) NOT NULL,        [client_net_address] [varchar](48) NOT NULL,        [Database_Name] [varchar](128) non nul,        [tsRegistration]  datetime NOT NULL par défaut getdate (),        [FailedLoginData]  XML            )    Créer un index clusterisé clX_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([tsRegistration])    Créer un index X_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([login_name], [program_name])\nfin \n/ *source utilisant SSB: http://www.simple-talk.com/sql/sql-server-2005/logon-triggers/\nils ont réorganisé leur site. c&#39;est la nouvelle URL http://www.simple-talk.com/sql/t-sql-programming/logon-triggers/* /\n&#8211; Activer la base de données Service Broker pour DDBAServerPing si c&#39;est le casSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_broker_enabled = 0)Commencer    print &#39;SSB enabled&#39;;    ALTER DATABASE DDBAServerPing SET ENABLE_BROKER;FIN\n&#8211; Nous allons accéder à partir de la procédure stockée activée à une vue qui est &#8211; situé dans une base de données différente &#8211; la vue de gestion dynamique sys.dm_exec_sessions&#8211; Le contexte de sécurité de la procédure stockée ne nous permettrait pas de le faire&#8211; sauf si nous définissons l&#39;option TRUSTWORTHY sur ON.&#8211; Pourquoi et une autre méthode que vous pouvez trouver ici:&#8211; http://blogs.msdn.com/remusrusanu/archive/2006/03/01/541882.aspx\nSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_trustworthy_on = 0)Commencer    print &#39;digne de confiance commuté sur ON&#39;;    ALTER DATABASE DDBAServerPing SET TRUSTWORTHY ON;FIN\n&#8211; Créer une file d&#39;attenteCREATE QUEUE Q_FailedLogon_Tracker_Queue; \n&#8211; Créer un serviceCREATE SERVICE S_FailedLogon_Tracker_Service    ON QUEUE Q_FailedLogon_Tracker_Queue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])\n&#8211; Créer un itinéraireCREATE ROUTE R_FailedLogon_Tracker_Route     WITH SERVICE_NAME = N&#39;S_FailedLogon_Tracker_Service &#39;        , ADRESSE = N&#39;LOCAL &#39;;aller\n/ * L&#39;utilisateur actuel devient propriétaire de EVENT NOTIFICATION, passez donc à &#39;sa&#39; * /EXEC AS LOGIN = &#39;sa&#39;;aller&#8211; Créer la notification d&#39;événement au niveau du serveur pour l&#39;événement AUDIT_LOGINCREATE NOTIFICATION D&#39;EVENEMENTS N_Failed_Login_Notification     SUR SERVEUR POUR AUDIT_LOGIN_FAILED         TO SERVICE &#39;S_FailedLogon_Tracker_Service&#39;, &#39;base de données actuelle&#39;;\naller/ * Revenir à l&#39;utilisateur d&#39;origine * /REVENIR;ALLER \n&#8211; Créer la procédure stockée qui gérera les événements&#8211; Définissez d&#39;abord les options requises pour utiliser le type de données XML.SET ANSI_NULLS ON;SET QUOTED_IDENTIFIER ON;ALLER\nCREATE PROCEDURE dbo.spc_DBA_FailedConnectionTrackerCOMMECOMMENCERSET NOCOUNT ON;&#8211; Utilisez une boucle sans fin pour recevoir des messagesPENDANT (1 = 1)    COMMENCER      DECLARE @messageBody VARBINARY (MAX);            DECLARE @messageTypeName NVARCHAR (256);                 ATTENDRE (                 RECEVEZ LE TOP (1)                                     @messageTypeName = nom_type_message,                                     @messageBody = message_body                                     FROM Q_FailedLogon_Tracker_Queue                                  ), TIMEOUT 500      &#8211; S&#39;il n&#39;y a pas de message, quittez          SI @@ ROWCOUNT = 0            COMMENCER                 PAUSE ;            FIN ;      &#8211; Si le type de message est EventNotification, effectue le travail réel.             IF (@messageTypeName = &#39;http://schemas.microsoft.com/SQL/Notifications/EventNotification&#39;)    COMMENCER        DECLARE @XML XML,            @host_name varchar (128),            @ nom_programme varchar (128),            @nt_domain varchar (128),            @nt_user_name varchar (128),            @nom_installation varchar (128),            @original_login_name varchar (128),            @client_net_address varchar (48),            @DonnéesBaseDeDonnées varchar (128),            @ts_logon datetime,            @SPID VARCHAR (5);   \n                SELECT @ XML = CONVERT (XML, @ messageBody)            , @ host_name = &#39;&#39;            , @ nom_programme = &#39;&#39;            , @ nt_domain = &#39;&#39;            , @ nt_user_name = &#39;&#39;            , @ login_name = &#39;&#39;            , @ original_login_name = &#39;&#39;            , @ client_net_address = &#39;&#39;             , @ SPID = &#39;&#39;;   \n                &#8211; Obtenir le SPID et le nom de connexion à l&#39;aide de la méthode value                 SELECT @SPID = @ XML.value (&#39;(/ EVENT_INSTANCE / SPID)[1]&#39;,&#39; VARCHAR (5) &#39;)                      , @ts_logon = @ XML.value (&#39;(/ EVENT_INSTANCE / StartTime)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @host_name = @ XML.value (&#39;(/ EVENT_INSTANCE / HostName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @program_name = @ XML.value (&#39;(/ EVENT_INSTANCE / ApplicationName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_domain = @ XML.value (&#39;(/ EVENT_INSTANCE / NTDomainName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_user_name = @ XML.value (&#39;(/ EVENT_INSTANCE / NTUserName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @original_login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / SessionLoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / LoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            @Database_Name = @ XML.value (&#39;(/ EVENT_INSTANCE / DatabaseName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            ;     \n                &#8211;Choisissez @ nom_programme = cas où supérieur (@ nom_programme), comme &#39;DATABASEMAIL -%&#39;        &#8211; puis sous-chaîne (@ nom_programme, 1, identificateur de caractère (&#39;&lt;&#39;, @ nom_programme, 1) &#8211; 1)        &#8211; else @ nom_programme        &#8212;                            fin\n&#8211; / * GUID du message geef &#39;UABEPRD  EXECBTS&#39; ainsi que le nom de l&#39;application mee !! enregistrer cet utilisateur une seule fois * /&#8211; Mettre à jour dbo.T_DBA_FailedConnectionTracker &#8212;            ensemble [tsLastUpdate] = cas où [tsLastUpdate] &lt;@ts_logon puis @ts_logon&#8212;                                    autre [tsLastUpdate]&#8212;                                 fin&#8212;        Où [host_name] = @host_name&#8211; et cas où supérieure ([login_name]) comme &#39;UABEPRD  EXECBTS%&#39; puis @ nom_programme&#8212;                    autre [program_name]&#8211; fin = @ nom_programme &#8212;            &#8212; et [program_name] = @ nom_programme&#8212;            et [nt_domain] = @nt_domain&#8212;            et [nt_user_name] = @nt_user_name &#8212;            et [login_name] = @login_name&#8212;            et [original_login_name] = @original_login_name&#8212;            et [client_net_address] = ISNULL (@client_net_address, &#39;&#39;)&#8212;            et [Database_Name] = ISNULL (@Données_Database, &#39;&#39;)&#8211;&#8211; si @@ rowcount = 0&#8212;        commencer            INSÉRER DANS [dbo].[T_DBA_FailedConnectionTracker]                                                       ([host_name], [program_name], [nt_domain], [nt_user_name], [login_name], [original_login_name], [client_net_address], [Database_Name], [tsRegistration], [FailedLoginData] )                    valeurs (@nom_hôte, @nom_programme, @nom_domaine, @nom_utilisateur_nt, @nom_machine, @nom_login_original, ISNULL (@adresse_noire_client, &#39;&#39;), ISNULL (@nom_base_de_données, &#39;&#39;), @tient_logon, @XML);\n&#8212;        fin\n                / *        Sélectionnez *        de dbo.T_DBA_FailedConnectionTracker        commandé par [tsRegistration] desc        * /\n        FIN;  FIN;FIN;\nALLERsi object_id (&#39;dbo.spc_DBA_FailedConnectionTracker&#39;) n&#39;est pas nullcommencer    &#8211; Liez la procédure stockée à la Q_FailedLogon_Tracker_Queue     ALTER QUEUE Q_FailedLogon_Tracker_Queue        AVEC STATUS = ON        , ACTIVATION (STATUS = ON                        , PROCEDURE_NAME = dbo.spc_DBA_FailedConnectionTracker                        , MAX_QUEUE_READERS = 4                        , EXECUTE AS SELF);\nfin AUTRECOMMENCER    RAISERROR (&#39;Message DBA: file d&#39;attente SSB FailedConnectionTracker NON activée !!!&#39;, 1,1) WITH log\nFIN/ *Les informations publiées sur S_FailedLogon_Tracker_Service, à propos de l&#39;événement AUDIT_LOGIN, ont la structure suivante:\n  AUDIT_LOGIN_FAILED  2009-02-05T13: 21: 12.640  56  La connexion a échoué pour l&#39;utilisateur &#39;ikke_test&#39;.[CLIENT:[CLIENT:]  1      WS20098002  5456  Composants Microsoft Data Access  ikke_test  2009-02-05T13: 21: 12.637  1  0  WS20098002  SQL2005DE  18456  maîtriser  0  16981    ikke_test\nevent_type est évidemment AUDIT_LOGIN. post_time contient l&#39;heure à laquelle l&#39;événement est publié sur le service. spid représente l&#39;ID de la session pour l&#39;événement. text_data contient une liste délimitée par des points-virgules de toutes les options définies. binary_data contient les paramètres de niveau de session, y compris les valeurs null ANSI, le remplissage ANSI, la fermeture du curseur lors de la validation, la concaténation NULL et les identificateurs entre guillemets. id_base_de_données est l&#39;ID de la base de données par défaut ou l&#39;ID de la base de données utilisée par l&#39;instruction USE, si elle existe. nt_user_name représente le nom d&#39;utilisateur Windows. nt_domain_name représente le domaine Windows auquel l&#39;utilisateur appartient. nom_hôte contient le nom de l&#39;ordinateur sur lequel le client est en cours d&#39;exécution. client_process_id est l&#39;ID attribué par l&#39;ordinateur hôte au processus d&#39;exécution de l&#39;application client. nom_application est le nom de l&#39;application cliente. login_name est le nom du login utilisé. heure_début représente l&#39;heure à laquelle l&#39;événement a commencé. event_subclass indique si la connexion est groupée ou non groupée avec les valeurs 1 pour non groupé et 2 pour groupé. L&#39;élément success indique si l&#39;authentification a réussi et a les valeurs 1 pour succès et 0 pour échec. Pour l&#39;événement AUDIT_LOGIN, il contiendra toujours la valeur 1. integer_data représente la taille du paquet réseau. nom_serveur représente le nom de l&#39;instance de SQL Server sur laquelle l&#39;événement s&#39;est produit. nom_base_de_données est le nom de la base de données login_sid contient le numéro d&#39;identification de sécurité (SID) de l&#39;utilisateur connecté. request_id représente l&#39;ID de la requête. event_sequence représente la séquence de l&#39;événement dans la demande. is_system indique si l&#39;événement s&#39;est produit pour un utilisateur ou un processus système. Dans ce cas, il s&#39;agira toujours d&#39;un processus utilisateur.* /\n/ *\nALLER\n&#8211; nettoyer seulement si nécessaire\n/ * En cas de problèmes, commencez par abandonner l&#39;abonnement EVENT NOTIFICATION * /&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER \n&#8211; ALTER QUEUE Q_FailedLogon_Tracker_Queue WITH STATUS = OFF&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER &#8211; DROP ROUTE R_FailedLogon_Tracker_Route &#8211; DROP SERVICE S_FailedLogon_Tracker_Service&#8211; DROP QUEUE Q_FailedLogon_Tracker_Queue; &#8211; DROP PROCEDURE dbo.spc_DBA_FailedConnectionTracker&#8211;\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Apparemment, le lien avec la conversation simple ne fonctionne plus.\nLe nouveau lien est dans mon script","Voici le script que j&#39;utilise pour suivre les informations de connexion ayant échoué à l&#39;aide de notifications d&#39;événement (2005 / 2008R2)\n/ *\nDBA_FailedConnectionTracker: conservez une vue d&#39;ensemble des connexions établies avec cette instance SQLServer.\n&#8211; Cet utilisateur d&#39;implémentation SQLServer Service Brocker avec notifications d&#39;événement\n* /\nUTILISEZ YourBonitoring db;\nsi object_id (&#39;dbo.T_DBA_FailedConnectionTracker&#39;) est nullcommencer    print &#39;Table [T_DBA_FailedConnectionTracker] Créé&#39;;    CREER LA TABLE [dbo].[T_DBA_FailedConnectionTracker](        [host_name] [varchar](128) NOT NULL,        [program_name] [varchar](128) NOT NULL,        [nt_domain] [varchar](128) NOT NULL,        [nt_user_name] [varchar](128) NOT NULL,        [login_name] [varchar](128) NOT NULL,        [original_login_name] [varchar](128) NOT NULL,        [client_net_address] [varchar](48) NOT NULL,        [Database_Name] [varchar](128) non nul,        [tsRegistration]  datetime NOT NULL par défaut getdate (),        [FailedLoginData]  XML            )    Créer un index clusterisé clX_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([tsRegistration])    Créer un index X_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([login_name], [program_name])\nfin \n/ *source utilisant SSB: http://www.simple-talk.com/sql/sql-server-2005/logon-triggers/\nils ont réorganisé leur site. c&#39;est la nouvelle URL http://www.simple-talk.com/sql/t-sql-programming/logon-triggers/* /\n&#8211; Activer la base de données Service Broker pour DDBAServerPing si c&#39;est le casSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_broker_enabled = 0)Commencer    print &#39;SSB enabled&#39;;    ALTER DATABASE DDBAServerPing SET ENABLE_BROKER;FIN\n&#8211; Nous allons accéder à partir de la procédure stockée activée à une vue qui est &#8211; situé dans une base de données différente &#8211; la vue de gestion dynamique sys.dm_exec_sessions&#8211; Le contexte de sécurité de la procédure stockée ne nous permettrait pas de le faire&#8211; sauf si nous définissons l&#39;option TRUSTWORTHY sur ON.&#8211; Pourquoi et une autre méthode que vous pouvez trouver ici:&#8211; http://blogs.msdn.com/remusrusanu/archive/2006/03/01/541882.aspx\nSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_trustworthy_on = 0)Commencer    print &#39;digne de confiance commuté sur ON&#39;;    ALTER DATABASE DDBAServerPing SET TRUSTWORTHY ON;FIN\n&#8211; Créer une file d&#39;attenteCREATE QUEUE Q_FailedLogon_Tracker_Queue; \n&#8211; Créer un serviceCREATE SERVICE S_FailedLogon_Tracker_Service    ON QUEUE Q_FailedLogon_Tracker_Queue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])\n&#8211; Créer un itinéraireCREATE ROUTE R_FailedLogon_Tracker_Route     WITH SERVICE_NAME = N&#39;S_FailedLogon_Tracker_Service &#39;        , ADRESSE = N&#39;LOCAL &#39;;aller\n/ * L&#39;utilisateur actuel devient propriétaire de EVENT NOTIFICATION, passez donc à &#39;sa&#39; * /EXEC AS LOGIN = &#39;sa&#39;;aller&#8211; Créer la notification d&#39;événement au niveau du serveur pour l&#39;événement AUDIT_LOGINCREATE NOTIFICATION D&#39;EVENEMENTS N_Failed_Login_Notification     SUR SERVEUR POUR AUDIT_LOGIN_FAILED         TO SERVICE &#39;S_FailedLogon_Tracker_Service&#39;, &#39;base de données actuelle&#39;;\naller/ * Revenir à l&#39;utilisateur d&#39;origine * /REVENIR;ALLER \n&#8211; Créer la procédure stockée qui gérera les événements&#8211; Définissez d&#39;abord les options requises pour utiliser le type de données XML.SET ANSI_NULLS ON;SET QUOTED_IDENTIFIER ON;ALLER\nCREATE PROCEDURE dbo.spc_DBA_FailedConnectionTrackerCOMMECOMMENCERSET NOCOUNT ON;&#8211; Utilisez une boucle sans fin pour recevoir des messagesPENDANT (1 = 1)    COMMENCER      DECLARE @messageBody VARBINARY (MAX);            DECLARE @messageTypeName NVARCHAR (256);                 ATTENDRE (                 RECEVEZ LE TOP (1)                                     @messageTypeName = nom_type_message,                                     @messageBody = message_body                                     FROM Q_FailedLogon_Tracker_Queue                                  ), TIMEOUT 500      &#8211; S&#39;il n&#39;y a pas de message, quittez          SI @@ ROWCOUNT = 0            COMMENCER                 PAUSE ;            FIN ;      &#8211; Si le type de message est EventNotification, effectue le travail réel.             IF (@messageTypeName = &#39;http://schemas.microsoft.com/SQL/Notifications/EventNotification&#39;)    COMMENCER        DECLARE @XML XML,            @host_name varchar (128),            @ nom_programme varchar (128),            @nt_domain varchar (128),            @nt_user_name varchar (128),            @nom_installation varchar (128),            @original_login_name varchar (128),            @client_net_address varchar (48),            @DonnéesBaseDeDonnées varchar (128),            @ts_logon datetime,            @SPID VARCHAR (5);   \n                SELECT @ XML = CONVERT (XML, @ messageBody)            , @ host_name = &#39;&#39;            , @ nom_programme = &#39;&#39;            , @ nt_domain = &#39;&#39;            , @ nt_user_name = &#39;&#39;            , @ login_name = &#39;&#39;            , @ original_login_name = &#39;&#39;            , @ client_net_address = &#39;&#39;             , @ SPID = &#39;&#39;;   \n                &#8211; Obtenir le SPID et le nom de connexion à l&#39;aide de la méthode value                 SELECT @SPID = @ XML.value (&#39;(/ EVENT_INSTANCE / SPID)[1]&#39;,&#39; VARCHAR (5) &#39;)                      , @ts_logon = @ XML.value (&#39;(/ EVENT_INSTANCE / StartTime)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @host_name = @ XML.value (&#39;(/ EVENT_INSTANCE / HostName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @program_name = @ XML.value (&#39;(/ EVENT_INSTANCE / ApplicationName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_domain = @ XML.value (&#39;(/ EVENT_INSTANCE / NTDomainName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_user_name = @ XML.value (&#39;(/ EVENT_INSTANCE / NTUserName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @original_login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / SessionLoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / LoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            @Database_Name = @ XML.value (&#39;(/ EVENT_INSTANCE / DatabaseName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            ;     \n                &#8211;Choisissez @ nom_programme = cas où supérieur (@ nom_programme), comme &#39;DATABASEMAIL -%&#39;        &#8211; puis sous-chaîne (@ nom_programme, 1, identificateur de caractère (&#39;&lt;&#39;, @ nom_programme, 1) &#8211; 1)        &#8211; else @ nom_programme        &#8212;                            fin\n&#8211; / * GUID du message geef &#39;UABEPRD  EXECBTS&#39; ainsi que le nom de l&#39;application mee !! enregistrer cet utilisateur une seule fois * /&#8211; Mettre à jour dbo.T_DBA_FailedConnectionTracker &#8212;            ensemble [tsLastUpdate] = cas où [tsLastUpdate] &lt;@ts_logon puis @ts_logon&#8212;                                    autre [tsLastUpdate]&#8212;                                 fin&#8212;        Où [host_name] = @host_name&#8211; et cas où supérieure ([login_name]) comme &#39;UABEPRD  EXECBTS%&#39; puis @ nom_programme&#8212;                    autre [program_name]&#8211; fin = @ nom_programme &#8212;            &#8212; et [program_name] = @ nom_programme&#8212;            et [nt_domain] = @nt_domain&#8212;            et [nt_user_name] = @nt_user_name &#8212;            et [login_name] = @login_name&#8212;            et [original_login_name] = @original_login_name&#8212;            et [client_net_address] = ISNULL (@client_net_address, &#39;&#39;)&#8212;            et [Database_Name] = ISNULL (@Données_Database, &#39;&#39;)&#8211;&#8211; si @@ rowcount = 0&#8212;        commencer            INSÉRER DANS [dbo].[T_DBA_FailedConnectionTracker]                                                       ([host_name], [program_name], [nt_domain], [nt_user_name], [login_name], [original_login_name], [client_net_address], [Database_Name], [tsRegistration], [FailedLoginData] )                    valeurs (@nom_hôte, @nom_programme, @nom_domaine, @nom_utilisateur_nt, @nom_machine, @nom_login_original, ISNULL (@adresse_noire_client, &#39;&#39;), ISNULL (@nom_base_de_données, &#39;&#39;), @tient_logon, @XML);\n&#8212;        fin\n                / *        Sélectionnez *        de dbo.T_DBA_FailedConnectionTracker        commandé par [tsRegistration] desc        * /\n        FIN;  FIN;FIN;\nALLERsi object_id (&#39;dbo.spc_DBA_FailedConnectionTracker&#39;) n&#39;est pas nullcommencer    &#8211; Liez la procédure stockée à la Q_FailedLogon_Tracker_Queue     ALTER QUEUE Q_FailedLogon_Tracker_Queue        AVEC STATUS = ON        , ACTIVATION (STATUS = ON                        , PROCEDURE_NAME = dbo.spc_DBA_FailedConnectionTracker                        , MAX_QUEUE_READERS = 4                        , EXECUTE AS SELF);\nfin AUTRECOMMENCER    RAISERROR (&#39;Message DBA: file d&#39;attente SSB FailedConnectionTracker NON activée !!!&#39;, 1,1) WITH log\nFIN/ *Les informations publiées sur S_FailedLogon_Tracker_Service, à propos de l&#39;événement AUDIT_LOGIN, ont la structure suivante:\n  AUDIT_LOGIN_FAILED  2009-02-05T13: 21: 12.640  56  La connexion a échoué pour l&#39;utilisateur &#39;ikke_test&#39;.[CLIENT:[CLIENT:]  1      WS20098002  5456  Composants Microsoft Data Access  ikke_test  2009-02-05T13: 21: 12.637  1  0  WS20098002  SQL2005DE  18456  maîtriser  0  16981    ikke_test\nevent_type est évidemment AUDIT_LOGIN. post_time contient l&#39;heure à laquelle l&#39;événement est publié sur le service. spid représente l&#39;ID de la session pour l&#39;événement. text_data contient une liste délimitée par des points-virgules de toutes les options définies. binary_data contient les paramètres de niveau de session, y compris les valeurs null ANSI, le remplissage ANSI, la fermeture du curseur lors de la validation, la concaténation NULL et les identificateurs entre guillemets. id_base_de_données est l&#39;ID de la base de données par défaut ou l&#39;ID de la base de données utilisée par l&#39;instruction USE, si elle existe. nt_user_name représente le nom d&#39;utilisateur Windows. nt_domain_name représente le domaine Windows auquel l&#39;utilisateur appartient. nom_hôte contient le nom de l&#39;ordinateur sur lequel le client est en cours d&#39;exécution. client_process_id est l&#39;ID attribué par l&#39;ordinateur hôte au processus d&#39;exécution de l&#39;application client. nom_application est le nom de l&#39;application cliente. login_name est le nom du login utilisé. heure_début représente l&#39;heure à laquelle l&#39;événement a commencé. event_subclass indique si la connexion est groupée ou non groupée avec les valeurs 1 pour non groupé et 2 pour groupé. L&#39;élément success indique si l&#39;authentification a réussi et a les valeurs 1 pour succès et 0 pour échec. Pour l&#39;événement AUDIT_LOGIN, il contiendra toujours la valeur 1. integer_data représente la taille du paquet réseau. nom_serveur représente le nom de l&#39;instance de SQL Server sur laquelle l&#39;événement s&#39;est produit. nom_base_de_données est le nom de la base de données login_sid contient le numéro d&#39;identification de sécurité (SID) de l&#39;utilisateur connecté. request_id représente l&#39;ID de la requête. event_sequence représente la séquence de l&#39;événement dans la demande. is_system indique si l&#39;événement s&#39;est produit pour un utilisateur ou un processus système. Dans ce cas, il s&#39;agira toujours d&#39;un processus utilisateur.* /\n/ *\nALLER\n&#8211; nettoyer seulement si nécessaire\n/ * En cas de problèmes, commencez par abandonner l&#39;abonnement EVENT NOTIFICATION * /&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER \n&#8211; ALTER QUEUE Q_FailedLogon_Tracker_Queue WITH STATUS = OFF&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER &#8211; DROP ROUTE R_FailedLogon_Tracker_Route &#8211; DROP SERVICE S_FailedLogon_Tracker_Service&#8211; DROP QUEUE Q_FailedLogon_Tracker_Queue; &#8211; DROP PROCEDURE dbo.spc_DBA_FailedConnectionTracker&#8211;","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Apparemment, le lien avec la conversation simple ne fonctionne plus.\nLe nouveau lien est dans mon script","html":"<p>Apparemment, le lien avec la conversation simple ne fonctionne plus.\nLe nouveau lien est dans mon script</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Voici le script que j&#39;utilise pour suivre les informations de connexion ayant échoué à l&#39;aide de notifications d&#39;événement (2005 / 2008R2)\n/ *\nDBA_FailedConnectionTracker: conservez une vue d&#39;ensemble des connexions établies avec cette instance SQLServer.\n&#8211; Cet utilisateur d&#39;implémentation SQLServer Service Brocker avec notifications d&#39;événement\n* /\nUTILISEZ YourBonitoring db;\nsi object_id (&#39;dbo.T_DBA_FailedConnectionTracker&#39;) est nullcommencer    print &#39;Table [T_DBA_FailedConnectionTracker] Créé&#39;;    CREER LA TABLE [dbo].[T_DBA_FailedConnectionTracker](        [host_name] [varchar](128) NOT NULL,        [program_name] [varchar](128) NOT NULL,        [nt_domain] [varchar](128) NOT NULL,        [nt_user_name] [varchar](128) NOT NULL,        [login_name] [varchar](128) NOT NULL,        [original_login_name] [varchar](128) NOT NULL,        [client_net_address] [varchar](48) NOT NULL,        [Database_Name] [varchar](128) non nul,        [tsRegistration]  datetime NOT NULL par défaut getdate (),        [FailedLoginData]  XML            )    Créer un index clusterisé clX_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([tsRegistration])    Créer un index X_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([login_name], [program_name])\nfin \n/ *source utilisant SSB: http://www.simple-talk.com/sql/sql-server-2005/logon-triggers/\nils ont réorganisé leur site. c&#39;est la nouvelle URL http://www.simple-talk.com/sql/t-sql-programming/logon-triggers/* /\n&#8211; Activer la base de données Service Broker pour DDBAServerPing si c&#39;est le casSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_broker_enabled = 0)Commencer    print &#39;SSB enabled&#39;;    ALTER DATABASE DDBAServerPing SET ENABLE_BROKER;FIN\n&#8211; Nous allons accéder à partir de la procédure stockée activée à une vue qui est &#8211; situé dans une base de données différente &#8211; la vue de gestion dynamique sys.dm_exec_sessions&#8211; Le contexte de sécurité de la procédure stockée ne nous permettrait pas de le faire&#8211; sauf si nous définissons l&#39;option TRUSTWORTHY sur ON.&#8211; Pourquoi et une autre méthode que vous pouvez trouver ici:&#8211; http://blogs.msdn.com/remusrusanu/archive/2006/03/01/541882.aspx\nSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_trustworthy_on = 0)Commencer    print &#39;digne de confiance commuté sur ON&#39;;    ALTER DATABASE DDBAServerPing SET TRUSTWORTHY ON;FIN\n&#8211; Créer une file d&#39;attenteCREATE QUEUE Q_FailedLogon_Tracker_Queue; \n&#8211; Créer un serviceCREATE SERVICE S_FailedLogon_Tracker_Service    ON QUEUE Q_FailedLogon_Tracker_Queue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])\n&#8211; Créer un itinéraireCREATE ROUTE R_FailedLogon_Tracker_Route     WITH SERVICE_NAME = N&#39;S_FailedLogon_Tracker_Service &#39;        , ADRESSE = N&#39;LOCAL &#39;;aller\n/ * L&#39;utilisateur actuel devient propriétaire de EVENT NOTIFICATION, passez donc à &#39;sa&#39; * /EXEC AS LOGIN = &#39;sa&#39;;aller&#8211; Créer la notification d&#39;événement au niveau du serveur pour l&#39;événement AUDIT_LOGINCREATE NOTIFICATION D&#39;EVENEMENTS N_Failed_Login_Notification     SUR SERVEUR POUR AUDIT_LOGIN_FAILED         TO SERVICE &#39;S_FailedLogon_Tracker_Service&#39;, &#39;base de données actuelle&#39;;\naller/ * Revenir à l&#39;utilisateur d&#39;origine * /REVENIR;ALLER \n&#8211; Créer la procédure stockée qui gérera les événements&#8211; Définissez d&#39;abord les options requises pour utiliser le type de données XML.SET ANSI_NULLS ON;SET QUOTED_IDENTIFIER ON;ALLER\nCREATE PROCEDURE dbo.spc_DBA_FailedConnectionTrackerCOMMECOMMENCERSET NOCOUNT ON;&#8211; Utilisez une boucle sans fin pour recevoir des messagesPENDANT (1 = 1)    COMMENCER      DECLARE @messageBody VARBINARY (MAX);            DECLARE @messageTypeName NVARCHAR (256);                 ATTENDRE (                 RECEVEZ LE TOP (1)                                     @messageTypeName = nom_type_message,                                     @messageBody = message_body                                     FROM Q_FailedLogon_Tracker_Queue                                  ), TIMEOUT 500      &#8211; S&#39;il n&#39;y a pas de message, quittez          SI @@ ROWCOUNT = 0            COMMENCER                 PAUSE ;            FIN ;      &#8211; Si le type de message est EventNotification, effectue le travail réel.             IF (@messageTypeName = &#39;http://schemas.microsoft.com/SQL/Notifications/EventNotification&#39;)    COMMENCER        DECLARE @XML XML,            @host_name varchar (128),            @ nom_programme varchar (128),            @nt_domain varchar (128),            @nt_user_name varchar (128),            @nom_installation varchar (128),            @original_login_name varchar (128),            @client_net_address varchar (48),            @DonnéesBaseDeDonnées varchar (128),            @ts_logon datetime,            @SPID VARCHAR (5);   \n                SELECT @ XML = CONVERT (XML, @ messageBody)            , @ host_name = &#39;&#39;            , @ nom_programme = &#39;&#39;            , @ nt_domain = &#39;&#39;            , @ nt_user_name = &#39;&#39;            , @ login_name = &#39;&#39;            , @ original_login_name = &#39;&#39;            , @ client_net_address = &#39;&#39;             , @ SPID = &#39;&#39;;   \n                &#8211; Obtenir le SPID et le nom de connexion à l&#39;aide de la méthode value                 SELECT @SPID = @ XML.value (&#39;(/ EVENT_INSTANCE / SPID)[1]&#39;,&#39; VARCHAR (5) &#39;)                      , @ts_logon = @ XML.value (&#39;(/ EVENT_INSTANCE / StartTime)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @host_name = @ XML.value (&#39;(/ EVENT_INSTANCE / HostName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @program_name = @ XML.value (&#39;(/ EVENT_INSTANCE / ApplicationName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_domain = @ XML.value (&#39;(/ EVENT_INSTANCE / NTDomainName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_user_name = @ XML.value (&#39;(/ EVENT_INSTANCE / NTUserName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @original_login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / SessionLoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / LoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            @Database_Name = @ XML.value (&#39;(/ EVENT_INSTANCE / DatabaseName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            ;     \n                &#8211;Choisissez @ nom_programme = cas où supérieur (@ nom_programme), comme &#39;DATABASEMAIL -%&#39;        &#8211; puis sous-chaîne (@ nom_programme, 1, identificateur de caractère (&#39;&lt;&#39;, @ nom_programme, 1) &#8211; 1)        &#8211; else @ nom_programme        &#8212;                            fin\n&#8211; / * GUID du message geef &#39;UABEPRD  EXECBTS&#39; ainsi que le nom de l&#39;application mee !! enregistrer cet utilisateur une seule fois * /&#8211; Mettre à jour dbo.T_DBA_FailedConnectionTracker &#8212;            ensemble [tsLastUpdate] = cas où [tsLastUpdate] &lt;@ts_logon puis @ts_logon&#8212;                                    autre [tsLastUpdate]&#8212;                                 fin&#8212;        Où [host_name] = @host_name&#8211; et cas où supérieure ([login_name]) comme &#39;UABEPRD  EXECBTS%&#39; puis @ nom_programme&#8212;                    autre [program_name]&#8211; fin = @ nom_programme &#8212;            &#8212; et [program_name] = @ nom_programme&#8212;            et [nt_domain] = @nt_domain&#8212;            et [nt_user_name] = @nt_user_name &#8212;            et [login_name] = @login_name&#8212;            et [original_login_name] = @original_login_name&#8212;            et [client_net_address] = ISNULL (@client_net_address, &#39;&#39;)&#8212;            et [Database_Name] = ISNULL (@Données_Database, &#39;&#39;)&#8211;&#8211; si @@ rowcount = 0&#8212;        commencer            INSÉRER DANS [dbo].[T_DBA_FailedConnectionTracker]                                                       ([host_name], [program_name], [nt_domain], [nt_user_name], [login_name], [original_login_name], [client_net_address], [Database_Name], [tsRegistration], [FailedLoginData] )                    valeurs (@nom_hôte, @nom_programme, @nom_domaine, @nom_utilisateur_nt, @nom_machine, @nom_login_original, ISNULL (@adresse_noire_client, &#39;&#39;), ISNULL (@nom_base_de_données, &#39;&#39;), @tient_logon, @XML);\n&#8212;        fin\n                / *        Sélectionnez *        de dbo.T_DBA_FailedConnectionTracker        commandé par [tsRegistration] desc        * /\n        FIN;  FIN;FIN;\nALLERsi object_id (&#39;dbo.spc_DBA_FailedConnectionTracker&#39;) n&#39;est pas nullcommencer    &#8211; Liez la procédure stockée à la Q_FailedLogon_Tracker_Queue     ALTER QUEUE Q_FailedLogon_Tracker_Queue        AVEC STATUS = ON        , ACTIVATION (STATUS = ON                        , PROCEDURE_NAME = dbo.spc_DBA_FailedConnectionTracker                        , MAX_QUEUE_READERS = 4                        , EXECUTE AS SELF);\nfin AUTRECOMMENCER    RAISERROR (&#39;Message DBA: file d&#39;attente SSB FailedConnectionTracker NON activée !!!&#39;, 1,1) WITH log\nFIN/ *Les informations publiées sur S_FailedLogon_Tracker_Service, à propos de l&#39;événement AUDIT_LOGIN, ont la structure suivante:\n  AUDIT_LOGIN_FAILED  2009-02-05T13: 21: 12.640  56  La connexion a échoué pour l&#39;utilisateur &#39;ikke_test&#39;.[CLIENT:[CLIENT:]  1      WS20098002  5456  Composants Microsoft Data Access  ikke_test  2009-02-05T13: 21: 12.637  1  0  WS20098002  SQL2005DE  18456  maîtriser  0  16981    ikke_test\nevent_type est évidemment AUDIT_LOGIN. post_time contient l&#39;heure à laquelle l&#39;événement est publié sur le service. spid représente l&#39;ID de la session pour l&#39;événement. text_data contient une liste délimitée par des points-virgules de toutes les options définies. binary_data contient les paramètres de niveau de session, y compris les valeurs null ANSI, le remplissage ANSI, la fermeture du curseur lors de la validation, la concaténation NULL et les identificateurs entre guillemets. id_base_de_données est l&#39;ID de la base de données par défaut ou l&#39;ID de la base de données utilisée par l&#39;instruction USE, si elle existe. nt_user_name représente le nom d&#39;utilisateur Windows. nt_domain_name représente le domaine Windows auquel l&#39;utilisateur appartient. nom_hôte contient le nom de l&#39;ordinateur sur lequel le client est en cours d&#39;exécution. client_process_id est l&#39;ID attribué par l&#39;ordinateur hôte au processus d&#39;exécution de l&#39;application client. nom_application est le nom de l&#39;application cliente. login_name est le nom du login utilisé. heure_début représente l&#39;heure à laquelle l&#39;événement a commencé. event_subclass indique si la connexion est groupée ou non groupée avec les valeurs 1 pour non groupé et 2 pour groupé. L&#39;élément success indique si l&#39;authentification a réussi et a les valeurs 1 pour succès et 0 pour échec. Pour l&#39;événement AUDIT_LOGIN, il contiendra toujours la valeur 1. integer_data représente la taille du paquet réseau. nom_serveur représente le nom de l&#39;instance de SQL Server sur laquelle l&#39;événement s&#39;est produit. nom_base_de_données est le nom de la base de données login_sid contient le numéro d&#39;identification de sécurité (SID) de l&#39;utilisateur connecté. request_id représente l&#39;ID de la requête. event_sequence représente la séquence de l&#39;événement dans la demande. is_system indique si l&#39;événement s&#39;est produit pour un utilisateur ou un processus système. Dans ce cas, il s&#39;agira toujours d&#39;un processus utilisateur.* /\n/ *\nALLER\n&#8211; nettoyer seulement si nécessaire\n/ * En cas de problèmes, commencez par abandonner l&#39;abonnement EVENT NOTIFICATION * /&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER \n&#8211; ALTER QUEUE Q_FailedLogon_Tracker_Queue WITH STATUS = OFF&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER &#8211; DROP ROUTE R_FailedLogon_Tracker_Route &#8211; DROP SERVICE S_FailedLogon_Tracker_Service&#8211; DROP QUEUE Q_FailedLogon_Tracker_Queue; &#8211; DROP PROCEDURE dbo.spc_DBA_FailedConnectionTracker&#8211;","html":"<p>Voici le script que j&#039;utilise pour suivre les informations de connexion ayant échoué à l&#039;aide de notifications d&#039;événement (2005 / 2008R2)\n/ *\nDBA_FailedConnectionTracker: conservez une vue d&#039;ensemble des connexions établies avec cette instance SQLServer.\n&#8211; Cet utilisateur d&#039;implémentation SQLServer Service Brocker avec notifications d&#039;événement\n* /\nUTILISEZ YourBonitoring db;\nsi object_id (&#039;dbo.T_DBA_FailedConnectionTracker&#039;) est nullcommencer    print &#039;Table [T_DBA_FailedConnectionTracker] Créé&#039;;    CREER LA TABLE [dbo].[T_DBA_FailedConnectionTracker](        [host_name] [varchar](128) NOT NULL,        [program_name] [varchar](128) NOT NULL,        [nt_domain] [varchar](128) NOT NULL,        [nt_user_name] [varchar](128) NOT NULL,        [login_name] [varchar](128) NOT NULL,        [original_login_name] [varchar](128) NOT NULL,        [client_net_address] [varchar](48) NOT NULL,        [Database_Name] [varchar](128) non nul,        [tsRegistration]  datetime NOT NULL par défaut getdate (),        [FailedLoginData]  XML            )    Créer un index clusterisé clX_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([tsRegistration])    Créer un index X_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([login_name], [program_name])\nfin \n/ *source utilisant SSB: http://www.simple-talk.com/sql/sql-server-2005/logon-triggers/\nils ont réorganisé leur site. c&#039;est la nouvelle URL http://www.simple-talk.com/sql/t-sql-programming/logon-triggers/* /\n&#8211; Activer la base de données Service Broker pour DDBAServerPing si c&#039;est le casSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#039;DDBAServerPing &#039;             AND is_broker_enabled = 0)Commencer    print &#039;SSB enabled&#039;;    ALTER DATABASE DDBAServerPing SET ENABLE_BROKER;FIN\n&#8211; Nous allons accéder à partir de la procédure stockée activée à une vue qui est &#8211; situé dans une base de données différente &#8211; la vue de gestion dynamique sys.dm_exec_sessions&#8211; Le contexte de sécurité de la procédure stockée ne nous permettrait pas de le faire&#8211; sauf si nous définissons l&#039;option TRUSTWORTHY sur ON.&#8211; Pourquoi et une autre méthode que vous pouvez trouver ici:&#8211; http://blogs.msdn.com/remusrusanu/archive/2006/03/01/541882.aspx\nSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#039;DDBAServerPing &#039;             AND is_trustworthy_on = 0)Commencer    print &#039;digne de confiance commuté sur ON&#039;;    ALTER DATABASE DDBAServerPing SET TRUSTWORTHY ON;FIN\n&#8211; Créer une file d&#039;attenteCREATE QUEUE Q_FailedLogon_Tracker_Queue; \n&#8211; Créer un serviceCREATE SERVICE S_FailedLogon_Tracker_Service    ON QUEUE Q_FailedLogon_Tracker_Queue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])\n&#8211; Créer un itinéraireCREATE ROUTE R_FailedLogon_Tracker_Route     WITH SERVICE_NAME = N&#039;S_FailedLogon_Tracker_Service &#039;        , ADRESSE = N&#039;LOCAL &#039;;aller\n/ * L&#039;utilisateur actuel devient propriétaire de EVENT NOTIFICATION, passez donc à &#039;sa&#039; * /EXEC AS LOGIN = &#039;sa&#039;;aller&#8211; Créer la notification d&#039;événement au niveau du serveur pour l&#039;événement AUDIT_LOGINCREATE NOTIFICATION D&#039;EVENEMENTS N_Failed_Login_Notification     SUR SERVEUR POUR AUDIT_LOGIN_FAILED         TO SERVICE &#039;S_FailedLogon_Tracker_Service&#039;, &#039;base de données actuelle&#039;;\naller/ * Revenir à l&#039;utilisateur d&#039;origine * /REVENIR;ALLER \n&#8211; Créer la procédure stockée qui gérera les événements&#8211; Définissez d&#039;abord les options requises pour utiliser le type de données XML.SET ANSI_NULLS ON;SET QUOTED_IDENTIFIER ON;ALLER\nCREATE PROCEDURE dbo.spc_DBA_FailedConnectionTrackerCOMMECOMMENCERSET NOCOUNT ON;&#8211; Utilisez une boucle sans fin pour recevoir des messagesPENDANT (1 = 1)    COMMENCER      DECLARE @messageBody VARBINARY (MAX);            DECLARE @messageTypeName NVARCHAR (256);                 ATTENDRE (                 RECEVEZ LE TOP (1)                                     @messageTypeName = nom_type_message,                                     @messageBody = message_body                                     FROM Q_FailedLogon_Tracker_Queue                                  ), TIMEOUT 500      &#8211; S&#039;il n&#039;y a pas de message, quittez          SI @@ ROWCOUNT = 0            COMMENCER                 PAUSE ;            FIN ;      &#8211; Si le type de message est EventNotification, effectue le travail réel.             IF (@messageTypeName = &#039;http://schemas.microsoft.com/SQL/Notifications/EventNotification&#039;)    COMMENCER        DECLARE @XML XML,            @host_name varchar (128),            @ nom_programme varchar (128),            @nt_domain varchar (128),            @nt_user_name varchar (128),            @nom_installation varchar (128),            @original_login_name varchar (128),            @client_net_address varchar (48),            @DonnéesBaseDeDonnées varchar (128),            @ts_logon datetime,            @SPID VARCHAR (5);   \n                SELECT @ XML = CONVERT (XML, @ messageBody)            , @ host_name = &#039;&#039;            , @ nom_programme = &#039;&#039;            , @ nt_domain = &#039;&#039;            , @ nt_user_name = &#039;&#039;            , @ login_name = &#039;&#039;            , @ original_login_name = &#039;&#039;            , @ client_net_address = &#039;&#039;             , @ SPID = &#039;&#039;;   \n                &#8211; Obtenir le SPID et le nom de connexion à l&#039;aide de la méthode value                 SELECT @SPID = @ XML.value (&#039;(/ EVENT_INSTANCE / SPID)[1]&#039;,&#039; VARCHAR (5) &#039;)                      , @ts_logon = @ XML.value (&#039;(/ EVENT_INSTANCE / StartTime)[1]&#039;,&#039; NVARCHAR (128) &#039;)            , @host_name = @ XML.value (&#039;(/ EVENT_INSTANCE / HostName)[1]&#039;,&#039; NVARCHAR (128) &#039;)            , @program_name = @ XML.value (&#039;(/ EVENT_INSTANCE / ApplicationName)[1]&#039;,&#039; NVARCHAR (128) &#039;)            , @nt_domain = @ XML.value (&#039;(/ EVENT_INSTANCE / NTDomainName)[1]&#039;,&#039; NVARCHAR (128) &#039;)            , @nt_user_name = @ XML.value (&#039;(/ EVENT_INSTANCE / NTUserName)[1]&#039;,&#039; NVARCHAR (128) &#039;)            , @original_login_name = @ XML.value (&#039;(/ EVENT_INSTANCE / SessionLoginName)[1]&#039;,&#039; NVARCHAR (128) &#039;)            , @login_name = @ XML.value (&#039;(/ EVENT_INSTANCE / LoginName)[1]&#039;,&#039; NVARCHAR (128) &#039;)            @Database_Name = @ XML.value (&#039;(/ EVENT_INSTANCE / DatabaseName)[1]&#039;,&#039; NVARCHAR (128) &#039;)            ;     \n                &#8211;Choisissez @ nom_programme = cas où supérieur (@ nom_programme), comme &#039;DATABASEMAIL -%&#039;        &#8211; puis sous-chaîne (@ nom_programme, 1, identificateur de caractère (&#039;&lt;&#039;, @ nom_programme, 1) &#8211; 1)        &#8211; else @ nom_programme        &#8212;                            fin\n&#8211; / * GUID du message geef &#039;UABEPRD  EXECBTS&#039; ainsi que le nom de l&#039;application mee !! enregistrer cet utilisateur une seule fois * /&#8211; Mettre à jour dbo.T_DBA_FailedConnectionTracker &#8212;            ensemble [tsLastUpdate] = cas où [tsLastUpdate] &lt;@ts_logon puis @ts_logon&#8212;                                    autre [tsLastUpdate]&#8212;                                 fin&#8212;        Où [host_name] = @host_name&#8211; et cas où supérieure ([login_name]) comme &#039;UABEPRD  EXECBTS%&#039; puis @ nom_programme&#8212;                    autre [program_name]&#8211; fin = @ nom_programme &#8212;            &#8212; et [program_name] = @ nom_programme&#8212;            et [nt_domain] = @nt_domain&#8212;            et [nt_user_name] = @nt_user_name &#8212;            et [login_name] = @login_name&#8212;            et [original_login_name] = @original_login_name&#8212;            et [client_net_address] = ISNULL (@client_net_address, &#039;&#039;)&#8212;            et [Database_Name] = ISNULL (@Données_Database, &#039;&#039;)&#8211;&#8211; si @@ rowcount = 0&#8212;        commencer            INSÉRER DANS [dbo].[T_DBA_FailedConnectionTracker]                                                       ([host_name], [program_name], [nt_domain], [nt_user_name], [login_name], [original_login_name], [client_net_address], [Database_Name], [tsRegistration], [FailedLoginData] )                    valeurs (@nom_hôte, @nom_programme, @nom_domaine, @nom_utilisateur_nt, @nom_machine, @nom_login_original, ISNULL (@adresse_noire_client, &#039;&#039;), ISNULL (@nom_base_de_données, &#039;&#039;), @tient_logon, @XML);\n&#8212;        fin\n                / *        Sélectionnez *        de dbo.T_DBA_FailedConnectionTracker        commandé par [tsRegistration] desc        * /\n        FIN;  FIN;FIN;\nALLERsi object_id (&#039;dbo.spc_DBA_FailedConnectionTracker&#039;) n&#039;est pas nullcommencer    &#8211; Liez la procédure stockée à la Q_FailedLogon_Tracker_Queue     ALTER QUEUE Q_FailedLogon_Tracker_Queue        AVEC STATUS = ON        , ACTIVATION (STATUS = ON                        , PROCEDURE_NAME = dbo.spc_DBA_FailedConnectionTracker                        , MAX_QUEUE_READERS = 4                        , EXECUTE AS SELF);\nfin AUTRECOMMENCER    RAISERROR (&#039;Message DBA: file d&#039;attente SSB FailedConnectionTracker NON activée !!!&#039;, 1,1) WITH log\nFIN/ *Les informations publiées sur S_FailedLogon_Tracker_Service, à propos de l&#039;événement AUDIT_LOGIN, ont la structure suivante:\n  AUDIT_LOGIN_FAILED  2009-02-05T13: 21: 12.640  56  La connexion a échoué pour l&#039;utilisateur &#039;ikke_test&#039;.[CLIENT:[CLIENT:]  1      WS20098002  5456  Composants Microsoft Data Access  ikke_test  2009-02-05T13: 21: 12.637  1  0  WS20098002  SQL2005DE  18456  maîtriser  0  16981    ikke_test\nevent_type est évidemment AUDIT_LOGIN. post_time contient l&#039;heure à laquelle l&#039;événement est publié sur le service. spid représente l&#039;ID de la session pour l&#039;événement. text_data contient une liste délimitée par des points-virgules de toutes les options définies. binary_data contient les paramètres de niveau de session, y compris les valeurs null ANSI, le remplissage ANSI, la fermeture du curseur lors de la validation, la concaténation NULL et les identificateurs entre guillemets. id_base_de_données est l&#039;ID de la base de données par défaut ou l&#039;ID de la base de données utilisée par l&#039;instruction USE, si elle existe. nt_user_name représente le nom d&#039;utilisateur Windows. nt_domain_name représente le domaine Windows auquel l&#039;utilisateur appartient. nom_hôte contient le nom de l&#039;ordinateur sur lequel le client est en cours d&#039;exécution. client_process_id est l&#039;ID attribué par l&#039;ordinateur hôte au processus d&#039;exécution de l&#039;application client. nom_application est le nom de l&#039;application cliente. login_name est le nom du login utilisé. heure_début représente l&#039;heure à laquelle l&#039;événement a commencé. event_subclass indique si la connexion est groupée ou non groupée avec les valeurs 1 pour non groupé et 2 pour groupé. L&#039;élément success indique si l&#039;authentification a réussi et a les valeurs 1 pour succès et 0 pour échec. Pour l&#039;événement AUDIT_LOGIN, il contiendra toujours la valeur 1. integer_data représente la taille du paquet réseau. nom_serveur représente le nom de l&#039;instance de SQL Server sur laquelle l&#039;événement s&#039;est produit. nom_base_de_données est le nom de la base de données login_sid contient le numéro d&#039;identification de sécurité (SID) de l&#039;utilisateur connecté. request_id représente l&#039;ID de la requête. event_sequence représente la séquence de l&#039;événement dans la demande. is_system indique si l&#039;événement s&#039;est produit pour un utilisateur ou un processus système. Dans ce cas, il s&#039;agira toujours d&#039;un processus utilisateur.* /\n/ *\nALLER\n&#8211; nettoyer seulement si nécessaire\n/ * En cas de problèmes, commencez par abandonner l&#039;abonnement EVENT NOTIFICATION * /&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER \n&#8211; ALTER QUEUE Q_FailedLogon_Tracker_Queue WITH STATUS = OFF&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER &#8211; DROP ROUTE R_FailedLogon_Tracker_Route &#8211; DROP SERVICE S_FailedLogon_Tracker_Service&#8211; DROP QUEUE Q_FailedLogon_Tracker_Queue; &#8211; DROP PROCEDURE dbo.spc_DBA_FailedConnectionTracker&#8211;</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Apparemment, le lien avec la conversation simple ne fonctionne plus.\nLe nouveau lien est dans mon script"},{"id":"text-2","heading":"Text","content":"Voici le script que j&#39;utilise pour suivre les informations de connexion ayant échoué à l&#39;aide de notifications d&#39;événement (2005 / 2008R2)\n/ *\nDBA_FailedConnectionTracker: conservez une vue d&#39;ensemble des connexions établies avec cette instance SQLServer.\n&#8211; Cet utilisateur d&#39;implémentation SQLServer Service Brocker avec notifications d&#39;événement\n* /\nUTILISEZ YourBonitoring db;\nsi object_id (&#39;dbo.T_DBA_FailedConnectionTracker&#39;) est nullcommencer    print &#39;Table [T_DBA_FailedConnectionTracker] Créé&#39;;    CREER LA TABLE [dbo].[T_DBA_FailedConnectionTracker](        [host_name] [varchar](128) NOT NULL,        [program_name] [varchar](128) NOT NULL,        [nt_domain] [varchar](128) NOT NULL,        [nt_user_name] [varchar](128) NOT NULL,        [login_name] [varchar](128) NOT NULL,        [original_login_name] [varchar](128) NOT NULL,        [client_net_address] [varchar](48) NOT NULL,        [Database_Name] [varchar](128) non nul,        [tsRegistration]  datetime NOT NULL par défaut getdate (),        [FailedLoginData]  XML            )    Créer un index clusterisé clX_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([tsRegistration])    Créer un index X_DBA_FailedConnectionTracker sur [dbo].[T_DBA_FailedConnectionTracker] ([login_name], [program_name])\nfin \n/ *source utilisant SSB: http://www.simple-talk.com/sql/sql-server-2005/logon-triggers/\nils ont réorganisé leur site. c&#39;est la nouvelle URL http://www.simple-talk.com/sql/t-sql-programming/logon-triggers/* /\n&#8211; Activer la base de données Service Broker pour DDBAServerPing si c&#39;est le casSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_broker_enabled = 0)Commencer    print &#39;SSB enabled&#39;;    ALTER DATABASE DDBAServerPing SET ENABLE_BROKER;FIN\n&#8211; Nous allons accéder à partir de la procédure stockée activée à une vue qui est &#8211; situé dans une base de données différente &#8211; la vue de gestion dynamique sys.dm_exec_sessions&#8211; Le contexte de sécurité de la procédure stockée ne nous permettrait pas de le faire&#8211; sauf si nous définissons l&#39;option TRUSTWORTHY sur ON.&#8211; Pourquoi et une autre méthode que vous pouvez trouver ici:&#8211; http://blogs.msdn.com/remusrusanu/archive/2006/03/01/541882.aspx\nSI EXISTE (SÉLECTIONNER *            FROM sys.databases            OÙ [name]= N&#39;DDBAServerPing &#39;             AND is_trustworthy_on = 0)Commencer    print &#39;digne de confiance commuté sur ON&#39;;    ALTER DATABASE DDBAServerPing SET TRUSTWORTHY ON;FIN\n&#8211; Créer une file d&#39;attenteCREATE QUEUE Q_FailedLogon_Tracker_Queue; \n&#8211; Créer un serviceCREATE SERVICE S_FailedLogon_Tracker_Service    ON QUEUE Q_FailedLogon_Tracker_Queue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])\n&#8211; Créer un itinéraireCREATE ROUTE R_FailedLogon_Tracker_Route     WITH SERVICE_NAME = N&#39;S_FailedLogon_Tracker_Service &#39;        , ADRESSE = N&#39;LOCAL &#39;;aller\n/ * L&#39;utilisateur actuel devient propriétaire de EVENT NOTIFICATION, passez donc à &#39;sa&#39; * /EXEC AS LOGIN = &#39;sa&#39;;aller&#8211; Créer la notification d&#39;événement au niveau du serveur pour l&#39;événement AUDIT_LOGINCREATE NOTIFICATION D&#39;EVENEMENTS N_Failed_Login_Notification     SUR SERVEUR POUR AUDIT_LOGIN_FAILED         TO SERVICE &#39;S_FailedLogon_Tracker_Service&#39;, &#39;base de données actuelle&#39;;\naller/ * Revenir à l&#39;utilisateur d&#39;origine * /REVENIR;ALLER \n&#8211; Créer la procédure stockée qui gérera les événements&#8211; Définissez d&#39;abord les options requises pour utiliser le type de données XML.SET ANSI_NULLS ON;SET QUOTED_IDENTIFIER ON;ALLER\nCREATE PROCEDURE dbo.spc_DBA_FailedConnectionTrackerCOMMECOMMENCERSET NOCOUNT ON;&#8211; Utilisez une boucle sans fin pour recevoir des messagesPENDANT (1 = 1)    COMMENCER      DECLARE @messageBody VARBINARY (MAX);            DECLARE @messageTypeName NVARCHAR (256);                 ATTENDRE (                 RECEVEZ LE TOP (1)                                     @messageTypeName = nom_type_message,                                     @messageBody = message_body                                     FROM Q_FailedLogon_Tracker_Queue                                  ), TIMEOUT 500      &#8211; S&#39;il n&#39;y a pas de message, quittez          SI @@ ROWCOUNT = 0            COMMENCER                 PAUSE ;            FIN ;      &#8211; Si le type de message est EventNotification, effectue le travail réel.             IF (@messageTypeName = &#39;http://schemas.microsoft.com/SQL/Notifications/EventNotification&#39;)    COMMENCER        DECLARE @XML XML,            @host_name varchar (128),            @ nom_programme varchar (128),            @nt_domain varchar (128),            @nt_user_name varchar (128),            @nom_installation varchar (128),            @original_login_name varchar (128),            @client_net_address varchar (48),            @DonnéesBaseDeDonnées varchar (128),            @ts_logon datetime,            @SPID VARCHAR (5);   \n                SELECT @ XML = CONVERT (XML, @ messageBody)            , @ host_name = &#39;&#39;            , @ nom_programme = &#39;&#39;            , @ nt_domain = &#39;&#39;            , @ nt_user_name = &#39;&#39;            , @ login_name = &#39;&#39;            , @ original_login_name = &#39;&#39;            , @ client_net_address = &#39;&#39;             , @ SPID = &#39;&#39;;   \n                &#8211; Obtenir le SPID et le nom de connexion à l&#39;aide de la méthode value                 SELECT @SPID = @ XML.value (&#39;(/ EVENT_INSTANCE / SPID)[1]&#39;,&#39; VARCHAR (5) &#39;)                      , @ts_logon = @ XML.value (&#39;(/ EVENT_INSTANCE / StartTime)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @host_name = @ XML.value (&#39;(/ EVENT_INSTANCE / HostName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @program_name = @ XML.value (&#39;(/ EVENT_INSTANCE / ApplicationName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_domain = @ XML.value (&#39;(/ EVENT_INSTANCE / NTDomainName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @nt_user_name = @ XML.value (&#39;(/ EVENT_INSTANCE / NTUserName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @original_login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / SessionLoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            , @login_name = @ XML.value (&#39;(/ EVENT_INSTANCE / LoginName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            @Database_Name = @ XML.value (&#39;(/ EVENT_INSTANCE / DatabaseName)[1]&#39;,&#39; NVARCHAR (128) &#39;)            ;     \n                &#8211;Choisissez @ nom_programme = cas où supérieur (@ nom_programme), comme &#39;DATABASEMAIL -%&#39;        &#8211; puis sous-chaîne (@ nom_programme, 1, identificateur de caractère (&#39;&lt;&#39;, @ nom_programme, 1) &#8211; 1)        &#8211; else @ nom_programme        &#8212;                            fin\n&#8211; / * GUID du message geef &#39;UABEPRD  EXECBTS&#39; ainsi que le nom de l&#39;application mee !! enregistrer cet utilisateur une seule fois * /&#8211; Mettre à jour dbo.T_DBA_FailedConnectionTracker &#8212;            ensemble [tsLastUpdate] = cas où [tsLastUpdate] &lt;@ts_logon puis @ts_logon&#8212;                                    autre [tsLastUpdate]&#8212;                                 fin&#8212;        Où [host_name] = @host_name&#8211; et cas où supérieure ([login_name]) comme &#39;UABEPRD  EXECBTS%&#39; puis @ nom_programme&#8212;                    autre [program_name]&#8211; fin = @ nom_programme &#8212;            &#8212; et [program_name] = @ nom_programme&#8212;            et [nt_domain] = @nt_domain&#8212;            et [nt_user_name] = @nt_user_name &#8212;            et [login_name] = @login_name&#8212;            et [original_login_name] = @original_login_name&#8212;            et [client_net_address] = ISNULL (@client_net_address, &#39;&#39;)&#8212;            et [Database_Name] = ISNULL (@Données_Database, &#39;&#39;)&#8211;&#8211; si @@ rowcount = 0&#8212;        commencer            INSÉRER DANS [dbo].[T_DBA_FailedConnectionTracker]                                                       ([host_name], [program_name], [nt_domain], [nt_user_name], [login_name], [original_login_name], [client_net_address], [Database_Name], [tsRegistration], [FailedLoginData] )                    valeurs (@nom_hôte, @nom_programme, @nom_domaine, @nom_utilisateur_nt, @nom_machine, @nom_login_original, ISNULL (@adresse_noire_client, &#39;&#39;), ISNULL (@nom_base_de_données, &#39;&#39;), @tient_logon, @XML);\n&#8212;        fin\n                / *        Sélectionnez *        de dbo.T_DBA_FailedConnectionTracker        commandé par [tsRegistration] desc        * /\n        FIN;  FIN;FIN;\nALLERsi object_id (&#39;dbo.spc_DBA_FailedConnectionTracker&#39;) n&#39;est pas nullcommencer    &#8211; Liez la procédure stockée à la Q_FailedLogon_Tracker_Queue     ALTER QUEUE Q_FailedLogon_Tracker_Queue        AVEC STATUS = ON        , ACTIVATION (STATUS = ON                        , PROCEDURE_NAME = dbo.spc_DBA_FailedConnectionTracker                        , MAX_QUEUE_READERS = 4                        , EXECUTE AS SELF);\nfin AUTRECOMMENCER    RAISERROR (&#39;Message DBA: file d&#39;attente SSB FailedConnectionTracker NON activée !!!&#39;, 1,1) WITH log\nFIN/ *Les informations publiées sur S_FailedLogon_Tracker_Service, à propos de l&#39;événement AUDIT_LOGIN, ont la structure suivante:\n  AUDIT_LOGIN_FAILED  2009-02-05T13: 21: 12.640  56  La connexion a échoué pour l&#39;utilisateur &#39;ikke_test&#39;.[CLIENT:[CLIENT:]  1      WS20098002  5456  Composants Microsoft Data Access  ikke_test  2009-02-05T13: 21: 12.637  1  0  WS20098002  SQL2005DE  18456  maîtriser  0  16981    ikke_test\nevent_type est évidemment AUDIT_LOGIN. post_time contient l&#39;heure à laquelle l&#39;événement est publié sur le service. spid représente l&#39;ID de la session pour l&#39;événement. text_data contient une liste délimitée par des points-virgules de toutes les options définies. binary_data contient les paramètres de niveau de session, y compris les valeurs null ANSI, le remplissage ANSI, la fermeture du curseur lors de la validation, la concaténation NULL et les identificateurs entre guillemets. id_base_de_données est l&#39;ID de la base de données par défaut ou l&#39;ID de la base de données utilisée par l&#39;instruction USE, si elle existe. nt_user_name représente le nom d&#39;utilisateur Windows. nt_domain_name représente le domaine Windows auquel l&#39;utilisateur appartient. nom_hôte contient le nom de l&#39;ordinateur sur lequel le client est en cours d&#39;exécution. client_process_id est l&#39;ID attribué par l&#39;ordinateur hôte au processus d&#39;exécution de l&#39;application client. nom_application est le nom de l&#39;application cliente. login_name est le nom du login utilisé. heure_début représente l&#39;heure à laquelle l&#39;événement a commencé. event_subclass indique si la connexion est groupée ou non groupée avec les valeurs 1 pour non groupé et 2 pour groupé. L&#39;élément success indique si l&#39;authentification a réussi et a les valeurs 1 pour succès et 0 pour échec. Pour l&#39;événement AUDIT_LOGIN, il contiendra toujours la valeur 1. integer_data représente la taille du paquet réseau. nom_serveur représente le nom de l&#39;instance de SQL Server sur laquelle l&#39;événement s&#39;est produit. nom_base_de_données est le nom de la base de données login_sid contient le numéro d&#39;identification de sécurité (SID) de l&#39;utilisateur connecté. request_id représente l&#39;ID de la requête. event_sequence représente la séquence de l&#39;événement dans la demande. is_system indique si l&#39;événement s&#39;est produit pour un utilisateur ou un processus système. Dans ce cas, il s&#39;agira toujours d&#39;un processus utilisateur.* /\n/ *\nALLER\n&#8211; nettoyer seulement si nécessaire\n/ * En cas de problèmes, commencez par abandonner l&#39;abonnement EVENT NOTIFICATION * /&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER \n&#8211; ALTER QUEUE Q_FailedLogon_Tracker_Queue WITH STATUS = OFF&#8211; DROP EVENT NOTIFICATION N_Failed_Login_Notification ON SERVER &#8211; DROP ROUTE R_FailedLogon_Tracker_Route &#8211; DROP SERVICE S_FailedLogon_Tracker_Service&#8211; DROP QUEUE Q_FailedLogon_Tracker_Queue; &#8211; DROP PROCEDURE dbo.spc_DBA_FailedConnectionTracker&#8211;"},{"id":"text-3","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":""},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/05/03/audit-des-connexions-echouees-dans-sql-server-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/audit-des-connexions-echouees-dans-sql-server-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/audit-des-connexions-echouees-dans-sql-server-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}