<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>David Barbarin &#187; basculement</title>
	<atom:link href="https://blog.developpez.com/mikedavem/ptag/basculement/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/mikedavem</link>
	<description>MVP DataPlatform - MCM SQL Server</description>
	<lastBuildDate>Thu, 09 Sep 2021 21:19:50 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>SQL Server AlwaysOn: Est-ce que ma base de données est prête à basculer?</title>
		<link>https://blog.developpez.com/mikedavem/p13072/sql-server-2012/sql-server-alwayson-est-ce-que-ma-base-de-donnees-est-prete-pour-basculer</link>
		<comments>https://blog.developpez.com/mikedavem/p13072/sql-server-2012/sql-server-alwayson-est-ce-que-ma-base-de-donnees-est-prete-pour-basculer#comments</comments>
		<pubDate>Sat, 09 Jul 2016 08:05:36 +0000</pubDate>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
				<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQL Server 2014]]></category>
		<category><![CDATA[SQL Server 2016]]></category>
		<category><![CDATA[AlwaysOn]]></category>
		<category><![CDATA[basculement]]></category>
		<category><![CDATA[failover]]></category>
		<category><![CDATA[Groupe de disponiblités]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sys.dm_hadr_database_replica_cluster_states]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/mikedavem/?p=1233</guid>
		<description><![CDATA[Dans ce billet, je voudrais juste clarifier certaines valeurs dans la colonne is_failover_ready de la DMV sys.dm_hadr_database_replica_cluster_states. Il y a quelques jours, j&#8217;ai eu une discussion intéressante avec un de mes clients qui m&#8217;expliquait qu&#8217;il n&#8217;était vraiment sûr de l&#8217;état &#8230; <a href="https://blog.developpez.com/mikedavem/p13072/sql-server-2012/sql-server-alwayson-est-ce-que-ma-base-de-donnees-est-prete-pour-basculer">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Dans ce billet, je voudrais juste clarifier certaines valeurs dans la colonne is_failover_ready de la DMV sys.dm_hadr_database_replica_cluster_states. Il y a quelques jours, j&rsquo;ai eu une discussion intéressante avec un de mes clients qui m&rsquo;expliquait qu&rsquo;il n&rsquo;était vraiment sûr de l&rsquo;état d&rsquo;un de ses groupes de disponibilités après avoir eu quelques soucis &#8230;</p>
<p>&gt; <a href="http://blog.dbi-services.com/sql-server-alwayson-is-my-database-ready-for-failover/" target="_blank">Lire la suite</a> (en anglais)</p>
<p>David Barbarin<br />
MVP &amp; MCM SQL Server</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>D&#233;tecter un basculement automatique avec SQL Server 2012 AlwaysOn</title>
		<link>https://blog.developpez.com/mikedavem/p12169/sql-server-2012/dtecter-un-basculement-automatique-avec-sql-server-2012-alwayson</link>
		<comments>https://blog.developpez.com/mikedavem/p12169/sql-server-2012/dtecter-un-basculement-automatique-avec-sql-server-2012-alwayson#comments</comments>
		<pubDate>Thu, 08 Aug 2013 13:26:30 +0000</pubDate>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
				<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[AlwaysOn]]></category>
		<category><![CDATA[basculement]]></category>
		<category><![CDATA[failover]]></category>
		<category><![CDATA[haute disponibilité]]></category>
		<category><![CDATA[high availability]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/mikedavem/?p=652</guid>
		<description><![CDATA[Après avoir installé une infrastructure SQL Server 2012 AlwaysOn, il peut être intéressant d&#8217;être alerté lorsqu&#8217;un groupe de disponibilité basculement automatiquement d&#8217;un réplica à un autre pour une raison quelconque. Alors que pour les architectures en mirrroring nous avons built-in &#8230; <a href="https://blog.developpez.com/mikedavem/p12169/sql-server-2012/dtecter-un-basculement-automatique-avec-sql-server-2012-alwayson">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Après avoir installé une infrastructure SQL Server 2012 AlwaysOn, il peut être intéressant d&rsquo;être alerté lorsqu&rsquo;un groupe de disponibilité basculement automatiquement d&rsquo;un réplica à un autre pour une raison quelconque. Alors que pour les architectures en mirrroring nous avons built-in tout ce qu&rsquo;il faut avec <a href="http://technet.microsoft.com/en-us/library/cc966392.aspx">DATABASE_MIRRORING_STATE_CHANGE</a> et des états en sortie qui nous permettent de savoir si un basculement manuel ou automatique a été effectué, c&rsquo;est une autre paire de manche avec les infrastructures AlwaysOn. La documentation en ligne nous propose <a href="http://msdn.microsoft.com/library/ff877954(v=sql.110).aspx">différentes outils</a> comme&#160; System Center, SQL Server Management Studio, les compteurs de performances ou encore Transact-SQL. Je rajouterai également PowerShell qui peut nous aider ici ou encore les outils tiers qui viendront compléter cette liste.</p>
<p>Voici une solution parmi d&rsquo;autres. Pour ma part j&rsquo;ai opté pour :</p>
<ul>
<li>Une routine continue en T-SQL qui va chercher les changements d&rsquo;états survenus sur les groupes de disponibilités présents sur un serveur sql. Si un changement est détecté un email est envoyé via databasemail aux personnes concernées </li>
<li>Un job SQL qui démarre et s&rsquo;exécute lorsque le service de l&rsquo;agent SQL Server démarre ou redémarre. Ce service est déjà monitoré par des outils tiers et si un problème survient au niveau de l&rsquo;agent SQL l&rsquo;information sera de toute façon remontée </li>
</ul>
<p>&#160;</p>
<p><a href="http://blog.developpez.com/mikedavem/files/2013/08/icon_arrow5.gif"><img title="icon_arrow" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="icon_arrow" src="http://blog.developpez.com/mikedavem/files/2013/08/icon_arrow_thumb5.gif" width="15" height="15" /></a>&#160;<strong>Le code de la routine à intégrer</strong></p>
<p><div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;height:450px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">-- WORK TABLES</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @t_aag <span style="color: #993333; font-weight: bold;">TABLE</span><br />
<span style="color: #66cc66;">&#40;</span><br />
&nbsp; &nbsp;group_name SYSNAME <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp;primary_replica <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp;primary_recovery_health NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">80</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @t_aag_result <span style="color: #993333; font-weight: bold;">TABLE</span><br />
<span style="color: #66cc66;">&#40;</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#91;</span>action<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> <br />
&nbsp; &nbsp;group_name SYSNAME <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp;primary_replica_old <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp;primary_replica_new <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp;primary_recovery_health NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">80</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">INSERT</span> @t_aag <span style="color: #66cc66;">&#40;</span>group_name<span style="color: #66cc66;">,</span> primary_replica<span style="color: #66cc66;">,</span> primary_recovery_health<span style="color: #66cc66;">&#41;</span> <br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>group_name<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>primary_replica_new<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>primary_recovery_health<span style="color: #66cc66;">&#93;</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>dbi_alwayson_failover_logs<span style="color: #66cc66;">&#93;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">WITH</span> aag<br />
<span style="color: #993333; font-weight: bold;">AS</span><br />
<span style="color: #66cc66;">&#40;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <br />
&nbsp; &nbsp; g<span style="color: #66cc66;">.</span>name <span style="color: #993333; font-weight: bold;">AS</span> group_name<span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; primary_replica<span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; primary_recovery_health_desc<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">FROM</span> sys<span style="color: #66cc66;">.</span>dm_hadr_availability_group_states <span style="color: #993333; font-weight: bold;">AS</span> ags<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">JOIN</span> sys<span style="color: #66cc66;">.</span>availability_groups <span style="color: #993333; font-weight: bold;">AS</span> g<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ON</span> ags<span style="color: #66cc66;">.</span>group_id <span style="color: #66cc66;">=</span> g<span style="color: #66cc66;">.</span>group_id<br />
<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">MERGE</span> dbo<span style="color: #66cc66;">.</span>dbi_alwayson_failover_logs <span style="color: #993333; font-weight: bold;">AS</span> t_aag<br />
<span style="color: #993333; font-weight: bold;">USING</span> aag<br />
<span style="color: #993333; font-weight: bold;">ON</span> aag<span style="color: #66cc66;">.</span>group_name <span style="color: #66cc66;">=</span> t_aag<span style="color: #66cc66;">.</span>group_name <span style="color: #993333; font-weight: bold;">COLLATE</span> Latin1_General_CS_AS_KS<br />
<span style="color: #993333; font-weight: bold;">WHEN</span> matched <span style="color: #993333; font-weight: bold;">AND</span> aag<span style="color: #66cc66;">.</span>primary_replica !<span style="color: #66cc66;">=</span> t_aag<span style="color: #66cc66;">.</span>primary_replica_new <span style="color: #993333; font-weight: bold;">COLLATE</span> Latin1_General_CS_AS_KS<br />
<span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #993333; font-weight: bold;">UPDATE</span> <span style="color: #993333; font-weight: bold;">SET</span> event_time <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">CURRENT_TIMESTAMP</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; primary_replica_new <span style="color: #66cc66;">=</span> aag<span style="color: #66cc66;">.</span>primary_replica<span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; primary_replica_old <span style="color: #66cc66;">=</span> primary_replica_new<span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; primary_recovery_health <span style="color: #66cc66;">=</span> aag<span style="color: #66cc66;">.</span>primary_recovery_health_desc<br />
<span style="color: #993333; font-weight: bold;">WHEN</span> <span style="color: #993333; font-weight: bold;">NOT</span> MATCHED <span style="color: #993333; font-weight: bold;">BY</span> TARGET <br />
<span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">CURRENT_TIMESTAMP</span><span style="color: #66cc66;">,</span> aag<span style="color: #66cc66;">.</span>group_name<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> aag<span style="color: #66cc66;">.</span>primary_replica<span style="color: #66cc66;">,</span> aag<span style="color: #66cc66;">.</span>primary_recovery_health_desc<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> <span style="color: #993333; font-weight: bold;">NOT</span> MATCHED <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #993333; font-weight: bold;">SOURCE</span> <br />
<span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #993333; font-weight: bold;">DELETE</span><br />
OUTPUT $action<span style="color: #66cc66;">,</span> inserted<span style="color: #66cc66;">.</span>group_name<span style="color: #66cc66;">,</span> deleted<span style="color: #66cc66;">.</span>primary_replica_new<span style="color: #66cc66;">,</span> inserted<span style="color: #66cc66;">.</span>primary_replica_new<span style="color: #66cc66;">,</span> inserted<span style="color: #66cc66;">.</span>primary_recovery_health<br />
<span style="color: #993333; font-weight: bold;">INTO</span> @t_aag_result;<br />
<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <br />
&nbsp; &nbsp; group_name<span style="color: #66cc66;">,</span> <br />
&nbsp; &nbsp; primary_replica_new<br />
<span style="color: #993333; font-weight: bold;">FROM</span> @t_aag_result <br />
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>action<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'UPDATE'</span><br />
<br />
<br />
<span style="color: #808080; font-style: italic;">-- Reset work table</span><br />
<span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> @t_aag;<br />
<span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> @t_aag_result;<br />
<span style="color: #993333; font-weight: bold;">GO</span></div></div>
</p>
<p>&#160;</p>
<p>Le script fonctionne de manière suivante :</p>
<ul>
<li>2 tables de travail @t_aag et @t_aag_result qui vont respectivement contenir la configuration des groupes de disponibilités présents sur le serveur SQL et le delta éventuel dans une configuration existante (action = update) qui impliquerait un basculement dans notre cas </li>
<li>Une boucle continue de détection de basculement avec une temporisation de 10 secondes </li>
<li>1 table [dbo].[dba_alwayson_failover_logs] qui contiendra une ligne de données pour chaque&#160; basculement de groupes de disponibilité détecté. Une procédure stockée dbo.dba.alwayson_mail se servira ensuite de cette table d&rsquo;historique pour l&rsquo;envoi des emails. </li>
<li>Une instruction MERGE utilisée ici pour mettre à jour en continue la configuration des groupes de disponibilités sur le serveur SQL concerné (les ajouts, les mises à jour et les suppressions de groupes de disponibilités) avec insertion d&rsquo;une ligne de données en cas de mise à jour du réplica primaire pour un groupe de disponibilité (when matched and aag.primary_replica &lt;&gt; t_aag.primary_replica) </li>
</ul>
<p>&#160;</p>
<p><a href="http://blog.developpez.com/mikedavem/files/2013/08/icon_arrow6.gif"><img title="icon_arrow" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="icon_arrow" src="http://blog.developpez.com/mikedavem/files/2013/08/icon_arrow_thumb6.gif" width="15" height="15" /></a>&#160;<strong>Le code de la table d&rsquo;historique</strong></p>
<p><div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>dbi_alwayson_failover_logs<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span>event_time<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#91;</span>datetime<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #66cc66;">&#40;</span>getdate<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span>group_name<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#91;</span>sysname<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span>primary_replica_old<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span>primary_replica_new<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span>primary_recovery_health<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#91;</span>nvarchar<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">80</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">PRIMARY</span><span style="color: #66cc66;">&#93;</span></div></div>
</p>
<p>&#160;</p>
<p>Je ne mets pas ici volontairement le code la procédure d&rsquo;envoi d&rsquo;email car elle est plutôt spécifique à notre environnement de script. La logique est assez simple et consiste simplement à :</p>
<ul>
<li>1- parcourir la table d&rsquo;historique [dbo].[dba_alwayson_failover_logs] et vérifier les lignes de données non traitées par la routine d&rsquo;envoi d&rsquo;email. </li>
<li>2- Mettre à jour la valeur de colonne sent_by_email à 1 une fois l&rsquo;email envoyé. </li>
</ul>
<p>&#160;</p>
<p>Et vous comment faites-vous ?</p>
<p>Bonne détection de basculement !</p>
<p>&#160;</p>
<p>David BARBARIN (Mikedavem)    <br />MVP SQL Server</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
