<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	
	>
<channel>
	<title>Commentaires pour Le Blog SQL Server d&#039;ElSüket</title>
	<atom:link href="https://blog.developpez.com/elsuket/comments/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/elsuket</link>
	<description>Nicolas Souquet - Expert SQL Server</description>
	<lastBuildDate>Mon, 08 Feb 2021 17:42:36 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Commentaires sur Marquer une procédure stockée comme objet système : la procédure stockée sp_MS_marksystemobject par Bowen</title>
		<link>https://blog.developpez.com/elsuket/p9409/utilitaires/marquer_un_procedure_stockee_comme_objet#comment-347</link>
		<dc:creator><![CDATA[Bowen]]></dc:creator>
		<pubDate>Mon, 08 Feb 2021 17:42:36 +0000</pubDate>
		<guid isPermaLink="false">#comment-347</guid>
		<description><![CDATA[Je déterre un vieux post, mais... Connaissez-vous la procédure inverse à sp_MS_marksystemobject ?
(enlever le marquage système)]]></description>
		<content:encoded><![CDATA[<p>Je déterre un vieux post, mais&#8230; Connaissez-vous la procédure inverse à sp_MS_marksystemobject ?<br />
(enlever le marquage système)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Quelle différence y a-t&#8217;il entre une colonne et un champ ? entre une ligne et un enregistrement ? entre une table et un tableau ? par Rhumz</title>
		<link>https://blog.developpez.com/elsuket/p8118/sql-general/quelle_difference_y_a_t_il_entre_une_col#comment-346</link>
		<dc:creator><![CDATA[Rhumz]]></dc:creator>
		<pubDate>Thu, 10 Jan 2019 13:00:35 +0000</pubDate>
		<guid isPermaLink="false">#comment-346</guid>
		<description><![CDATA[Bonjour,

Je sais que ce post est vieux, mais serait-il possible d&#039;ajouter des exemples concrets s&#039;il vous plaît ?

Merci]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Je sais que ce post est vieux, mais serait-il possible d&rsquo;ajouter des exemples concrets s&rsquo;il vous plaît ?</p>
<p>Merci</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Configurer les protocoles de connexion réseau à SQL Server : l&#8217;utilitaire SQL Server Configuration Manager par MAXJEREM</title>
		<link>https://blog.developpez.com/elsuket/p7723/moteur-de-base-de-donnees-sql-server/configurer_les_protocoles_de_connexion_a#comment-345</link>
		<dc:creator><![CDATA[MAXJEREM]]></dc:creator>
		<pubDate>Tue, 24 Jul 2018 15:09:45 +0000</pubDate>
		<guid isPermaLink="false">#comment-345</guid>
		<description><![CDATA[Bonjour, 

Merci pour ces tutos. 
Quand je tente de modifier les adresses IP ou le champ Activé oui non, j&#039;ai un message d&#039;erreur le fichier est en lecture seulement.
Avez -vous une idée? 
Merci de votre réponse]]></description>
		<content:encoded><![CDATA[<p>Bonjour, </p>
<p>Merci pour ces tutos.<br />
Quand je tente de modifier les adresses IP ou le champ Activé oui non, j&rsquo;ai un message d&rsquo;erreur le fichier est en lecture seulement.<br />
Avez -vous une idée?<br />
Merci de votre réponse</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Générer le script de tables et des données qu&#8217;elles contiennent avec SSMS 2008 par Gluups</title>
		<link>https://blog.developpez.com/elsuket/p7902/utilitaires/generer_le_script_de_tables_et_des_donne_2008#comment-344</link>
		<dc:creator><![CDATA[Gluups]]></dc:creator>
		<pubDate>Mon, 16 Jul 2018 10:04:11 +0000</pubDate>
		<guid isPermaLink="false">#comment-344</guid>
		<description><![CDATA[ça marche aussi avec SQL Express 2014, mais dans les options de script, il faut penser à cliquer sur le bouton Avancé, puis renseigner les types de données à inclure dans le script (par exemple schéma et données).]]></description>
		<content:encoded><![CDATA[<p>ça marche aussi avec SQL Express 2014, mais dans les options de script, il faut penser à cliquer sur le bouton Avancé, puis renseigner les types de données à inclure dans le script (par exemple schéma et données).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par sbeprod</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-343</link>
		<dc:creator><![CDATA[sbeprod]]></dc:creator>
		<pubDate>Tue, 28 Nov 2017 09:09:47 +0000</pubDate>
		<guid isPermaLink="false">#comment-343</guid>
		<description><![CDATA[Bonjour,
Pensez-vous qu&#039;il y ait plus simple que le SELECT ci-dessous pour renvoyer le 1er jour du mois correspondant à la date courante - 1 an =&gt; nous sommes le 28/11/17 et je souhaite obtenir le 01/11/16

SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,DATEADD(YEAR,-1,GETDATE())),0)]]></description>
		<content:encoded><![CDATA[<p>Bonjour,<br />
Pensez-vous qu&rsquo;il y ait plus simple que le SELECT ci-dessous pour renvoyer le 1er jour du mois correspondant à la date courante &#8211; 1 an =&gt; nous sommes le 28/11/17 et je souhaite obtenir le 01/11/16</p>
<p>SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,DATEADD(YEAR,-1,GETDATE())),0)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Comparaison des temps d&#8217;exécution entre un curseur et une requête SQL par Artemus24</title>
		<link>https://blog.developpez.com/elsuket/p7445/moteur-de-base-de-donnees-sql-server/comparaison_des_temps_d_execution_entre#comment-342</link>
		<dc:creator><![CDATA[Artemus24]]></dc:creator>
		<pubDate>Mon, 06 Jun 2016 15:56:05 +0000</pubDate>
		<guid isPermaLink="false">#comment-342</guid>
		<description><![CDATA[Salut elsuket.

J&#039;ai refais le test en tenant compte de vos remarques. Voici le nouveau tableau que j&#039;obtiens :
+-----------+--------------+--------------+----------+
&#124; Nombre de &#124; Avec Curseur &#124; Sans Curseur &#124;   Ecart  &#124; 
&#124;  lignes   &#124;   (Curs1)    &#124;   (Curs2)    &#124;   en  %  &#124;
+-----------+--------------+--------------+----------+
&#124;        10 &#124;        16    &#124;         0    &#124;    -     &#124;
&#124;       100 &#124;        16    &#124;         0    &#124;    -     &#124;
&#124;     1.000 &#124;        86    &#124;         0    &#124;    -     &#124;
&#124;    10.000 &#124;       863    &#124;        16    &#124; 539,37 % &#124;
&#124;   100.000 &#124;     8.716    &#124;       163    &#124; 534,72 % &#124;
&#124; 1.000.000 &#124;    89.826    &#124;     1.490    &#124; 602,85 % &#124;
+-----------+--------------+--------------+----------+
&#124;  Moyenne  &#124;    99.523    &#124;     1.669    &#124; 593,30 % &#124;
+-----------+--------------+--------------+----------+
Avec curseur, j&#039;obtiens à peu près la même chose que précédemment.
Donc votre remarque, celle d&#039;itérer 100.000 fois sur une table ne contenant que 10 lignes, n&#039;est pas justifiée, pour la partie curseur.

Au final, l&#039;approche sans curseur (ensembliste) reste encore bien meilleur. Cela ne remet pas en cause la conclusion de ce sujet.
Mais je ferai remarquer que mettre une surcouche (le curseur) à ce que sait déjà faire SQL Server en interne n&#039;est pas justifié dans ce cas.

--&gt; le traitement par curseur est simplement catastrophique.
Oui, les résultats en millisecondes sont catastrophiques.

Mais chez moi, l&#039;écart reste stable alors que chez vous elle est en augmentation.
Comparativement, vous obtenez 13.114 %, tandis que j&#039;obtiens 593,30 %.
Vous êtes à plus du double de ma performance !
Normalement, nous aurions dû trouver à peu de chose près les mêmes résultats.

@+]]></description>
		<content:encoded><![CDATA[<p>Salut elsuket.</p>
<p>J&rsquo;ai refais le test en tenant compte de vos remarques. Voici le nouveau tableau que j&rsquo;obtiens :<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
| Nombre de | Avec Curseur | Sans Curseur |   Ecart  |<br />
|  lignes   |   (Curs1)    |   (Curs2)    |   en  %  |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
|        10 |        16    |         0    |    &#8211;     |<br />
|       100 |        16    |         0    |    &#8211;     |<br />
|     1.000 |        86    |         0    |    &#8211;     |<br />
|    10.000 |       863    |        16    | 539,37 % |<br />
|   100.000 |     8.716    |       163    | 534,72 % |<br />
| 1.000.000 |    89.826    |     1.490    | 602,85 % |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
|  Moyenne  |    99.523    |     1.669    | 593,30 % |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
Avec curseur, j&rsquo;obtiens à peu près la même chose que précédemment.<br />
Donc votre remarque, celle d&rsquo;itérer 100.000 fois sur une table ne contenant que 10 lignes, n&rsquo;est pas justifiée, pour la partie curseur.</p>
<p>Au final, l&rsquo;approche sans curseur (ensembliste) reste encore bien meilleur. Cela ne remet pas en cause la conclusion de ce sujet.<br />
Mais je ferai remarquer que mettre une surcouche (le curseur) à ce que sait déjà faire SQL Server en interne n&rsquo;est pas justifié dans ce cas.</p>
<p>&#8211;&gt; le traitement par curseur est simplement catastrophique.<br />
Oui, les résultats en millisecondes sont catastrophiques.</p>
<p>Mais chez moi, l&rsquo;écart reste stable alors que chez vous elle est en augmentation.<br />
Comparativement, vous obtenez 13.114 %, tandis que j&rsquo;obtiens 593,30 %.<br />
Vous êtes à plus du double de ma performance !<br />
Normalement, nous aurions dû trouver à peu de chose près les mêmes résultats.</p>
<p>@+</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Comparaison des temps d&#8217;exécution entre un curseur et une requête SQL par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p7445/moteur-de-base-de-donnees-sql-server/comparaison_des_temps_d_execution_entre#comment-341</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sat, 04 Jun 2016 17:47:33 +0000</pubDate>
		<guid isPermaLink="false">#comment-341</guid>
		<description><![CDATA[Je compare des choses comparables. L&#039;UPDATE est fait soit ligne à ligne avec un curseur, soit d&#039;un tir en une seule instruction. 

L&#039;INSERT permet seulement d&#039;augmenter le nombre de lignes sur lequel on teste les deux approches. Ce n&#039;est pas la durée de l&#039;INSERT que l&#039;on mesure. D&#039;où le tableau qui montre le nombre de lignes de la table suivant les puissances de 10 : c&#039;est ce que fait l&#039;INSERT et que j&#039;ai mis en commentaire, et le commentaire suivant dans l&#039;exposition des résultats :

&quot;Entre chaque exécution, j’ai augmenté le nombre de lignes suivant les puissances de 10&quot;.

Evidemment vous n&#039;obtenez pas les même résultats que moi parce que vous UPDATEz en boucle le même nombre de lignes ! Mettre à jour 10 lignes seulement, en boucle, ce n&#039;est pas un test : 10 lignes c&#039;est de la gnognotte, et ce n&#039;est pas réaliste : aucun traitement business ne fait cela sur une base de données relationnelle SQL, ou alors c&#039;est une erreur !

C&#039;est pour ça que j&#039;augmente le nombre de lignes de la table, et que l&#039;on voit clairement que quand le nombre de lignes de la table augmente, le traitement par curseur est simplement catastrophique.

Vous avez une fâcheuse tendance à confondre 3 lignes qui se battent en duel dans une table, avec des tables qui en contiennent des millions voire des milliards. Or c&#039;est à cela que l&#039;on mesure des performances : mettre à jour 10 lignes en boucle peut être fait avec Excel.

Regardez comme je vous l&#039;ai indiqué les tests TPC, et travaillez sur bases de données qui supportent une charge OLTP ou OLAP et dont le volume se mesure en centaines de Go, ou en To, ou plus encore. Une fois votre implémentation faite avec des curseurs, vous me direz ce que votre employeur ou client en pense : je serai ravi de vous voir le partager ici !]]></description>
		<content:encoded><![CDATA[<p>Je compare des choses comparables. L&rsquo;UPDATE est fait soit ligne à ligne avec un curseur, soit d&rsquo;un tir en une seule instruction. </p>
<p>L&rsquo;INSERT permet seulement d&rsquo;augmenter le nombre de lignes sur lequel on teste les deux approches. Ce n&rsquo;est pas la durée de l&rsquo;INSERT que l&rsquo;on mesure. D&rsquo;où le tableau qui montre le nombre de lignes de la table suivant les puissances de 10 : c&rsquo;est ce que fait l&rsquo;INSERT et que j&rsquo;ai mis en commentaire, et le commentaire suivant dans l&rsquo;exposition des résultats :</p>
<p>&laquo;&nbsp;Entre chaque exécution, j’ai augmenté le nombre de lignes suivant les puissances de 10&Prime;.</p>
<p>Evidemment vous n&rsquo;obtenez pas les même résultats que moi parce que vous UPDATEz en boucle le même nombre de lignes ! Mettre à jour 10 lignes seulement, en boucle, ce n&rsquo;est pas un test : 10 lignes c&rsquo;est de la gnognotte, et ce n&rsquo;est pas réaliste : aucun traitement business ne fait cela sur une base de données relationnelle SQL, ou alors c&rsquo;est une erreur !</p>
<p>C&rsquo;est pour ça que j&rsquo;augmente le nombre de lignes de la table, et que l&rsquo;on voit clairement que quand le nombre de lignes de la table augmente, le traitement par curseur est simplement catastrophique.</p>
<p>Vous avez une fâcheuse tendance à confondre 3 lignes qui se battent en duel dans une table, avec des tables qui en contiennent des millions voire des milliards. Or c&rsquo;est à cela que l&rsquo;on mesure des performances : mettre à jour 10 lignes en boucle peut être fait avec Excel.</p>
<p>Regardez comme je vous l&rsquo;ai indiqué les tests TPC, et travaillez sur bases de données qui supportent une charge OLTP ou OLAP et dont le volume se mesure en centaines de Go, ou en To, ou plus encore. Une fois votre implémentation faite avec des curseurs, vous me direz ce que votre employeur ou client en pense : je serai ravi de vous voir le partager ici !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Comparaison des temps d&#8217;exécution entre un curseur et une requête SQL par Artemus24</title>
		<link>https://blog.developpez.com/elsuket/p7445/moteur-de-base-de-donnees-sql-server/comparaison_des_temps_d_execution_entre#comment-339</link>
		<dc:creator><![CDATA[Artemus24]]></dc:creator>
		<pubDate>Sat, 04 Jun 2016 17:02:20 +0000</pubDate>
		<guid isPermaLink="false">#comment-339</guid>
		<description><![CDATA[Salut elsuket.

[quote=&quot;elsuket&quot;]Outre le fait que les curseurs datent de COBOL (1956 …),[/quote]
Cobol est un langage de programmation qui est apparu en 1959.
Ensuite, ils sont apparus dans le cobol avec l&#039;apparition de DB2, donc cela date des années 80.

[quote=&quot;elsuket&quot;]comparons donc les temps d’exécution entre un curseur et une requête sur un traitement très simple …[/quote]
Faut-il comparer des choses qui sont comparables entre eux !
Tu proposes de comparer un update dans un curseur avec un insert sans mise à jour de la colonne.
C&#039;est sûr que le insert sera bien plus rapide que le update, même sans curseur.

Puisque tu m&#039;as proposé de refaire ton test de comparaison, je propose de revoir les points suivants :

1) je reprends ton exemple de la création de la table sans rien modifier.

2) j&#039;ai créé deux procédures ayant la même structure.

3) la procédure curs1 travaille avec un curseur et vient mettre à jour la colonne &quot;[c]nombre[/c]&quot;

4) la procédure curs2 modifie aussi la colonne &quot;[c]nombre[/c]&quot;, mais par un traitement ensembliste.

5) la nouveauté par rapport à ton test, je traite dans la procédure le nombre d&#039;itération.
Ainsi dix itérations va traiter 100 lignes, soit 10 itérations X 10 lignes.

Je suis sous windows 10, avec Microsoft SQL Server Express 2014.
Mon ordinateur est un HP Compaq 6830s avec un processeur deux coeurs tournant à 2,40 Ghz.

Voici le résultat que j&#039;obtiens :
[code]-- ===========
-- Paramétrage
-- ===========

SET NOCOUNT ON

-- ==================
-- Lien vers Database
-- ==================

use tempdb

Le contexte de la base de données a changé ; il est maintenant &#039;tempdb&#039;.

-- ========================
-- Suppression Table &#039;test&#039;
-- ========================

IF OBJECT_ID(N&#039;dbo.test&#039;, N&#039;U&#039;) IS NOT NULL
    DROP TABLE dbo.test

-- =====================
-- Création Table &#039;test&#039;
-- =====================

create table test (
  id      integer  identity(1, 1) not null,
  nombre  integer                 not null default 0
  constraint pk_test_id   primary key clustered (id)
)

-- =============================
-- Suppression Procédure &#039;curs1&#039;
-- =============================

IF OBJECT_ID(N&#039;dbo.curs1&#039;, N&#039;P&#039;) IS NOT NULL
   DROP PROCEDURE dbo.curs1

-- ==========================
-- création procédure &#039;curs1&#039;
-- ==========================

create procedure dbo.curs1
  @nbre integer
as
  declare @datedeb   datetime = cast(current_timestamp as datetime)
  declare @datefin   datetime
  declare @id        integer
begin
  declare curs cursor scroll for select id from dbo.test for update of nombre

  open curs
  fetch next from curs into @id

  while (@nbre &gt; 0)
  begin
    while (@@FETCH_STATUS = 0)
    begin
      update dbo.test set nombre = 10 * @id where current of curs
      fetch next from curs into @id
    end

    fetch first from curs into @id
    set @nbre = @nbre - 1
  end

  close      curs
  deallocate curs
  set @datefin = cast(current_timestamp as datetime)

  SELECT DATEDIFF(millisecond, @dateDeb, @dateFin) as &#039;temps elaps&#039;
end

-- =============================
-- Suppression Procédure &#039;curs2&#039;
-- =============================

IF OBJECT_ID(N&#039;dbo.curs2&#039;, N&#039;P&#039;) IS NOT NULL
   DROP PROCEDURE dbo.curs2

-- ==========================
-- création procédure &#039;curs2&#039;
-- ==========================

create procedure dbo.curs2
  @nbre integer
as
  declare @datedeb   datetime = cast(current_timestamp as datetime)
  declare @datefin   datetime
begin
  while (@nbre &gt; 0)
  begin
    update dbo.test set nombre = 10 * id
    set @nbre = @nbre - 1
  end

  set @datefin = cast(current_timestamp as datetime)

  SELECT DATEDIFF(millisecond, @dateDeb, @dateFin) as &#039;temps elaps&#039;
end

-- =====================
-- Insertion dans &#039;test&#039;
-- =====================

insert into test (nombre) values (0), (0), (0), (0), (0), (0), (0), (0), (0), (0)

-- ================
-- Vidage de &#039;test&#039;
-- ================

select * from test;

id          nombre
----------- -----------
          1           0
          2           0
          3           0
          4           0
          5           0
          6           0
          7           0
          8           0
          9           0
         10           0

-- =================
-- procédure &#039;curs1&#039;
-- =================

execute dbo.curs1 1

temps elaps
-----------
         16
execute dbo.curs1 10

temps elaps
-----------
         16
execute dbo.curs1 100

temps elaps
-----------
         83
execute dbo.curs1 1000

temps elaps
-----------
        816
execute dbo.curs1 10000

temps elaps
-----------
       7896
execute dbo.curs1 100000

temps elaps
-----------
      80116

-- =================
-- procédure &#039;curs2&#039;
-- =================

execute dbo.curs2 1

temps elaps
-----------
          0
execute dbo.curs2 10

temps elaps
-----------
          0
execute dbo.curs2 100

temps elaps
-----------
         13
execute dbo.curs2 1000

temps elaps
-----------
         70
execute dbo.curs2 10000

temps elaps
-----------
        380
execute dbo.curs2 100000

temps elaps
-----------
       3933

Appuyez sur une touche pour continuer...[/code]

Je te donne, sous forme de tableau, le récapitulatif des résultats de ce test :
[code]

+-----------+--------------+--------------+----------+
&#124; Nombre de &#124; Avec Curseur &#124; Sans Curseur &#124;   Ecart  &#124; 
&#124;  lignes   &#124;   (Curs1)    &#124;   (Curs2)    &#124;   en  %  &#124;
+-----------+--------------+--------------+----------+
&#124;        10 &#124;        16    &#124;         0    &#124;    -     &#124;
&#124;       100 &#124;        16    &#124;         0    &#124;    -     &#124;
&#124;     1.000 &#124;        83    &#124;        13    &#124;  63.84 % &#124;
&#124;    10.000 &#124;       816    &#124;        70    &#124; 116,57 % &#124;
&#124;   100.000 &#124;     7.896    &#124;       380    &#124; 207,78 % &#124;
&#124; 1.000.000 &#124;    80.116    &#124;     3.933    &#124; 203,70 % &#124;
+-----------+--------------+--------------+----------+
&#124;  Moyenne  &#124;    88.943    &#124;     4.396    &#124; 202,32 % &#124;
+-----------+--------------+--------------+----------+[/code]
Je n&#039;obtiens pas du tout les mêmes résultats que toi, même si le traitement par curseur (Curs1) est plus long que le traitement ensembliste (curs2)

Dans ton traitement avec curseur, le &quot;[c]update[/c]&quot; sur le curseur ne se fait pas comme tu l&#039;as fait.
La bonne façon de mettre à joueur un curseur est comme ci-après :
[code]update dbo.test set nombre = 10 * @id [color=red]where current of curs[/color][/code]
il est inutile de préciser la ligne par un &quot;[c]where id = @id[/c]&quot; car tu es déjà positionné sur la ligne courante.
tandis que sans curseur, la mise à jour se fait ainsi :
[code]update dbo.test set nombre = 10 * id[/code]
Il y a peu de différence entre ces deux écritues.
La différence se fait sur la simulation par curseur, de ce que fait en interne SQL Server par la requête ensembliste.

Sinon, je trouve tes résultats (13.114,00 %) six fois moins bon que les miens (202,32 %).

@+]]></description>
		<content:encoded><![CDATA[<p>Salut elsuket.</p>
<p>[quote=&nbsp;&raquo;elsuket&nbsp;&raquo;]Outre le fait que les curseurs datent de COBOL (1956 …),[/quote]<br />
Cobol est un langage de programmation qui est apparu en 1959.<br />
Ensuite, ils sont apparus dans le cobol avec l&rsquo;apparition de DB2, donc cela date des années 80.</p>
<p>[quote=&nbsp;&raquo;elsuket&nbsp;&raquo;]comparons donc les temps d’exécution entre un curseur et une requête sur un traitement très simple …[/quote]<br />
Faut-il comparer des choses qui sont comparables entre eux !<br />
Tu proposes de comparer un update dans un curseur avec un insert sans mise à jour de la colonne.<br />
C&rsquo;est sûr que le insert sera bien plus rapide que le update, même sans curseur.</p>
<p>Puisque tu m&rsquo;as proposé de refaire ton test de comparaison, je propose de revoir les points suivants :</p>
<p>1) je reprends ton exemple de la création de la table sans rien modifier.</p>
<p>2) j&rsquo;ai créé deux procédures ayant la même structure.</p>
<p>3) la procédure curs1 travaille avec un curseur et vient mettre à jour la colonne &laquo;&nbsp;[c]nombre[/c]&nbsp;&raquo;</p>
<p>4) la procédure curs2 modifie aussi la colonne &laquo;&nbsp;[c]nombre[/c]&nbsp;&raquo;, mais par un traitement ensembliste.</p>
<p>5) la nouveauté par rapport à ton test, je traite dans la procédure le nombre d&rsquo;itération.<br />
Ainsi dix itérations va traiter 100 lignes, soit 10 itérations X 10 lignes.</p>
<p>Je suis sous windows 10, avec Microsoft SQL Server Express 2014.<br />
Mon ordinateur est un HP Compaq 6830s avec un processeur deux coeurs tournant à 2,40 Ghz.</p>
<p>Voici le résultat que j&rsquo;obtiens :<br />
[code]&#8211; ===========<br />
&#8212; Paramétrage<br />
&#8212; ===========</p>
<p>SET NOCOUNT ON</p>
<p>&#8212; ==================<br />
&#8212; Lien vers Database<br />
&#8212; ==================</p>
<p>use tempdb</p>
<p>Le contexte de la base de données a changé ; il est maintenant &lsquo;tempdb&rsquo;.</p>
<p>&#8212; ========================<br />
&#8212; Suppression Table &lsquo;test&rsquo;<br />
&#8212; ========================</p>
<p>IF OBJECT_ID(N&rsquo;dbo.test&rsquo;, N&rsquo;U&rsquo;) IS NOT NULL<br />
    DROP TABLE dbo.test</p>
<p>&#8212; =====================<br />
&#8212; Création Table &lsquo;test&rsquo;<br />
&#8212; =====================</p>
<p>create table test (<br />
  id      integer  identity(1, 1) not null,<br />
  nombre  integer                 not null default 0<br />
  constraint pk_test_id   primary key clustered (id)<br />
)</p>
<p>&#8212; =============================<br />
&#8212; Suppression Procédure &lsquo;curs1&prime;<br />
&#8212; =============================</p>
<p>IF OBJECT_ID(N&rsquo;dbo.curs1&prime;, N&rsquo;P&rsquo;) IS NOT NULL<br />
   DROP PROCEDURE dbo.curs1</p>
<p>&#8212; ==========================<br />
&#8212; création procédure &lsquo;curs1&prime;<br />
&#8212; ==========================</p>
<p>create procedure dbo.curs1<br />
  @nbre integer<br />
as<br />
  declare @datedeb   datetime = cast(current_timestamp as datetime)<br />
  declare @datefin   datetime<br />
  declare @id        integer<br />
begin<br />
  declare curs cursor scroll for select id from dbo.test for update of nombre</p>
<p>  open curs<br />
  fetch next from curs into @id</p>
<p>  while (@nbre &gt; 0)<br />
  begin<br />
    while (@@FETCH_STATUS = 0)<br />
    begin<br />
      update dbo.test set nombre = 10 * @id where current of curs<br />
      fetch next from curs into @id<br />
    end</p>
<p>    fetch first from curs into @id<br />
    set @nbre = @nbre &#8211; 1<br />
  end</p>
<p>  close      curs<br />
  deallocate curs<br />
  set @datefin = cast(current_timestamp as datetime)</p>
<p>  SELECT DATEDIFF(millisecond, @dateDeb, @dateFin) as &lsquo;temps elaps&rsquo;<br />
end</p>
<p>&#8212; =============================<br />
&#8212; Suppression Procédure &lsquo;curs2&prime;<br />
&#8212; =============================</p>
<p>IF OBJECT_ID(N&rsquo;dbo.curs2&prime;, N&rsquo;P&rsquo;) IS NOT NULL<br />
   DROP PROCEDURE dbo.curs2</p>
<p>&#8212; ==========================<br />
&#8212; création procédure &lsquo;curs2&prime;<br />
&#8212; ==========================</p>
<p>create procedure dbo.curs2<br />
  @nbre integer<br />
as<br />
  declare @datedeb   datetime = cast(current_timestamp as datetime)<br />
  declare @datefin   datetime<br />
begin<br />
  while (@nbre &gt; 0)<br />
  begin<br />
    update dbo.test set nombre = 10 * id<br />
    set @nbre = @nbre &#8211; 1<br />
  end</p>
<p>  set @datefin = cast(current_timestamp as datetime)</p>
<p>  SELECT DATEDIFF(millisecond, @dateDeb, @dateFin) as &lsquo;temps elaps&rsquo;<br />
end</p>
<p>&#8212; =====================<br />
&#8212; Insertion dans &lsquo;test&rsquo;<br />
&#8212; =====================</p>
<p>insert into test (nombre) values (0), (0), (0), (0), (0), (0), (0), (0), (0), (0)</p>
<p>&#8212; ================<br />
&#8212; Vidage de &lsquo;test&rsquo;<br />
&#8212; ================</p>
<p>select * from test;</p>
<p>id          nombre<br />
&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211;<br />
          1           0<br />
          2           0<br />
          3           0<br />
          4           0<br />
          5           0<br />
          6           0<br />
          7           0<br />
          8           0<br />
          9           0<br />
         10           0</p>
<p>&#8212; =================<br />
&#8212; procédure &lsquo;curs1&prime;<br />
&#8212; =================</p>
<p>execute dbo.curs1 1</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
         16<br />
execute dbo.curs1 10</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
         16<br />
execute dbo.curs1 100</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
         83<br />
execute dbo.curs1 1000</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
        816<br />
execute dbo.curs1 10000</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
       7896<br />
execute dbo.curs1 100000</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
      80116</p>
<p>&#8212; =================<br />
&#8212; procédure &lsquo;curs2&prime;<br />
&#8212; =================</p>
<p>execute dbo.curs2 1</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
          0<br />
execute dbo.curs2 10</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
          0<br />
execute dbo.curs2 100</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
         13<br />
execute dbo.curs2 1000</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
         70<br />
execute dbo.curs2 10000</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
        380<br />
execute dbo.curs2 100000</p>
<p>temps elaps<br />
&#8212;&#8212;&#8212;&#8211;<br />
       3933</p>
<p>Appuyez sur une touche pour continuer&#8230;[/code]</p>
<p>Je te donne, sous forme de tableau, le récapitulatif des résultats de ce test :<br />
[code]</p>
<p>+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
| Nombre de | Avec Curseur | Sans Curseur |   Ecart  |<br />
|  lignes   |   (Curs1)    |   (Curs2)    |   en  %  |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
|        10 |        16    |         0    |    &#8211;     |<br />
|       100 |        16    |         0    |    &#8211;     |<br />
|     1.000 |        83    |        13    |  63.84 % |<br />
|    10.000 |       816    |        70    | 116,57 % |<br />
|   100.000 |     7.896    |       380    | 207,78 % |<br />
| 1.000.000 |    80.116    |     3.933    | 203,70 % |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
|  Moyenne  |    88.943    |     4.396    | 202,32 % |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+[/code]<br />
Je n&rsquo;obtiens pas du tout les mêmes résultats que toi, même si le traitement par curseur (Curs1) est plus long que le traitement ensembliste (curs2)</p>
<p>Dans ton traitement avec curseur, le &laquo;&nbsp;[c]update[/c]&nbsp;&raquo; sur le curseur ne se fait pas comme tu l&rsquo;as fait.<br />
La bonne façon de mettre à joueur un curseur est comme ci-après :<br />
[code]update dbo.test set nombre = 10 * @id [color=red]where current of curs[/color][/code]<br />
il est inutile de préciser la ligne par un &laquo;&nbsp;[c]where id = @id[/c]&nbsp;&raquo; car tu es déjà positionné sur la ligne courante.<br />
tandis que sans curseur, la mise à jour se fait ainsi :<br />
[code]update dbo.test set nombre = 10 * id[/code]<br />
Il y a peu de différence entre ces deux écritues.<br />
La différence se fait sur la simulation par curseur, de ce que fait en interne SQL Server par la requête ensembliste.</p>
<p>Sinon, je trouve tes résultats (13.114,00 %) six fois moins bon que les miens (202,32 %).</p>
<p>@+</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-338</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Tue, 09 Feb 2016 20:14:38 +0000</pubDate>
		<guid isPermaLink="false">#comment-338</guid>
		<description><![CDATA[Merci Abdallah.

Effectivement tu as raison; néanmoins il faut noter que ces nouvelles fonctions sont des invocations .NET, et qu&#039;elles sont souvent un ersatz de ce que l&#039;on peut faire en C# par exemple.

En ce qui concerne EOMONTH(), cette fonction a été introduite avec SQL Server 2012 ;)

A bientôt !]]></description>
		<content:encoded><![CDATA[<p>Merci Abdallah.</p>
<p>Effectivement tu as raison; néanmoins il faut noter que ces nouvelles fonctions sont des invocations .NET, et qu&rsquo;elles sont souvent un ersatz de ce que l&rsquo;on peut faire en C# par exemple.</p>
<p>En ce qui concerne EOMONTH(), cette fonction a été introduite avec SQL Server 2012 <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>A bientôt !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par abdallah_mehdoini</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-337</link>
		<dc:creator><![CDATA[abdallah_mehdoini]]></dc:creator>
		<pubDate>Tue, 09 Feb 2016 15:25:37 +0000</pubDate>
		<guid isPermaLink="false">#comment-337</guid>
		<description><![CDATA[salut Elusket 
Merci beaucoup pour cette article qui est trés interéssant 
par comptre a partir de SQL2008R2 il existe la fonction eomonth qui retourne le dernier jour du mois
on est a maintenant prés a la version 2016 existe il des autres fonctions qui peuvent appraissent  et facilite le traitement du date 
merci]]></description>
		<content:encoded><![CDATA[<p>salut Elusket<br />
Merci beaucoup pour cette article qui est trés interéssant<br />
par comptre a partir de SQL2008R2 il existe la fonction eomonth qui retourne le dernier jour du mois<br />
on est a maintenant prés a la version 2016 existe il des autres fonctions qui peuvent appraissent  et facilite le traitement du date<br />
merci</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Générer le script de tables et des données qu&#8217;elles contiennent avec SSMS 2008 par Kidas31</title>
		<link>https://blog.developpez.com/elsuket/p7902/utilitaires/generer_le_script_de_tables_et_des_donne_2008#comment-336</link>
		<dc:creator><![CDATA[Kidas31]]></dc:creator>
		<pubDate>Thu, 19 Nov 2015 10:02:14 +0000</pubDate>
		<guid isPermaLink="false">#comment-336</guid>
		<description><![CDATA[Une question sur cette méthode : Quelle peut être la différence entre créer une base en restaurant un Backup et créer une base en exécutant un script avec les tables et les données ?]]></description>
		<content:encoded><![CDATA[<p>Une question sur cette méthode : Quelle peut être la différence entre créer une base en restaurant un Backup et créer une base en exécutant un script avec les tables et les données ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Vérifier la validité d&#8217;une adresse e-mail par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p8303/snippets/verifier_la_validite_d_une_adresse_e_mai#comment-335</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Fri, 16 Oct 2015 10:10:19 +0000</pubDate>
		<guid isPermaLink="false">#comment-335</guid>
		<description><![CDATA[Merci beaucoup Oluha, c&#039;est maintenant corrigé.]]></description>
		<content:encoded><![CDATA[<p>Merci beaucoup Oluha, c&rsquo;est maintenant corrigé.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lazywriter, Checkpoint &amp; Ghost Cleanup : Le Bon, La Brute et Le Truand de la gestion mémoire de SQL Server par abdallah_mehdoini</title>
		<link>https://blog.developpez.com/elsuket/p9529/moteur-de-base-de-donnees-sql-server/lazywriter_checkpoint_aamp_ghost_cleanup#comment-334</link>
		<dc:creator><![CDATA[abdallah_mehdoini]]></dc:creator>
		<pubDate>Sun, 13 Sep 2015 07:50:13 +0000</pubDate>
		<guid isPermaLink="false">#comment-334</guid>
		<description><![CDATA[un excellent article 

merci]]></description>
		<content:encoded><![CDATA[<p>un excellent article </p>
<p>merci</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Gestion et lecture des journaux d&#8217;événements de SQL Server par janlouk</title>
		<link>https://blog.developpez.com/elsuket/p10279/moteur-de-base-de-donnees-sql-server/gestion_lecture_journaux_sql_server#comment-333</link>
		<dc:creator><![CDATA[janlouk]]></dc:creator>
		<pubDate>Fri, 10 Jul 2015 08:06:32 +0000</pubDate>
		<guid isPermaLink="false">#comment-333</guid>
		<description><![CDATA[On dirait que pour l&#039;agent, c&#039;est 9 fichiers par defaut, est-ce correct ?
Si c&#039;est le cas, et si tu configures le schedule du job tous les jours, ce n&#039;est pas un peu peu de garder que 9 jours d&#039;historique pour l&#039;agent ?]]></description>
		<content:encoded><![CDATA[<p>On dirait que pour l&rsquo;agent, c&rsquo;est 9 fichiers par defaut, est-ce correct ?<br />
Si c&rsquo;est le cas, et si tu configures le schedule du job tous les jours, ce n&rsquo;est pas un peu peu de garder que 9 jours d&rsquo;historique pour l&rsquo;agent ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Gestion et lecture des journaux d&#8217;événements de SQL Server par janlouk</title>
		<link>https://blog.developpez.com/elsuket/p10279/moteur-de-base-de-donnees-sql-server/gestion_lecture_journaux_sql_server#comment-332</link>
		<dc:creator><![CDATA[janlouk]]></dc:creator>
		<pubDate>Fri, 10 Jul 2015 06:10:37 +0000</pubDate>
		<guid isPermaLink="false">#comment-332</guid>
		<description><![CDATA[Bonjour Nicolas,
Merci pour cet article très intéressant.

J&#039;ai lu ton poste il y a quelques jours, donc pardonne-moi stp si je fais erreur. Mais pour l&#039;errorlog de l&#039;agent, on ne sait pas configurer le nombre que l&#039;on veut ? Alors combien en garde-t-il si tu le &quot;forces&quot; tous les jours à se renouveller ? Il se base sur les 99 de l&#039;errorlog du moteur ?

Je vais mettre ça en place en tout cas, merci beaucoup

Bonne journée
Jean-Luc]]></description>
		<content:encoded><![CDATA[<p>Bonjour Nicolas,<br />
Merci pour cet article très intéressant.</p>
<p>J&rsquo;ai lu ton poste il y a quelques jours, donc pardonne-moi stp si je fais erreur. Mais pour l&rsquo;errorlog de l&rsquo;agent, on ne sait pas configurer le nombre que l&rsquo;on veut ? Alors combien en garde-t-il si tu le &laquo;&nbsp;forces&nbsp;&raquo; tous les jours à se renouveller ? Il se base sur les 99 de l&rsquo;errorlog du moteur ?</p>
<p>Je vais mettre ça en place en tout cas, merci beaucoup</p>
<p>Bonne journée<br />
Jean-Luc</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lister les triggers d&#8217;une base de données sous SQL Server 2005 et 2008 par Kropernic</title>
		<link>https://blog.developpez.com/elsuket/p8087/snippets/lister_les_triggers_d_une_base_de_donnee_2008#comment-331</link>
		<dc:creator><![CDATA[Kropernic]]></dc:creator>
		<pubDate>Wed, 06 Aug 2014 07:49:52 +0000</pubDate>
		<guid isPermaLink="false">#comment-331</guid>
		<description><![CDATA[Hello,

Juste pour signaler un mauvais nommage de colonne.  La deuxième colonne de la clause SELECT devrait se nommée estInactif au lieu de estActif ;-)]]></description>
		<content:encoded><![CDATA[<p>Hello,</p>
<p>Juste pour signaler un mauvais nommage de colonne.  La deuxième colonne de la clause SELECT devrait se nommée estInactif au lieu de estActif <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Récompense MVP : Chapitre 2014 par agemis31</title>
		<link>https://blog.developpez.com/elsuket/p12606/annonces/recompense-mvp-chapitre-20132#comment-330</link>
		<dc:creator><![CDATA[agemis31]]></dc:creator>
		<pubDate>Sat, 05 Jul 2014 21:24:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=996#comment-330</guid>
		<description><![CDATA[Ça va bien, merci ! Je t&#039;envoi un email demain pour ne pas m&#039;étaler ici et car la je suis en train de bosser :(  
Un indice ? Sur des instances SQL Serveur. :D]]></description>
		<content:encoded><![CDATA[<p>Ça va bien, merci ! Je t&rsquo;envoi un email demain pour ne pas m&rsquo;étaler ici et car la je suis en train de bosser <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /><br />
Un indice ? Sur des instances SQL Serveur. <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Récompense MVP : Chapitre 2014 par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p12606/annonces/recompense-mvp-chapitre-20132#comment-329</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Fri, 04 Jul 2014 14:42:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=996#comment-329</guid>
		<description><![CDATA[Merci Maître ;)

Je t&#039;attends au summit ;)]]></description>
		<content:encoded><![CDATA[<p>Merci Maître <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>Je t&rsquo;attends au summit <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Récompense MVP : Chapitre 2014 par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p12606/annonces/recompense-mvp-chapitre-20132#comment-328</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Fri, 04 Jul 2014 14:42:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=996#comment-328</guid>
		<description><![CDATA[Merci !

Comment vas-tu ? Cela fait bien longtemps que je n&#039;ai pas eu de tes nouvelles !]]></description>
		<content:encoded><![CDATA[<p>Merci !</p>
<p>Comment vas-tu ? Cela fait bien longtemps que je n&rsquo;ai pas eu de tes nouvelles !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Récompense MVP : Chapitre 2014 par agemis31</title>
		<link>https://blog.developpez.com/elsuket/p12606/annonces/recompense-mvp-chapitre-20132#comment-327</link>
		<dc:creator><![CDATA[agemis31]]></dc:creator>
		<pubDate>Thu, 03 Jul 2014 18:50:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=996#comment-327</guid>
		<description><![CDATA[Toutes mes félicitations Nico !]]></description>
		<content:encoded><![CDATA[<p>Toutes mes félicitations Nico !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Récompense MVP : Chapitre 2014 par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p12606/annonces/recompense-mvp-chapitre-20132#comment-326</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Tue, 01 Jul 2014 21:19:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=996#comment-326</guid>
		<description><![CDATA[Congrats Mr l&#039;expert !]]></description>
		<content:encoded><![CDATA[<p>Congrats Mr l&rsquo;expert !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur [Snippets] Générer le script de création d&#8217;une table existante par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p7134/snippets/generer_script_creation_table_existante#comment-325</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sun, 08 Jun 2014 13:51:50 +0000</pubDate>
		<guid isPermaLink="false">#comment-325</guid>
		<description><![CDATA[Bonjour litia6,

J&#039;aurai bien aimé, mais je n&#039;ai jamais fait de Sybase.
En cherchant quelques secondes, j&#039;ai trouvé ceci :

http://stackoverflow.com/questions/3720851/how-do-i-extract-sybase-12-5-table-ddl-via-sql

@++ ;)]]></description>
		<content:encoded><![CDATA[<p>Bonjour litia6,</p>
<p>J&rsquo;aurai bien aimé, mais je n&rsquo;ai jamais fait de Sybase.<br />
En cherchant quelques secondes, j&rsquo;ai trouvé ceci :</p>
<p><a href="http://stackoverflow.com/questions/3720851/how-do-i-extract-sybase-12-5-table-ddl-via-sql" rel="nofollow">http://stackoverflow.com/questions/3720851/how-do-i-extract-sybase-12-5-table-ddl-via-sql</a></p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur [Snippets] Générer le script de création d&#8217;une table existante par litia6</title>
		<link>https://blog.developpez.com/elsuket/p7134/snippets/generer_script_creation_table_existante#comment-324</link>
		<dc:creator><![CDATA[litia6]]></dc:creator>
		<pubDate>Fri, 06 Jun 2014 13:44:55 +0000</pubDate>
		<guid isPermaLink="false">#comment-324</guid>
		<description><![CDATA[Bonjour,
S&#039;il te plait ElSuket  j&#039;ai besoin de faire une récupéreration d&#039;un script de creation de table pour un user donné en sybase peux-tu me venir en aide?

Merci]]></description>
		<content:encoded><![CDATA[<p>Bonjour,<br />
S&rsquo;il te plait ElSuket  j&rsquo;ai besoin de faire une récupéreration d&rsquo;un script de creation de table pour un user donné en sybase peux-tu me venir en aide?</p>
<p>Merci</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur [Snippets] Générer le script de création d&#8217;une table existante par jeanfrauc</title>
		<link>https://blog.developpez.com/elsuket/p7134/snippets/generer_script_creation_table_existante#comment-323</link>
		<dc:creator><![CDATA[jeanfrauc]]></dc:creator>
		<pubDate>Wed, 04 Dec 2013 16:12:25 +0000</pubDate>
		<guid isPermaLink="false">#comment-323</guid>
		<description><![CDATA[Autre petite remarque par rapport aux valeurs par défaut.
La commande utilisée pour enlever les parenthèses au début et à la fin des valeurs par défaut définies dans sys.default_constraints :
REPLACE(REPLACE(DF.definition, &#039;(&#039;, &#039;&#039;), &#039;)&#039;, &#039;&#039;)
enlève aussi les parenthèses des fonctions utilisées en tant que valeur par défaut.

Par exemple, sur un champ de type datetime on peut avoir défini la fonction système getdate() comme valeur par défaut pour un champ, enregistrée en tant que (getdate()) dans sys.default_constraints. Sauf que la commande traduit ça en getdate, sans ses parenthèses.

Je pense donc qu&#039;il faudrait plutôt faire comme ceci pour enlever les parenthèses de début et de fin :
SUBSTRING(DF.definition,2,LEN(DF.definition)-2)]]></description>
		<content:encoded><![CDATA[<p>Autre petite remarque par rapport aux valeurs par défaut.<br />
La commande utilisée pour enlever les parenthèses au début et à la fin des valeurs par défaut définies dans sys.default_constraints :<br />
REPLACE(REPLACE(DF.definition, &lsquo;(&lsquo;, &nbsp;&raquo;), &lsquo;)&rsquo;, &nbsp;&raquo;)<br />
enlève aussi les parenthèses des fonctions utilisées en tant que valeur par défaut.</p>
<p>Par exemple, sur un champ de type datetime on peut avoir défini la fonction système getdate() comme valeur par défaut pour un champ, enregistrée en tant que (getdate()) dans sys.default_constraints. Sauf que la commande traduit ça en getdate, sans ses parenthèses.</p>
<p>Je pense donc qu&rsquo;il faudrait plutôt faire comme ceci pour enlever les parenthèses de début et de fin :<br />
SUBSTRING(DF.definition,2,LEN(DF.definition)-2)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur [Snippets] Générer le script de création d&#8217;une table existante par jeanfrauc</title>
		<link>https://blog.developpez.com/elsuket/p7134/snippets/generer_script_creation_table_existante#comment-322</link>
		<dc:creator><![CDATA[jeanfrauc]]></dc:creator>
		<pubDate>Wed, 04 Dec 2013 15:43:27 +0000</pubDate>
		<guid isPermaLink="false">#comment-322</guid>
		<description><![CDATA[Merci beaucoup ElSuket pour ce script qui va me rendre un grand service !
Je me permets cependant d&#039;envoyer une remarque par rapport à un problème que j&#039;ai rencontré sur ma base de données. En effet, dans le cas où une table a plusieurs index sur certains de ses champs, alors les jointures sur sys.index_columns et sys.indexes telles qu&#039;elles sont faites entraînent une répétition des champs concernés dans le script.
Ex:
CREATE TABLE SUIVICHANTIER
(
	CLE numeric(38, 0) NOT NULL (...),
	CODESAL varchar(8) (...),
	CODESAL varchar(8) (...),
	CLEEQUIPE numeric(38, 0) NULL (...),
	CLEEQUIPE numeric(38, 0) NULL (...),
	NOMBRE numeric(38, 6) NOT NULL (...),
	DATETX datetime NOT NULL (...),
	DATETX datetime NOT NULL (...),
	DATETX datetime NOT NULL (...),
	DATETX datetime NOT NULL (...),
	DATETX datetime NOT NULL (...),
	MONTANT numeric(38, 6) NOT NULL (...),
	(...)
)

Je pense qu&#039;au lieu d&#039;utiliser la commande :
  LEFT JOIN  sys.index_columns COL_INDEX -- indexes 
        ON COL_INDEX.object_id = COLONNES.object_id 
        AND COL_INDEX.column_id = COLONNES.column_id 
  LEFT JOIN  sys.indexes AS INDEXES 
        ON INDEXES.object_id = COL_INDEX.object_id 
        AND INDEXES.index_id = COL_INDEX.index_id 

il serait préférable de faire comme ceci :
  LEFT JOIN (
        SELECT COL_INDEX.object_id, COL_INDEX.column_id, INDEXES.is_primary_key, INDEXES.is_unique_constraint
        FROM sys.index_columns COL_INDEX -- indexes 
        LEFT JOIN  sys.indexes AS INDEXES 
          ON INDEXES.object_id = COL_INDEX.object_id AND INDEXES.index_id = COL_INDEX.index_id 
        WHERE (INDEXES.is_primary_key0 OR INDEXES.is_unique0)
        ) INDEXES
    ON INDEXES.object_id = COLONNES.object_id 
    AND INDEXES.column_id = COLONNES.column_id 

avec notamment l&#039;ajout d&#039;un WHERE sur les clauses is_primary_key et is_unique qui sont finalement les seules informations qui nous intéressent dans ces tables.

Jean]]></description>
		<content:encoded><![CDATA[<p>Merci beaucoup ElSuket pour ce script qui va me rendre un grand service !<br />
Je me permets cependant d&rsquo;envoyer une remarque par rapport à un problème que j&rsquo;ai rencontré sur ma base de données. En effet, dans le cas où une table a plusieurs index sur certains de ses champs, alors les jointures sur sys.index_columns et sys.indexes telles qu&rsquo;elles sont faites entraînent une répétition des champs concernés dans le script.<br />
Ex:<br />
CREATE TABLE SUIVICHANTIER<br />
(<br />
	CLE numeric(38, 0) NOT NULL (&#8230;),<br />
	CODESAL varchar(8) (&#8230;),<br />
	CODESAL varchar(8) (&#8230;),<br />
	CLEEQUIPE numeric(38, 0) NULL (&#8230;),<br />
	CLEEQUIPE numeric(38, 0) NULL (&#8230;),<br />
	NOMBRE numeric(38, 6) NOT NULL (&#8230;),<br />
	DATETX datetime NOT NULL (&#8230;),<br />
	DATETX datetime NOT NULL (&#8230;),<br />
	DATETX datetime NOT NULL (&#8230;),<br />
	DATETX datetime NOT NULL (&#8230;),<br />
	DATETX datetime NOT NULL (&#8230;),<br />
	MONTANT numeric(38, 6) NOT NULL (&#8230;),<br />
	(&#8230;)<br />
)</p>
<p>Je pense qu&rsquo;au lieu d&rsquo;utiliser la commande :<br />
  LEFT JOIN  sys.index_columns COL_INDEX &#8212; indexes<br />
        ON COL_INDEX.object_id = COLONNES.object_id<br />
        AND COL_INDEX.column_id = COLONNES.column_id<br />
  LEFT JOIN  sys.indexes AS INDEXES<br />
        ON INDEXES.object_id = COL_INDEX.object_id<br />
        AND INDEXES.index_id = COL_INDEX.index_id </p>
<p>il serait préférable de faire comme ceci :<br />
  LEFT JOIN (<br />
        SELECT COL_INDEX.object_id, COL_INDEX.column_id, INDEXES.is_primary_key, INDEXES.is_unique_constraint<br />
        FROM sys.index_columns COL_INDEX &#8212; indexes<br />
        LEFT JOIN  sys.indexes AS INDEXES<br />
          ON INDEXES.object_id = COL_INDEX.object_id AND INDEXES.index_id = COL_INDEX.index_id<br />
        WHERE (INDEXES.is_primary_key0 OR INDEXES.is_unique0)<br />
        ) INDEXES<br />
    ON INDEXES.object_id = COLONNES.object_id<br />
    AND INDEXES.column_id = COLONNES.column_id </p>
<p>avec notamment l&rsquo;ajout d&rsquo;un WHERE sur les clauses is_primary_key et is_unique qui sont finalement les seules informations qui nous intéressent dans ces tables.</p>
<p>Jean</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Déçu par IntelliSense ? Essayez Devart dbForge SQL Complete ! par Touffy33</title>
		<link>https://blog.developpez.com/elsuket/p12156/utilitaires/dbforge-sql-complete#comment-321</link>
		<dc:creator><![CDATA[Touffy33]]></dc:creator>
		<pubDate>Thu, 28 Nov 2013 10:58:45 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=764#comment-321</guid>
		<description><![CDATA[Je teste la version gratuite depuis plusieurs jours. L&#039;avantage de cette version par rapport à l&#039;intellisense de SMS, c&#039;est qu&#039;il est possible de mettre à jour le cache très facilement... 
Grand avantage lors de création de tables... et développements de requêtes ...
Pour information, je développe dans en environnement BI.]]></description>
		<content:encoded><![CDATA[<p>Je teste la version gratuite depuis plusieurs jours. L&rsquo;avantage de cette version par rapport à l&rsquo;intellisense de SMS, c&rsquo;est qu&rsquo;il est possible de mettre à jour le cache très facilement&#8230;<br />
Grand avantage lors de création de tables&#8230; et développements de requêtes &#8230;<br />
Pour information, je développe dans en environnement BI.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Déçu par IntelliSense ? Essayez Devart dbForge SQL Complete ! par Kropernic</title>
		<link>https://blog.developpez.com/elsuket/p12156/utilitaires/dbforge-sql-complete#comment-320</link>
		<dc:creator><![CDATA[Kropernic]]></dc:creator>
		<pubDate>Tue, 08 Oct 2013 08:46:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=764#comment-320</guid>
		<description><![CDATA[Je vais lui redonner une chance car l&#039;intellisense m&#039;excède particulièrement ce matin (mais je suis levé du mauvaise pied faut dire).]]></description>
		<content:encoded><![CDATA[<p>Je vais lui redonner une chance car l&rsquo;intellisense m&rsquo;excède particulièrement ce matin (mais je suis levé du mauvaise pied faut dire).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Déçu par IntelliSense ? Essayez Devart dbForge SQL Complete ! par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p12156/utilitaires/dbforge-sql-complete#comment-319</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Tue, 08 Oct 2013 02:31:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=764#comment-319</guid>
		<description><![CDATA[En ce qui concerne le problème d&#039;affichage, il est effectivement nécessaire d&#039;attendre quel le cache se rafraîchisse, ce qui se fait le plus souvent automatiquement lors du changement de contexte de base de données. Il arrive cependant qu&#039;après la création d&#039;un objet, on le ne le trouve pas dans la liste : dans ce cas un CTRL + SHIFT + R fait très bien le travail. Il faut attendre que la barre de progression qui s&#039;affiche dans la barre de statut ait disparu :)

En ce qui concerne le nombre d’objets, je travaille sur des bases de données qui comportent au moins un millier de tables, le plus grand nombre étant environ 5000. On imagine facilement le nombre de vues et procédures stockées qui en découlent, et dans ce cas j&#039;ai trouvé IntelliSense insuffisant, mais je comprends qu&#039;avec peu de tables il puisse convenir.

Il n&#039;en reste pas moins qu&#039;au niveau des fonctions natives (CHARINDEX(), SUBSTRING(), POWER(), ..., et fonctions de date surtout), la documentation dans l&#039;infobulle évite d&#039;avoir à consulter l&#039;aide en ligne. Il est possible aussi de formater la casse de fonctions, et les parenthèses sont automatiquement ajoutées. Ce n&#039;est pas grand chose, mais répété des milliers de fois, c&#039;est appréciable :)

A+]]></description>
		<content:encoded><![CDATA[<p>En ce qui concerne le problème d&rsquo;affichage, il est effectivement nécessaire d&rsquo;attendre quel le cache se rafraîchisse, ce qui se fait le plus souvent automatiquement lors du changement de contexte de base de données. Il arrive cependant qu&rsquo;après la création d&rsquo;un objet, on le ne le trouve pas dans la liste : dans ce cas un CTRL + SHIFT + R fait très bien le travail. Il faut attendre que la barre de progression qui s&rsquo;affiche dans la barre de statut ait disparu <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>En ce qui concerne le nombre d’objets, je travaille sur des bases de données qui comportent au moins un millier de tables, le plus grand nombre étant environ 5000. On imagine facilement le nombre de vues et procédures stockées qui en découlent, et dans ce cas j&rsquo;ai trouvé IntelliSense insuffisant, mais je comprends qu&rsquo;avec peu de tables il puisse convenir.</p>
<p>Il n&rsquo;en reste pas moins qu&rsquo;au niveau des fonctions natives (CHARINDEX(), SUBSTRING(), POWER(), &#8230;, et fonctions de date surtout), la documentation dans l&rsquo;infobulle évite d&rsquo;avoir à consulter l&rsquo;aide en ligne. Il est possible aussi de formater la casse de fonctions, et les parenthèses sont automatiquement ajoutées. Ce n&rsquo;est pas grand chose, mais répété des milliers de fois, c&rsquo;est appréciable <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>A+</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Déçu par IntelliSense ? Essayez Devart dbForge SQL Complete ! par Kropernic</title>
		<link>https://blog.developpez.com/elsuket/p12156/utilitaires/dbforge-sql-complete#comment-318</link>
		<dc:creator><![CDATA[Kropernic]]></dc:creator>
		<pubDate>Mon, 07 Oct 2013 07:53:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=764#comment-318</guid>
		<description><![CDATA[Comme je le disais, cela vient probablement de moi.

Là je l&#039;ai déjà désinstallée mais du peu que je l&#039;ai testée, c&#039;était assez kif-kif par rapport à l&#039;intellisense.  

Comme avec cette dernière, parfois ça s&#039;affichait, parfois ça ne s&#039;affichait pas (souvent après un rafraîchissement des données il me semble).  

Au niveau de la recherche d&#039;objets, je pense que j&#039;ai nettement moins d&#039;objets à gérer que vous, du coup ça n&#039;apporte pas vraiment quelque chose en plus que l&#039;intellisense.  Les noms de mes objets, je les connais ^^.]]></description>
		<content:encoded><![CDATA[<p>Comme je le disais, cela vient probablement de moi.</p>
<p>Là je l&rsquo;ai déjà désinstallée mais du peu que je l&rsquo;ai testée, c&rsquo;était assez kif-kif par rapport à l&rsquo;intellisense.  </p>
<p>Comme avec cette dernière, parfois ça s&rsquo;affichait, parfois ça ne s&rsquo;affichait pas (souvent après un rafraîchissement des données il me semble).  </p>
<p>Au niveau de la recherche d&rsquo;objets, je pense que j&rsquo;ai nettement moins d&rsquo;objets à gérer que vous, du coup ça n&rsquo;apporte pas vraiment quelque chose en plus que l&rsquo;intellisense.  Les noms de mes objets, je les connais ^^.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Déçu par IntelliSense ? Essayez Devart dbForge SQL Complete ! par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p12156/utilitaires/dbforge-sql-complete#comment-317</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Fri, 04 Oct 2013 09:44:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=764#comment-317</guid>
		<description><![CDATA[Bonjour,

J&#039;utilise la version gratuite tous les jours et elle est bien meilleure qu&#039;IntelliSense. La recherche des objets et l&#039;auto-complétion sont bien plus intuitives.

Pouvez-vous décrire plus en détails votre remarque ?

A+ ;)]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>J&rsquo;utilise la version gratuite tous les jours et elle est bien meilleure qu&rsquo;IntelliSense. La recherche des objets et l&rsquo;auto-complétion sont bien plus intuitives.</p>
<p>Pouvez-vous décrire plus en détails votre remarque ?</p>
<p>A+ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Déçu par IntelliSense ? Essayez Devart dbForge SQL Complete ! par Kropernic</title>
		<link>https://blog.developpez.com/elsuket/p12156/utilitaires/dbforge-sql-complete#comment-316</link>
		<dc:creator><![CDATA[Kropernic]]></dc:creator>
		<pubDate>Fri, 04 Oct 2013 08:04:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=764#comment-316</guid>
		<description><![CDATA[Bon bin je teste la version gratuite depuis 3 jours et cela vient peut-être de moi ou du fait que ce soit la version gratuite mais je rencontre exactement les mêmes inconvéniants qu&#039;avec l&#039;intellisense de SSMS.

Rien de super dérangeant en soi mais si c&#039;est pour avoir la même expérience d&#039;utilisation avec l&#039;un ou l&#039;autre, autant ne pas surcharger le système avec un tool en plus.]]></description>
		<content:encoded><![CDATA[<p>Bon bin je teste la version gratuite depuis 3 jours et cela vient peut-être de moi ou du fait que ce soit la version gratuite mais je rencontre exactement les mêmes inconvéniants qu&rsquo;avec l&rsquo;intellisense de SSMS.</p>
<p>Rien de super dérangeant en soi mais si c&rsquo;est pour avoir la même expérience d&rsquo;utilisation avec l&rsquo;un ou l&rsquo;autre, autant ne pas surcharger le système avec un tool en plus.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par shakly</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-315</link>
		<dc:creator><![CDATA[shakly]]></dc:creator>
		<pubDate>Tue, 01 Oct 2013 10:36:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-315</guid>
		<description><![CDATA[Et avec :
DT &gt; (CASE WHEN (MONTH({ fn CURDATE() }) - 3) &lt;= 0 THEN &#039;01/&#039; + CAST(12 - 3 + MONTH({ fn CURDATE() }) AS char(2)) 
                      + &#039;/&#039; + CAST(YEAR({ fn CURDATE() }) - 1 AS char(4)) ELSE &#039;01/&#039; + CAST(MONTH({ fn CURDATE() }) - 3 AS char(2)) + &#039;/&#039; + CAST(YEAR({ fn CURDATE() }) AS char(4)) END) le résultat sort en 4sec]]></description>
		<content:encoded><![CDATA[<p>Et avec :<br />
DT &gt; (CASE WHEN (MONTH({ fn CURDATE() }) &#8211; 3) &lt;= 0 THEN &#039;01/&#039; + CAST(12 &#8211; 3 + MONTH({ fn CURDATE() }) AS char(2))<br />
                      + &#039;/&#039; + CAST(YEAR({ fn CURDATE() }) &#8211; 1 AS char(4)) ELSE &#039;01/&#039; + CAST(MONTH({ fn CURDATE() }) &#8211; 3 AS char(2)) + &#039;/&#039; + CAST(YEAR({ fn CURDATE() }) AS char(4)) END) le résultat sort en 4sec</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par shakly</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-314</link>
		<dc:creator><![CDATA[shakly]]></dc:creator>
		<pubDate>Tue, 01 Oct 2013 10:34:36 +0000</pubDate>
		<guid isPermaLink="false">#comment-314</guid>
		<description><![CDATA[J&#039;ai des problèmes de performance avec les fonctions date.
Si j’exécute la même requête avec :
DT &gt; (CASE WHEN (MONTH({ fn CURDATE() }) - 3)  DATEADD(month, DATEDIFF(month, 0, GETDATE()) - 3, 0)
J&#039;ai un résultat en 1min30

Quelqu&#039;un à une idée sur la différence ?]]></description>
		<content:encoded><![CDATA[<p>J&rsquo;ai des problèmes de performance avec les fonctions date.<br />
Si j’exécute la même requête avec :<br />
DT &gt; (CASE WHEN (MONTH({ fn CURDATE() }) &#8211; 3)  DATEADD(month, DATEDIFF(month, 0, GETDATE()) &#8211; 3, 0)<br />
J&rsquo;ai un résultat en 1min30</p>
<p>Quelqu&rsquo;un à une idée sur la différence ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Récompense MVP : Chapitre 2013 par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p12106/annonces/recompense-mvp-chapitre-2013#comment-313</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Tue, 09 Jul 2013 17:43:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=726#comment-313</guid>
		<description><![CDATA[Félicitations]]></description>
		<content:encoded><![CDATA[<p>Félicitations</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Les tribulations d&#8217;un analyste programmeur en entreprise par nnovic</title>
		<link>https://blog.developpez.com/elsuket/p11863/lecture/les-tribulations-dun-analyste-programmeur-en-entreprise#comment-129</link>
		<dc:creator><![CDATA[nnovic]]></dc:creator>
		<pubDate>Wed, 27 Mar 2013 19:46:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=225#comment-129</guid>
		<description><![CDATA[Hello,
Je me suis bien marré! Bonne continuation avec CEG!D !  :)]]></description>
		<content:encoded><![CDATA[<p>Hello,<br />
Je me suis bien marré! Bonne continuation avec CEG!D !  <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lister les colonnes des index d&#8217;une base de données par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p8701/moteur-de-base-de-donnees-sql-server/indexation/lister_les_colonnes_des_index_d_une_base#comment-128</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sat, 23 Feb 2013 02:59:18 +0000</pubDate>
		<guid isPermaLink="false">#comment-128</guid>
		<description><![CDATA[Bonjour BullsEye,

Je viens de copier-coller la requête dans SSMS 2012 et de l&#039;exécuter sur AdventureWorks2012 dans une instance SQL Server 2012 SP1, et la requête fonctionne correctement. Peux-tu décrire le problème que tu as eu plus précisément ?

@++ ;)]]></description>
		<content:encoded><![CDATA[<p>Bonjour BullsEye,</p>
<p>Je viens de copier-coller la requête dans SSMS 2012 et de l&rsquo;exécuter sur AdventureWorks2012 dans une instance SQL Server 2012 SP1, et la requête fonctionne correctement. Peux-tu décrire le problème que tu as eu plus précisément ?</p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lister les colonnes des index d&#8217;une base de données par BullsEye</title>
		<link>https://blog.developpez.com/elsuket/p8701/moteur-de-base-de-donnees-sql-server/indexation/lister_les_colonnes_des_index_d_une_base#comment-127</link>
		<dc:creator><![CDATA[BullsEye]]></dc:creator>
		<pubDate>Fri, 15 Feb 2013 10:00:29 +0000</pubDate>
		<guid isPermaLink="false">#comment-127</guid>
		<description><![CDATA[C&#039;est presque bon, il y a des AS en trop dans la version 2005/2008.
Au final, ça doit donner :
SELECT    T.name AS nom_table 
    , I.type_desc AS type_index 
    , I.name AS nom_index 
    , C.name AS nom_colonne 
    , IC.key_ordinal AS position_colonne 
    , IC.is_included_column AS is_included 
FROM    sys.tables T 
INNER JOIN  sys.indexes I 
      ON T.object_id = I.object_id 
INNER JOIN  sys.index_columns IC 
      ON I.object_id = IC.object_id 
      AND I.index_id = IC.index_id 
INNER JOIN  sys.columns C 
      ON IC.object_id = C.object_id 
      AND IC.column_id = C.column_id 
--WHERE    T.name = &#039;maTable&#039; 
ORDER BY  T.name, I.name, IC.key_ordinal]]></description>
		<content:encoded><![CDATA[<p>C&rsquo;est presque bon, il y a des AS en trop dans la version 2005/2008.<br />
Au final, ça doit donner :<br />
SELECT    T.name AS nom_table<br />
    , I.type_desc AS type_index<br />
    , I.name AS nom_index<br />
    , C.name AS nom_colonne<br />
    , IC.key_ordinal AS position_colonne<br />
    , IC.is_included_column AS is_included<br />
FROM    sys.tables T<br />
INNER JOIN  sys.indexes I<br />
      ON T.object_id = I.object_id<br />
INNER JOIN  sys.index_columns IC<br />
      ON I.object_id = IC.object_id<br />
      AND I.index_id = IC.index_id<br />
INNER JOIN  sys.columns C<br />
      ON IC.object_id = C.object_id<br />
      AND IC.column_id = C.column_id<br />
&#8211;WHERE    T.name = &lsquo;maTable&rsquo;<br />
ORDER BY  T.name, I.name, IC.key_ordinal</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Cadeau de Noël de Kalen Delaney : un livre sur le verrouillage, le blocage et le versionnement de ligne par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p11606/moteur-de-base-de-donnees-sql-server/livre_verrouillage_blocage_versionning#comment-126</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Mon, 24 Dec 2012 08:36:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=177#comment-126</guid>
		<description><![CDATA[Merci Popo Noël :-)]]></description>
		<content:encoded><![CDATA[<p>Merci Popo Noël <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Comprendre les plans d&#8217;exécution et l&#8217;Optimiseur de requêtes : deux très bons ouvrages par Le blog d&#039;ElSuket</title>
		<link>https://blog.developpez.com/elsuket/p11069/moteur-de-base-de-donnees-sql-server/comprendre_plan_requete_optimiseur#comment-125</link>
		<dc:creator><![CDATA[Le blog d&#039;ElSuket]]></dc:creator>
		<pubDate>Sat, 22 Dec 2012 07:24:39 +0000</pubDate>
		<guid isPermaLink="false">#comment-125</guid>
		<description><![CDATA[[...] n&#8217;avez plus grand chose à vous mettre sous la dent après avoir lu comment fonctionne l&#8217;optimiseur de requêtes ?  On ne peut pas déclarer cela sérieusement avec la sortie récente de SQL Server 2012, et de [...]]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] n&rsquo;avez plus grand chose à vous mettre sous la dent après avoir lu comment fonctionne l&rsquo;optimiseur de requêtes ?  On ne peut pas déclarer cela sérieusement avec la sortie récente de SQL Server 2012, et de [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Que faire avec l&#8217;erreur 18486 : Login failed for user &#8216;unLogin&#8217; because the account is currently locked out par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p11379/securite/que-faire-avec-lerreur-18486-login-failed-for-user-unlogin-because-the-account-is-currently-locked-out#comment-124</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Tue, 02 Oct 2012 12:09:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/elsuket/?p=173#comment-124</guid>
		<description><![CDATA[Et si tu ne connais pas le mot de passe et que tu ne peux pas te permettre de le changer à causes des applications qui en dépendent ? :-)

Il faut utiliser dans ce cas désactiver l&#039;option CHECK_POLICY et la réactiver et le tour est joué :-)]]></description>
		<content:encoded><![CDATA[<p>Et si tu ne connais pas le mot de passe et que tu ne peux pas te permettre de le changer à causes des applications qui en dépendent ? <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
<p>Il faut utiliser dans ce cas désactiver l&rsquo;option CHECK_POLICY et la réactiver et le tour est joué <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Copier un DTS d&#8217;un serveur à un autre par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p7298/utilitaires/copier_un_dts_d_un_serveur_a_un_autre#comment-123</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sat, 22 Sep 2012 04:39:42 +0000</pubDate>
		<guid isPermaLink="false">#comment-123</guid>
		<description><![CDATA[Merci Mikedavem ;)]]></description>
		<content:encoded><![CDATA[<p>Merci Mikedavem <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Copier un DTS d&#8217;un serveur à un autre par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p7298/utilitaires/copier_un_dts_d_un_serveur_a_un_autre#comment-122</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Tue, 18 Sep 2012 13:59:26 +0000</pubDate>
		<guid isPermaLink="false">#comment-122</guid>
		<description><![CDATA[Pour compléter ton billet :

Cette méthode est intéressante pour exporter un nombre restreint de DTS. Cependant si tu dois transférer un nombre important de dts un transfert des données de la table sysdtspackages est plus rapide entre serveurs. 

++]]></description>
		<content:encoded><![CDATA[<p>Pour compléter ton billet :</p>
<p>Cette méthode est intéressante pour exporter un nombre restreint de DTS. Cependant si tu dois transférer un nombre important de dts un transfert des données de la table sysdtspackages est plus rapide entre serveurs. </p>
<p>++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Pourquoi je ne peux pas être supporter de l&#8217;utilisation des plans de maintenance en production par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p11161/agent-sql-server/supporter_plan_de_maintenance#comment-121</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Tue, 18 Sep 2012 07:47:18 +0000</pubDate>
		<guid isPermaLink="false">#comment-121</guid>
		<description><![CDATA[Aller un petit commentaire pour Mr l&#039;expert :-)

Globalement on peut utiliser les plans de maintenance sur des bases de données à taille ou nombre d&#039;objets raisonnables. Ces plans sont tout à fait adapter à bon nombre de &quot;petites&quot; instances SQL Server. 

On peut effectivement créer son propre plan de maintenance dans BIDS et du coup rendre le plan beaucoup plus générique et paramétrable. C&#039;est d&#039;ailleurs ce qu&#039;utilise un de mes clients pour ses 200 instances SQL. De plus le déploiement et la mise à jour des packages SSIS est tout à fait scriptable via l&#039;utilitaire DTEXEC et les options qui vont bien (pour l&#039;avoir déjà fait).

Tout cela pour dire que la problématique des plans de maintenance à base de package SSIS n&#039;est pas tant le déploiement mais l&#039;exhaustivité des tâches qui peuvent être réalisées. Tu l&#039;as très bien montré dans ton billet d&#039;ailleurs (où il faut utiliser des tâches de script SQL ce qui revient à faire du TSQL au final tu me diras :-) ).  Je pense que la politique de MS vis à vis des plans de maintenance consiste à couvrir une gamme de besoin large. On peut se poser la question suivante : combien d&#039;instances / de bases de données sur SQL Server nécessitent un plan de maintenance custom ? Je pense que le ratio ne doit pas être si élevé que cela ...

++]]></description>
		<content:encoded><![CDATA[<p>Aller un petit commentaire pour Mr l&rsquo;expert <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
<p>Globalement on peut utiliser les plans de maintenance sur des bases de données à taille ou nombre d&rsquo;objets raisonnables. Ces plans sont tout à fait adapter à bon nombre de &laquo;&nbsp;petites&nbsp;&raquo; instances SQL Server. </p>
<p>On peut effectivement créer son propre plan de maintenance dans BIDS et du coup rendre le plan beaucoup plus générique et paramétrable. C&rsquo;est d&rsquo;ailleurs ce qu&rsquo;utilise un de mes clients pour ses 200 instances SQL. De plus le déploiement et la mise à jour des packages SSIS est tout à fait scriptable via l&rsquo;utilitaire DTEXEC et les options qui vont bien (pour l&rsquo;avoir déjà fait).</p>
<p>Tout cela pour dire que la problématique des plans de maintenance à base de package SSIS n&rsquo;est pas tant le déploiement mais l&rsquo;exhaustivité des tâches qui peuvent être réalisées. Tu l&rsquo;as très bien montré dans ton billet d&rsquo;ailleurs (où il faut utiliser des tâches de script SQL ce qui revient à faire du TSQL au final tu me diras <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> ).  Je pense que la politique de MS vis à vis des plans de maintenance consiste à couvrir une gamme de besoin large. On peut se poser la question suivante : combien d&rsquo;instances / de bases de données sur SQL Server nécessitent un plan de maintenance custom ? Je pense que le ratio ne doit pas être si élevé que cela &#8230;</p>
<p>++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Pourquoi je ne peux pas être supporter de l&#8217;utilisation des plans de maintenance en production par djeepy1</title>
		<link>https://blog.developpez.com/elsuket/p11161/agent-sql-server/supporter_plan_de_maintenance#comment-22</link>
		<dc:creator><![CDATA[djeepy1]]></dc:creator>
		<pubDate>Sat, 11 Aug 2012 14:38:24 +0000</pubDate>
		<guid isPermaLink="false">#comment-22</guid>
		<description><![CDATA[Tout à fait d&#039;accord.&lt;br /&gt;
En production, mes &quot;plans de maintenance&quot; sont en FULL T-SQL.]]></description>
		<content:encoded><![CDATA[<p>Tout à fait d&rsquo;accord.<br />
En production, mes &laquo;&nbsp;plans de maintenance&nbsp;&raquo; sont en FULL T-SQL.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Attention aux types de données money et smallmoney ! par djeepy1</title>
		<link>https://blog.developpez.com/elsuket/p11175/moteur-de-base-de-donnees-sql-server/attention_money_smallmoney#comment-12</link>
		<dc:creator><![CDATA[djeepy1]]></dc:creator>
		<pubDate>Sat, 11 Aug 2012 14:37:39 +0000</pubDate>
		<guid isPermaLink="false">#comment-12</guid>
		<description><![CDATA[Money a une précision de 4 chiffres après la virgule : http://msdn.microsoft.com/en-us/library/ms179882.aspx&lt;br /&gt;
&lt;br /&gt;
La première division donne 0,294985... qui, étant de type money devient 0,2949.&lt;br /&gt;
0,2949 * 1000 = 2949&lt;br /&gt;
&lt;br /&gt;
Le compte est bon.&lt;br /&gt;
&lt;br /&gt;
C&#039;est d&#039;ailleurs comme cela que compte les comptables. En BI, l&#039;arrondi intermédiaire est souvent un pré-requis&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Money a une précision de 4 chiffres après la virgule : <a href="http://msdn.microsoft.com/en-us/library/ms179882.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms179882.aspx</a></p>
<p>La première division donne 0,294985&#8230; qui, étant de type money devient 0,2949.<br />
0,2949 * 1000 = 2949</p>
<p>Le compte est bon.</p>
<p>C&rsquo;est d&rsquo;ailleurs comme cela que compte les comptables. En BI, l&rsquo;arrondi intermédiaire est souvent un pré-requis</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Pourquoi je ne peux pas être supporter de l&#8217;utilisation des plans de maintenance en production par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p11161/agent-sql-server/supporter_plan_de_maintenance#comment-21</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Mon, 30 Jul 2012 14:23:27 +0000</pubDate>
		<guid isPermaLink="false">#comment-21</guid>
		<description><![CDATA[On peut tout à faire faire exécuter un package SSIS par un job sans pour autant que cela constitue un plan de maintenance de base de données, puisque toute les tâches SSIS ne sont pas des tâches de maintenance de base de données.&lt;br /&gt;
&lt;br /&gt;
Il est en effet très pratique de pouvoir scripter un job : on peut ainsi déployer le même job sur un groupe de serveurs avec la fonctionnalité Central Management Server et ses groupes de serveurs.&lt;br /&gt;
De la même façon, on peut exécuter un job sur un groupe de serveurs en utilisant l&#039;instruction EXEC sp_start_job @job_name = &#039;monJob&#039;.&lt;br /&gt;
La génération du script du job donne également sa planification : il s&#039;agit de l&#039;appel à la procédure stockée  msdb.dbo.sp_add_jobschedule; cela étant, rien n&#039;oblige à planifier un job : si le job que vous avez scripté n&#039;est pas planifié, vous ne trouverez pas l&#039;appel à cette procédure stockée, pas plus que vous ne trouverez de planifications pour celui-ci par un clic-droit sur celui-ci &gt; Propriétés &gt; Planification.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le billet suivant une requête qui permet de consulter l&#039;historique d&#039;exécution des jobs :&lt;br /&gt;
http://blog.developpez.com/elsuket/p7895/agent-sql-server/voir-l-historique-d-execution-des-jobs-p/&lt;br /&gt;
&lt;br /&gt;
Dans ce billet que je viens de publier, il y a une requête qui permet d&#039;obtenir un aperçu complet de tous les jobs d&#039;une instance SQL Server : http://blog.developpez.com/elsuket/p11193/agent-sql-server/une-requete-pour-lister-tous-les-travaux/&lt;br /&gt;
&lt;br /&gt;
@++ ;)]]></description>
		<content:encoded><![CDATA[<p>On peut tout à faire faire exécuter un package SSIS par un job sans pour autant que cela constitue un plan de maintenance de base de données, puisque toute les tâches SSIS ne sont pas des tâches de maintenance de base de données.</p>
<p>Il est en effet très pratique de pouvoir scripter un job : on peut ainsi déployer le même job sur un groupe de serveurs avec la fonctionnalité Central Management Server et ses groupes de serveurs.<br />
De la même façon, on peut exécuter un job sur un groupe de serveurs en utilisant l&rsquo;instruction EXEC sp_start_job @job_name = &lsquo;monJob&rsquo;.<br />
La génération du script du job donne également sa planification : il s&rsquo;agit de l&rsquo;appel à la procédure stockée  msdb.dbo.sp_add_jobschedule; cela étant, rien n&rsquo;oblige à planifier un job : si le job que vous avez scripté n&rsquo;est pas planifié, vous ne trouverez pas l&rsquo;appel à cette procédure stockée, pas plus que vous ne trouverez de planifications pour celui-ci par un clic-droit sur celui-ci > Propriétés > Planification.</p>
<p>Vous trouverez dans le billet suivant une requête qui permet de consulter l&rsquo;historique d&rsquo;exécution des jobs :<br />
<a href="http://blog.developpez.com/elsuket/p7895/agent-sql-server/voir-l-historique-d-execution-des-jobs-p/" rel="nofollow">http://blog.developpez.com/elsuket/p7895/agent-sql-server/voir-l-historique-d-execution-des-jobs-p/</a></p>
<p>Dans ce billet que je viens de publier, il y a une requête qui permet d&rsquo;obtenir un aperçu complet de tous les jobs d&rsquo;une instance SQL Server : <a href="http://blog.developpez.com/elsuket/p11193/agent-sql-server/une-requete-pour-lister-tous-les-travaux/" rel="nofollow">http://blog.developpez.com/elsuket/p11193/agent-sql-server/une-requete-pour-lister-tous-les-travaux/</a></p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Pourquoi je ne peux pas être supporter de l&#8217;utilisation des plans de maintenance en production par Kropernic</title>
		<link>https://blog.developpez.com/elsuket/p11161/agent-sql-server/supporter_plan_de_maintenance#comment-20</link>
		<dc:creator><![CDATA[Kropernic]]></dc:creator>
		<pubDate>Mon, 30 Jul 2012 10:43:40 +0000</pubDate>
		<guid isPermaLink="false">#comment-20</guid>
		<description><![CDATA[Donc si je comprends bien, à partir du moment où crée un job sql qui exécute un package SSIS, on a alors un plan de maintenance.  &lt;br /&gt;
&lt;br /&gt;
Du coup, je réalise que puisque vous parlez de portabilité, c&#039;est qu&#039;il doit être possible de scripter un job.  Et effectivement, chose que je n&#039;avais jamais remarquée jusqu&#039;ici, il y a bien l&#039;option Script Job As lorsqu&#039;on fait un clic droit.  Effectivement il faut changer le nom du serveur mais un find/replace va assez vite mais je conviens que ce n&#039;est pas pratique.&lt;br /&gt;
&lt;br /&gt;
Par contre, par curiosité et pour mon information, je m&#039;interroge car je ne trouve nulle part la mention de quand doit être exécuté ce job.  Le fait d&#039;exécuter ce script nécessiterait donc de devoir encore paramétré tout ce qui est &quot;scheduling&quot; (je ne trouve pas le mot français^^) du job ?&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer à tester la méthode de maintenance fournie par sqlpro dans un ces articles qui utilise une table des tâches de maintenance à effectuer sur chaque DB.  Cela m&#039;avait pas mal du tout (venant de lui, le contraire eut été étonnant) mais je n&#039;ai pas encore osé passer cela en production... Etant DBA amateur, je joue encore un peu à l&#039;apprenti sorcier et chaque changement sur le serveur de production provoque pas mal de stress ^^&lt;br /&gt;
&lt;br /&gt;
Encore merci pour l&#039;article.&lt;br /&gt;
&lt;br /&gt;
Kropernic.]]></description>
		<content:encoded><![CDATA[<p>Donc si je comprends bien, à partir du moment où crée un job sql qui exécute un package SSIS, on a alors un plan de maintenance.  </p>
<p>Du coup, je réalise que puisque vous parlez de portabilité, c&rsquo;est qu&rsquo;il doit être possible de scripter un job.  Et effectivement, chose que je n&rsquo;avais jamais remarquée jusqu&rsquo;ici, il y a bien l&rsquo;option Script Job As lorsqu&rsquo;on fait un clic droit.  Effectivement il faut changer le nom du serveur mais un find/replace va assez vite mais je conviens que ce n&rsquo;est pas pratique.</p>
<p>Par contre, par curiosité et pour mon information, je m&rsquo;interroge car je ne trouve nulle part la mention de quand doit être exécuté ce job.  Le fait d&rsquo;exécuter ce script nécessiterait donc de devoir encore paramétré tout ce qui est &laquo;&nbsp;scheduling&nbsp;&raquo; (je ne trouve pas le mot français^^) du job ?</p>
<p>Je vais donc continuer à tester la méthode de maintenance fournie par sqlpro dans un ces articles qui utilise une table des tâches de maintenance à effectuer sur chaque DB.  Cela m&rsquo;avait pas mal du tout (venant de lui, le contraire eut été étonnant) mais je n&rsquo;ai pas encore osé passer cela en production&#8230; Etant DBA amateur, je joue encore un peu à l&rsquo;apprenti sorcier et chaque changement sur le serveur de production provoque pas mal de stress ^^</p>
<p>Encore merci pour l&rsquo;article.</p>
<p>Kropernic.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Pourquoi je ne peux pas être supporter de l&#8217;utilisation des plans de maintenance en production par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p11161/agent-sql-server/supporter_plan_de_maintenance#comment-19</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sat, 28 Jul 2012 07:13:34 +0000</pubDate>
		<guid isPermaLink="false">#comment-19</guid>
		<description><![CDATA[Merci à tous les deux de vos commentaires.&lt;br /&gt;
&lt;br /&gt;
Je ne savais pas que les plans de maintenance sont disponibles dans BIDS.&lt;br /&gt;
En fait un plan de maintenance, c&#039;est la &quot;liaison&quot; entre un travail de l&#039;Agent SQL Server et une tâche SQL Server Integration Services; donc effectivement il doit être possible de spécifier des plans de maintenance dans BIDS.&lt;br /&gt;
&lt;br /&gt;
Il n&#039;est pas absolument nécessaire de remplacer les plans de maintenance par l&#039;exécution d&#039;une procédure stockée qui fait plus ou moins le même travail. Comme bien souvent, cela dépend de la quantité de données que vous ou votre employeur peut se permettre de perdre en cas de crash : si vous pouvez dire que perdre une journée de données n&#039;est pas catastrophique pour le business, alors un plan de maintenance pour les sauvegardes peut tout à fait convenir.&lt;br /&gt;
Si en revanche vous ne pouvez pas vous permettre de perdre une minute de changements de données, et que vous avez besoin d&#039;être alerté immédiatement lorsqu&#039;une sauvegarde a échoué, je ne trouve pas qu&#039;un plan de maintenance soit ce qu&#039;il y a de plus adapté.&lt;br /&gt;
&lt;br /&gt;
Finalement, les plans de maintenance ne sont pas catastrophiques pour les sauvegardes de base de données; ils le sont bien plus en ce qui concerne la maintenance des statistiques et des index, ou pire, le rétrécissement des bases de données, qui, je pense, ne devraient tout simplement pas exister.]]></description>
		<content:encoded><![CDATA[<p>Merci à tous les deux de vos commentaires.</p>
<p>Je ne savais pas que les plans de maintenance sont disponibles dans BIDS.<br />
En fait un plan de maintenance, c&rsquo;est la &laquo;&nbsp;liaison&nbsp;&raquo; entre un travail de l&rsquo;Agent SQL Server et une tâche SQL Server Integration Services; donc effectivement il doit être possible de spécifier des plans de maintenance dans BIDS.</p>
<p>Il n&rsquo;est pas absolument nécessaire de remplacer les plans de maintenance par l&rsquo;exécution d&rsquo;une procédure stockée qui fait plus ou moins le même travail. Comme bien souvent, cela dépend de la quantité de données que vous ou votre employeur peut se permettre de perdre en cas de crash : si vous pouvez dire que perdre une journée de données n&rsquo;est pas catastrophique pour le business, alors un plan de maintenance pour les sauvegardes peut tout à fait convenir.<br />
Si en revanche vous ne pouvez pas vous permettre de perdre une minute de changements de données, et que vous avez besoin d&rsquo;être alerté immédiatement lorsqu&rsquo;une sauvegarde a échoué, je ne trouve pas qu&rsquo;un plan de maintenance soit ce qu&rsquo;il y a de plus adapté.</p>
<p>Finalement, les plans de maintenance ne sont pas catastrophiques pour les sauvegardes de base de données; ils le sont bien plus en ce qui concerne la maintenance des statistiques et des index, ou pire, le rétrécissement des bases de données, qui, je pense, ne devraient tout simplement pas exister.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Attention aux types de données money et smallmoney ! par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p11175/moteur-de-base-de-donnees-sql-server/attention_money_smallmoney#comment-11</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sat, 28 Jul 2012 07:04:58 +0000</pubDate>
		<guid isPermaLink="false">#comment-11</guid>
		<description><![CDATA[Bonjour  Kropernic,&lt;br /&gt;
&lt;br /&gt;
Je pense que la raison est un défaut de précision qui n&#039;est pas signalé à l&#039;affectation et lors des calculs.&lt;br /&gt;
Je ne m&#039;explique pas que cela n&#039;ait pas été corrigé; aussi le type decimal ou numeric convient tout à fait.&lt;br /&gt;
&lt;br /&gt;
Je ne trouve pas problématique que la division d&#039;un entier par un entier produise un entier.&lt;br /&gt;
C&#039;est le cas dans de nombreux autres langages; je suppose que c&#039;est un standard :)&lt;br /&gt;
&lt;br /&gt;
@++ ;)]]></description>
		<content:encoded><![CDATA[<p>Bonjour  Kropernic,</p>
<p>Je pense que la raison est un défaut de précision qui n&rsquo;est pas signalé à l&rsquo;affectation et lors des calculs.<br />
Je ne m&rsquo;explique pas que cela n&rsquo;ait pas été corrigé; aussi le type decimal ou numeric convient tout à fait.</p>
<p>Je ne trouve pas problématique que la division d&rsquo;un entier par un entier produise un entier.<br />
C&rsquo;est le cas dans de nombreux autres langages; je suppose que c&rsquo;est un standard <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Pourquoi je ne peux pas être supporter de l&#8217;utilisation des plans de maintenance en production par Kropernic</title>
		<link>https://blog.developpez.com/elsuket/p11161/agent-sql-server/supporter_plan_de_maintenance#comment-18</link>
		<dc:creator><![CDATA[Kropernic]]></dc:creator>
		<pubDate>Thu, 26 Jul 2012 08:11:10 +0000</pubDate>
		<guid isPermaLink="false">#comment-18</guid>
		<description><![CDATA[Si j&#039;ai bien compris, vous parlez des tâches toutes faites et prêtes à l&#039;emploi qui se trouve dans le Business Intelligence Development Studio.  Est-ce exact ?&lt;br /&gt;
&lt;br /&gt;
Je voudrais être sûr car j&#039;ai mis en place un backup des DB de prod à l&#039;aide de ces tâches (n&#039;y connaissant rien, j&#039;ai trouvé ça pratique et bien foutu :-/) et je voulais savoir si je pouvais laisser cela en place ou bien s&#039;il fallait que j&#039;écrive les scripts à la main ?]]></description>
		<content:encoded><![CDATA[<p>Si j&rsquo;ai bien compris, vous parlez des tâches toutes faites et prêtes à l&rsquo;emploi qui se trouve dans le Business Intelligence Development Studio.  Est-ce exact ?</p>
<p>Je voudrais être sûr car j&rsquo;ai mis en place un backup des DB de prod à l&rsquo;aide de ces tâches (n&rsquo;y connaissant rien, j&rsquo;ai trouvé ça pratique et bien foutu :-/) et je voulais savoir si je pouvais laisser cela en place ou bien s&rsquo;il fallait que j&rsquo;écrive les scripts à la main ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Attention aux types de données money et smallmoney ! par Kropernic</title>
		<link>https://blog.developpez.com/elsuket/p11175/moteur-de-base-de-donnees-sql-server/attention_money_smallmoney#comment-10</link>
		<dc:creator><![CDATA[Kropernic]]></dc:creator>
		<pubDate>Thu, 26 Jul 2012 08:03:48 +0000</pubDate>
		<guid isPermaLink="false">#comment-10</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
&lt;br /&gt;
Merci pour l&#039;info.  Par contre, pourquoi cela produit-il ce résultat ?&lt;br /&gt;
&lt;br /&gt;
Ne serait-ce pas pour le même genre de raison qu&#039;un entier divisé par un entier donne un entier comme résultat ?]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Merci pour l&rsquo;info.  Par contre, pourquoi cela produit-il ce résultat ?</p>
<p>Ne serait-ce pas pour le même genre de raison qu&rsquo;un entier divisé par un entier donne un entier comme résultat ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Pourquoi je ne peux pas être supporter de l&#8217;utilisation des plans de maintenance en production par 7gyY9w1ZY6ySRgPeaefZ</title>
		<link>https://blog.developpez.com/elsuket/p11161/agent-sql-server/supporter_plan_de_maintenance#comment-17</link>
		<dc:creator><![CDATA[7gyY9w1ZY6ySRgPeaefZ]]></dc:creator>
		<pubDate>Wed, 18 Jul 2012 18:51:04 +0000</pubDate>
		<guid isPermaLink="false">#comment-17</guid>
		<description><![CDATA[J&#039;abonde totalement en ton sens !]]></description>
		<content:encoded><![CDATA[<p>J&rsquo;abonde totalement en ton sens !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Nomination MVP : Chapitre 2012 par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p11133/annonces/nomination_mvp_chapitre_2012#comment-117</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Sun, 15 Jul 2012 17:22:10 +0000</pubDate>
		<guid isPermaLink="false">#comment-117</guid>
		<description><![CDATA[Félicitations Mr l&#039;expert !!!]]></description>
		<content:encoded><![CDATA[<p>Félicitations Mr l&rsquo;expert !!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Une procédure stockée système pour monitorer les verrous par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p11135/moteur-de-base-de-donnees-sql-server/procedure_monitor_locks#comment-91</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Fri, 06 Jul 2012 05:13:34 +0000</pubDate>
		<guid isPermaLink="false">#comment-91</guid>
		<description><![CDATA[Merci zinzineti ! voilà qui est corrigé ;)]]></description>
		<content:encoded><![CDATA[<p>Merci zinzineti ! voilà qui est corrigé <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Une procédure stockée système pour monitorer les verrous par zinzineti</title>
		<link>https://blog.developpez.com/elsuket/p11135/moteur-de-base-de-donnees-sql-server/procedure_monitor_locks#comment-90</link>
		<dc:creator><![CDATA[zinzineti]]></dc:creator>
		<pubDate>Thu, 05 Jul 2012 13:26:45 +0000</pubDate>
		<guid isPermaLink="false">#comment-90</guid>
		<description><![CDATA[Plutôt :&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
EXEC sp__processes_locks&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Plutôt :</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
EXEC sp__processes_locks&amp;nbsp;&lt;br /&gt;</div></td></tr></tbody></table></div>
<p></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lister toutes les instances de SQL Server installées sur un serveur (ou une machine virtuelle) par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p11114/moteur-de-base-de-donnees-sql-server/lister_instance_sql_server#comment-89</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Mon, 25 Jun 2012 15:35:35 +0000</pubDate>
		<guid isPermaLink="false">#comment-89</guid>
		<description><![CDATA[Merci David ;)]]></description>
		<content:encoded><![CDATA[<p>Merci David <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lister toutes les instances de SQL Server installées sur un serveur (ou une machine virtuelle) par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p11114/moteur-de-base-de-donnees-sql-server/lister_instance_sql_server#comment-88</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Mon, 25 Jun 2012 12:23:25 +0000</pubDate>
		<guid isPermaLink="false">#comment-88</guid>
		<description><![CDATA[Une variante également pour lister l&#039;ensemble des instances SQL Server sur tout un domaine &lt;br /&gt;
&lt;br /&gt;
--&gt; http://blog.developpez.com/mikedavem/p11091/sql-server-2000/scanner-le-reseau-pour-trouver-les-liste&lt;br /&gt;
&lt;br /&gt;
++ :-)]]></description>
		<content:encoded><![CDATA[<p>Une variante également pour lister l&rsquo;ensemble des instances SQL Server sur tout un domaine </p>
<p>&#8211;> <a href="http://blog.developpez.com/mikedavem/p11091/sql-server-2000/scanner-le-reseau-pour-trouver-les-liste" rel="nofollow">http://blog.developpez.com/mikedavem/p11091/sql-server-2000/scanner-le-reseau-pour-trouver-les-liste</a></p>
<p>++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lister toutes les instances de SQL Server installées sur un serveur (ou une machine virtuelle) par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p11114/moteur-de-base-de-donnees-sql-server/lister_instance_sql_server#comment-87</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Mon, 25 Jun 2012 12:21:50 +0000</pubDate>
		<guid isPermaLink="false">#comment-87</guid>
		<description><![CDATA[Une variante en powershell (que je trouve plus simple personnellement). Bien entendu il faut posséder les droits nécessaires pour pouvoir utiliser les wmi mais au final cela permet d&#039;utiliser quelque chose de documenté, ce qui n&#039;est pas le cas de la procédure système xp_regenumvalues&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
#Clear console display&lt;br /&gt;
cls;&lt;br /&gt;
&lt;br /&gt;
# Current hostname&lt;br /&gt;
$computer = hostname;&lt;br /&gt;
&lt;br /&gt;
Write-Host &quot;Discover SQL Server instances on the local machine&quot; -foreground red&lt;br /&gt;
Start-Sleep -s 2&lt;br /&gt;
Write-Host &quot;...&quot;&lt;br /&gt;
Start-Sleep -s 1&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Discover SQL Server instances&lt;br /&gt;
try &lt;br /&gt;
{ &lt;br /&gt;
  $sql_server = get-wmiobject -class win32_service -computer $computer -EA STOP&lt;br /&gt;
&lt;br /&gt;
  $instances = $sql_server &#124; where { $_.name -like &#039;MSSQL$*&#039; -or $_.name -eq &#039;MSSQLSERVER&#039; } &#124; Select -Property Name &lt;br /&gt;
  &lt;br /&gt;
  Foreach ($instance_name in $instances) &lt;br /&gt;
  { &lt;br /&gt;
   $list_instance += &quot; &quot; + $instance_name.Name; &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  If ($instances.Count -gt 0) &lt;br /&gt;
  { &lt;br /&gt;
   $line = $computer,$list_instance -join &quot;&quot;; &lt;br /&gt;
   # WRITE TO CONSOLE &lt;br /&gt;
   Write-Host --&gt; $line.replace(&quot; &quot;, &quot;,&quot;); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
catch &lt;br /&gt;
{ &lt;br /&gt;
  Write-host $_&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
Write-Host &quot;&quot;&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
++ ;-)]]></description>
		<content:encoded><![CDATA[<p>Une variante en powershell (que je trouve plus simple personnellement). Bien entendu il faut posséder les droits nécessaires pour pouvoir utiliser les wmi mais au final cela permet d&rsquo;utiliser quelque chose de documenté, ce qui n&rsquo;est pas le cas de la procédure système xp_regenumvalues</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
#Clear console display<br />
cls;</p>
<p># Current hostname<br />
$computer = hostname;</p>
<p>Write-Host &laquo;&nbsp;Discover SQL Server instances on the local machine&nbsp;&raquo; -foreground red<br />
Start-Sleep -s 2<br />
Write-Host &laquo;&nbsp;&#8230;&nbsp;&raquo;<br />
Start-Sleep -s 1<br />
Write-Host &laquo;&nbsp;&nbsp;&raquo;<br />
Write-Host &laquo;&nbsp;&nbsp;&raquo;</p>
<p>
# Discover SQL Server instances<br />
try <br />
{ <br />
  $sql_server = get-wmiobject -class win32_service -computer $computer -EA STOP</p>
<p>  $instances = $sql_server | where { $_.name -like &lsquo;MSSQL$*&rsquo; -or $_.name -eq &lsquo;MSSQLSERVER&rsquo; } | Select -Property Name </p>
<p>  Foreach ($instance_name in $instances) <br />
  { <br />
   $list_instance += &nbsp;&raquo; &nbsp;&raquo; + $instance_name.Name; <br />
  }</p>
<p>
  If ($instances.Count -gt 0) <br />
  { <br />
   $line = $computer,$list_instance -join &laquo;&nbsp;&nbsp;&raquo;; <br />
   # WRITE TO CONSOLE <br />
   Write-Host &#8211;> $line.replace(&nbsp;&raquo; &laquo;&nbsp;, &laquo;&nbsp;,&nbsp;&raquo;); <br />
  } <br />
} <br />
catch <br />
{ <br />
  Write-host $_<br />
}</p>
<p>Write-Host &laquo;&nbsp;&nbsp;&raquo;<br />
Write-Host &laquo;&nbsp;&nbsp;&raquo;<br />
Write-Host &laquo;&nbsp;&nbsp;&raquo;<br />
Write-Host &laquo;&nbsp;&nbsp;&raquo;<br />
Write-Host &laquo;&nbsp;&nbsp;&raquo;<br />
Write-Host &laquo;&nbsp;&nbsp;&raquo;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Etude de table : retourner les caractéristiques des statistiques et index d&#8217;une table (ou vue indexée) par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p11051/moteur-de-base-de-donnees-sql-server/indexation/etude_index_stat_table#comment-86</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sat, 02 Jun 2012 05:52:02 +0000</pubDate>
		<guid isPermaLink="false">#comment-86</guid>
		<description><![CDATA[Effectivement, merci de l&#039;avoir relevé :)&lt;br /&gt;
En fait l&#039;erreur est levée par le script, et pas par l&#039;appel de la DMF sys.dm_db_index_physical_stats().&lt;br /&gt;
Les commentaires sont donc incorrects, et je les ai enlevés :)&lt;br /&gt;
&lt;br /&gt;
Ce script n&#039;est destiné qu&#039;à l&#039;étude manuelle d&#039;une table ou vue indexée en particulier.&lt;br /&gt;
Normalement il vient en complément de jobs collectant la fragmentation des index d&#039;une base de données et l&#039;éliminant, et d&#039;un job maintenant les statistiques.&lt;br /&gt;
&lt;br /&gt;
Est-ce à dire que vous seriez intéressé par un script / une procédure stockée faisant ce que fait ce script mais pour toute une base de données ?&lt;br /&gt;
Notez que suivant le volume de la base de données, le temps d&#039;exécution d&#039;un tel script peut être long et impacter les performances de la base de données auditée.]]></description>
		<content:encoded><![CDATA[<p>Effectivement, merci de l&rsquo;avoir relevé <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /><br />
En fait l&rsquo;erreur est levée par le script, et pas par l&rsquo;appel de la DMF sys.dm_db_index_physical_stats().<br />
Les commentaires sont donc incorrects, et je les ai enlevés <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Ce script n&rsquo;est destiné qu&rsquo;à l&rsquo;étude manuelle d&rsquo;une table ou vue indexée en particulier.<br />
Normalement il vient en complément de jobs collectant la fragmentation des index d&rsquo;une base de données et l&rsquo;éliminant, et d&rsquo;un job maintenant les statistiques.</p>
<p>Est-ce à dire que vous seriez intéressé par un script / une procédure stockée faisant ce que fait ce script mais pour toute une base de données ?<br />
Notez que suivant le volume de la base de données, le temps d&rsquo;exécution d&rsquo;un tel script peut être long et impacter les performances de la base de données auditée.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Etude de table : retourner les caractéristiques des statistiques et index d&#8217;une table (ou vue indexée) par Donpi</title>
		<link>https://blog.developpez.com/elsuket/p11051/moteur-de-base-de-donnees-sql-server/indexation/etude_index_stat_table#comment-85</link>
		<dc:creator><![CDATA[Donpi]]></dc:creator>
		<pubDate>Thu, 31 May 2012 09:56:01 +0000</pubDate>
		<guid isPermaLink="false">#comment-85</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
Il y a un petit bug vers la ligne 10 ou 11&lt;br /&gt;
&lt;br /&gt;
, @table_or_indexed_view_name sysname = NULL-- NULL étudie toutes les tables &lt;br /&gt;
&lt;br /&gt;
Avec la valeur NULL on a un message qui dit que NULL n&#039;existe pas.&lt;br /&gt;
&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Bonjour,<br />
Il y a un petit bug vers la ligne 10 ou 11</p>
<p>, @table_or_indexed_view_name sysname = NULL&#8211; NULL étudie toutes les tables </p>
<p>Avec la valeur NULL on a un message qui dit que NULL n&rsquo;existe pas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Searchable Arguments, ou S-ARGs, ou comment optimiser la clause WHERE d&#8217;une requête par sqlpro</title>
		<link>https://blog.developpez.com/elsuket/p6886/moteur-de-base-de-donnees-sql-server/sql_searchable_arguments_ou_s_args#comment-50</link>
		<dc:creator><![CDATA[sqlpro]]></dc:creator>
		<pubDate>Wed, 09 May 2012 20:31:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-50</guid>
		<description><![CDATA[Tiens j&#039;avais même pas vu que tu avais écrit cela. J&#039;ai complété... Et il faut que j&#039;étende encore mon article :&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Tiens j&rsquo;avais même pas vu que tu avais écrit cela. J&rsquo;ai complété&#8230; Et il faut que j&rsquo;étende encore mon article :</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Consulter ou télécharger les documentations de SQL Server par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p10996/utilitaires/telecharger_documentation_sql_server#comment-108</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Tue, 01 May 2012 05:06:07 +0000</pubDate>
		<guid isPermaLink="false">#comment-108</guid>
		<description><![CDATA[Il me semble pourtant bien avoir vu le problème dont vous parlez, mais quand je colle votre lien dans mon navigateur (qui est en Français), j&#039;obtiens bien ceci :&lt;br /&gt;
&lt;br /&gt;
http://img842.imageshack.us/img842/1659/captureaide.png&lt;br /&gt;
&lt;br /&gt;
En revanche lorsque j&#039;ai tenté de passer en Français la documentation de SQL Server 2012 dans mon entreprise, où j&#039;ai un navigateur en Anglais, j&#039;ai obtenu le même problème que vous ...&lt;br /&gt;
&lt;br /&gt;
Je suppose que la boulette sera bientôt corrigée par Microsoft ;)]]></description>
		<content:encoded><![CDATA[<p>Il me semble pourtant bien avoir vu le problème dont vous parlez, mais quand je colle votre lien dans mon navigateur (qui est en Français), j&rsquo;obtiens bien ceci :</p>
<p><a href="http://img842.imageshack.us/img842/1659/captureaide.png" rel="nofollow">http://img842.imageshack.us/img842/1659/captureaide.png</a></p>
<p>En revanche lorsque j&rsquo;ai tenté de passer en Français la documentation de SQL Server 2012 dans mon entreprise, où j&rsquo;ai un navigateur en Anglais, j&rsquo;ai obtenu le même problème que vous &#8230;</p>
<p>Je suppose que la boulette sera bientôt corrigée par Microsoft <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Consulter ou télécharger les documentations de SQL Server par alassanediakite</title>
		<link>https://blog.developpez.com/elsuket/p10996/utilitaires/telecharger_documentation_sql_server#comment-107</link>
		<dc:creator><![CDATA[alassanediakite]]></dc:creator>
		<pubDate>Mon, 30 Apr 2012 18:59:17 +0000</pubDate>
		<guid isPermaLink="false">#comment-107</guid>
		<description><![CDATA[Bonjour et 1000 excuses.&lt;br /&gt;
J&#039;ai pris le lien de la version 2012. Il vous suffit de copier/coller le lien que je donne!&lt;br /&gt;
La faute n&#039;est nullement de vous!!! Seulement je me disais que QUELQU&#039;UN peut signaler cette erreur.]]></description>
		<content:encoded><![CDATA[<p>Bonjour et 1000 excuses.<br />
J&rsquo;ai pris le lien de la version 2012. Il vous suffit de copier/coller le lien que je donne!<br />
La faute n&rsquo;est nullement de vous!!! Seulement je me disais que QUELQU&rsquo;UN peut signaler cette erreur.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Consulter ou télécharger les documentations de SQL Server par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p10996/utilitaires/telecharger_documentation_sql_server#comment-106</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Mon, 30 Apr 2012 18:14:36 +0000</pubDate>
		<guid isPermaLink="false">#comment-106</guid>
		<description><![CDATA[Un petit Bonjour ... non ?&lt;br /&gt;
&lt;br /&gt;
En précisant quel lien de quelle version ne marche pas, ça peut aider, parce que je viens de tester tous les liens et les pages sont bien en Français ...]]></description>
		<content:encoded><![CDATA[<p>Un petit Bonjour &#8230; non ?</p>
<p>En précisant quel lien de quelle version ne marche pas, ça peut aider, parce que je viens de tester tous les liens et les pages sont bien en Français &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Consulter ou télécharger les documentations de SQL Server par alassanediakite</title>
		<link>https://blog.developpez.com/elsuket/p10996/utilitaires/telecharger_documentation_sql_server#comment-105</link>
		<dc:creator><![CDATA[alassanediakite]]></dc:creator>
		<pubDate>Mon, 30 Apr 2012 17:37:46 +0000</pubDate>
		<guid isPermaLink="false">#comment-105</guid>
		<description><![CDATA[Français ou Espagnol? http://msdn.microsoft.com/fr-fr/library/ms187875.aspx]]></description>
		<content:encoded><![CDATA[<p>Français ou Espagnol? <a href="http://msdn.microsoft.com/fr-fr/library/ms187875.aspx" rel="nofollow">http://msdn.microsoft.com/fr-fr/library/ms187875.aspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Analyse de plans de requête : SQL Sentry Plan Explorer par Glouferu</title>
		<link>https://blog.developpez.com/elsuket/p10724/utilitaires/sql_sentry_plan_explorer#comment-93</link>
		<dc:creator><![CDATA[Glouferu]]></dc:creator>
		<pubDate>Thu, 01 Mar 2012 13:35:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-93</guid>
		<description><![CDATA[Super sympa l&#039;outil !]]></description>
		<content:encoded><![CDATA[<p>Super sympa l&rsquo;outil !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Configurer les protocoles de connexion réseau à SQL Server : l&#8217;utilitaire SQL Server Configuration Manager par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p7723/moteur-de-base-de-donnees-sql-server/configurer_les_protocoles_de_connexion_a#comment-95</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Wed, 29 Feb 2012 16:19:33 +0000</pubDate>
		<guid isPermaLink="false">#comment-95</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
&lt;br /&gt;
Il sert tout simplement à activer l&#039;écoute de connexions sur le protocole TCP/IP, avec par défaut le port 1433 (mais vous pouvez le changer).&lt;br /&gt;
Tout changement de configuration à ce niveau implique un redémarrage sur service SQL Server, c&#039;est à dire au moins quelques secondes d&#039;indisponibilité de l&#039;instance et des bases de données qu&#039;elle héberge.&lt;br /&gt;
&lt;br /&gt;
@++ ;)]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Il sert tout simplement à activer l&rsquo;écoute de connexions sur le protocole TCP/IP, avec par défaut le port 1433 (mais vous pouvez le changer).<br />
Tout changement de configuration à ce niveau implique un redémarrage sur service SQL Server, c&rsquo;est à dire au moins quelques secondes d&rsquo;indisponibilité de l&rsquo;instance et des bases de données qu&rsquo;elle héberge.</p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Configurer les protocoles de connexion réseau à SQL Server : l&#8217;utilitaire SQL Server Configuration Manager par fkuchta</title>
		<link>https://blog.developpez.com/elsuket/p7723/moteur-de-base-de-donnees-sql-server/configurer_les_protocoles_de_connexion_a#comment-94</link>
		<dc:creator><![CDATA[fkuchta]]></dc:creator>
		<pubDate>Wed, 29 Feb 2012 10:47:34 +0000</pubDate>
		<guid isPermaLink="false">#comment-94</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
&lt;br /&gt;
Merci de cet article utile.&lt;br /&gt;
&lt;br /&gt;
Qu&#039;en est-il du champ &quot;Activé&quot; pour chaque connexion TCP/IP ?&lt;br /&gt;
A quoi sert-il ? Je ne trouve nulle part l&#039;information.&lt;br /&gt;
&lt;br /&gt;
Merci.&lt;br /&gt;
&lt;br /&gt;
Fabrice, Toulouse]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Merci de cet article utile.</p>
<p>Qu&rsquo;en est-il du champ &laquo;&nbsp;Activé&nbsp;&raquo; pour chaque connexion TCP/IP ?<br />
A quoi sert-il ? Je ne trouve nulle part l&rsquo;information.</p>
<p>Merci.</p>
<p>Fabrice, Toulouse</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Analyse de plans de requête : SQL Sentry Plan Explorer par ptit_dje</title>
		<link>https://blog.developpez.com/elsuket/p10724/utilitaires/sql_sentry_plan_explorer#comment-92</link>
		<dc:creator><![CDATA[ptit_dje]]></dc:creator>
		<pubDate>Sun, 19 Feb 2012 06:37:10 +0000</pubDate>
		<guid isPermaLink="false">#comment-92</guid>
		<description><![CDATA[Nice :)&lt;br /&gt;
Merci Elsuket !]]></description>
		<content:encoded><![CDATA[<p>Nice <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /><br />
Merci Elsuket !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-47</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sun, 29 Jan 2012 12:28:46 +0000</pubDate>
		<guid isPermaLink="false">#comment-47</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
&lt;br /&gt;
merci à tous les deux de vos commentaires.&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne l&#039;année fiscale, il me semble qu&#039;en France c&#039;est l&#039;année civile.&lt;br /&gt;
&lt;br /&gt;
Je me rappelle m&#039;être renseigné là-dessus quand j&#039;étudiais la possibilité d&#039;ouvrir ma propre entreprise au mois d&#039;Octobre 2009 : le plafond annuel de chiffre d&#039;affaire était à ce moment là de 32000€, et si j&#039;avais ouvert mon entreprise en tant qu&#039;auto-entrepreneur, je n&#039;aurai pas pu dépasser les 8000€ d&#039;Octobre à Décembre, puisque c&#039;est au pro-rata.&lt;br /&gt;
&lt;br /&gt;
Je ne sais pas si en France il est possible pour les entreprise de choisir leur année fiscale comme c&#039;est le cas aux États-Unis ...&lt;br /&gt;
&lt;br /&gt;
@++ ;)]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>merci à tous les deux de vos commentaires.</p>
<p>En ce qui concerne l&rsquo;année fiscale, il me semble qu&rsquo;en France c&rsquo;est l&rsquo;année civile.</p>
<p>Je me rappelle m&rsquo;être renseigné là-dessus quand j&rsquo;étudiais la possibilité d&rsquo;ouvrir ma propre entreprise au mois d&rsquo;Octobre 2009 : le plafond annuel de chiffre d&rsquo;affaire était à ce moment là de 32000€, et si j&rsquo;avais ouvert mon entreprise en tant qu&rsquo;auto-entrepreneur, je n&rsquo;aurai pas pu dépasser les 8000€ d&rsquo;Octobre à Décembre, puisque c&rsquo;est au pro-rata.</p>
<p>Je ne sais pas si en France il est possible pour les entreprise de choisir leur année fiscale comme c&rsquo;est le cas aux États-Unis &#8230;</p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par Glouferu</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-42</link>
		<dc:creator><![CDATA[Glouferu]]></dc:creator>
		<pubDate>Thu, 26 Jan 2012 14:32:52 +0000</pubDate>
		<guid isPermaLink="false">#comment-42</guid>
		<description><![CDATA[select  dateadd(month, datediff(month, 0, GETDATE()) - (12 + datepart(month, GETDATE()) - 10) % 12, 0),&lt;br /&gt;
        dateadd(month, datediff(month, 0, GETDATE()) - (12 + datepart(month, GETDATE()) - 10) % 12 + 12, -1)]]></description>
		<content:encoded><![CDATA[<p>select  dateadd(month, datediff(month, 0, GETDATE()) &#8211; (12 + datepart(month, GETDATE()) &#8211; 10) % 12, 0),<br />
        dateadd(month, datediff(month, 0, GETDATE()) &#8211; (12 + datepart(month, GETDATE()) &#8211; 10) % 12 + 12, -1)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par Glouferu</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-43</link>
		<dc:creator><![CDATA[Glouferu]]></dc:creator>
		<pubDate>Thu, 26 Jan 2012 14:31:12 +0000</pubDate>
		<guid isPermaLink="false">#comment-43</guid>
		<description><![CDATA[Salut Elsuket,&lt;br /&gt;
&lt;br /&gt;
Je suis tombé sur cette article car j&#039;ai des problèmes de perfs ... et j&#039;essai de réaliser la même chose pour l&#039;année fiscale en cours.&lt;br /&gt;
&lt;br /&gt;
Une idée pour éviter d&#039;utiliser des CASE WHEN ELSE END ?&lt;br /&gt;
&lt;br /&gt;
Merci dans tous les cas pour cette article :)]]></description>
		<content:encoded><![CDATA[<p>Salut Elsuket,</p>
<p>Je suis tombé sur cette article car j&rsquo;ai des problèmes de perfs &#8230; et j&rsquo;essai de réaliser la même chose pour l&rsquo;année fiscale en cours.</p>
<p>Une idée pour éviter d&rsquo;utiliser des CASE WHEN ELSE END ?</p>
<p>Merci dans tous les cas pour cette article <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Une fonction de dépouillement d&#8217;une chaîne de valeurs séparées par des virgules par bibouilles</title>
		<link>https://blog.developpez.com/elsuket/p10599/t-sql/fonction_depouillement_chaine_csv#comment-9</link>
		<dc:creator><![CDATA[bibouilles]]></dc:creator>
		<pubDate>Wed, 21 Dec 2011 11:54:28 +0000</pubDate>
		<guid isPermaLink="false">#comment-9</guid>
		<description><![CDATA[ok alors si je comprend bien je dois créer la table nombre avec mon estimation du plus d&#039;enregistrements que l&#039;on aura dans une liste, mais ce n&#039;est pas grave si j&#039;en met moins.&lt;br /&gt;
Puis je doit créer une seule fonction &quot;SplitStringToInt&quot; et cette fonction je pourrais l’utiliser pour gérer des liste de int ce qui n&#039;est pas possible nativement es-ce bien ça?]]></description>
		<content:encoded><![CDATA[<p>ok alors si je comprend bien je dois créer la table nombre avec mon estimation du plus d&rsquo;enregistrements que l&rsquo;on aura dans une liste, mais ce n&rsquo;est pas grave si j&rsquo;en met moins.<br />
Puis je doit créer une seule fonction &laquo;&nbsp;SplitStringToInt&nbsp;&raquo; et cette fonction je pourrais l’utiliser pour gérer des liste de int ce qui n&rsquo;est pas possible nativement es-ce bien ça?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Une fonction de dépouillement d&#8217;une chaîne de valeurs séparées par des virgules par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p10599/t-sql/fonction_depouillement_chaine_csv#comment-8</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Tue, 20 Dec 2011 16:49:37 +0000</pubDate>
		<guid isPermaLink="false">#comment-8</guid>
		<description><![CDATA[Désolé pour la boulette, c&#039;est une fonction que j&#039;ai écrite en Anglais que j&#039;ai mal traduite ...&lt;br /&gt;
Voilà qui est corrigé. La vitesse de la fonction dépend de l&#039;existence de la table, qui ne doit être créée qu&#039;une seule fois.&lt;br /&gt;
&lt;br /&gt;
Merci de l&#039;avoir relevé ;)]]></description>
		<content:encoded><![CDATA[<p>Désolé pour la boulette, c&rsquo;est une fonction que j&rsquo;ai écrite en Anglais que j&rsquo;ai mal traduite &#8230;<br />
Voilà qui est corrigé. La vitesse de la fonction dépend de l&rsquo;existence de la table, qui ne doit être créée qu&rsquo;une seule fois.</p>
<p>Merci de l&rsquo;avoir relevé <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Une fonction de dépouillement d&#8217;une chaîne de valeurs séparées par des virgules par bibouilles</title>
		<link>https://blog.developpez.com/elsuket/p10599/t-sql/fonction_depouillement_chaine_csv#comment-7</link>
		<dc:creator><![CDATA[bibouilles]]></dc:creator>
		<pubDate>Tue, 20 Dec 2011 09:33:02 +0000</pubDate>
		<guid isPermaLink="false">#comment-7</guid>
		<description><![CDATA[La table ne sert pour pour l&#039;exemple (dbo.nombre == dbo.Numbers), dans ce cas la fonction SplitStringToInt sera à ré implémenter pour chaque utilisations&lt;br /&gt;
&lt;br /&gt;
ou&lt;br /&gt;
&lt;br /&gt;
La table fait partie intégrante de la fonction et on doit donc l&#039;ajouter, voir la remplir avec le plus possible d&#039;enregistrements et on est pas obligé de ré implémenter cette fonction pour chaques types d&#039;utilisation? ]]></description>
		<content:encoded><![CDATA[<p>La table ne sert pour pour l&rsquo;exemple (dbo.nombre == dbo.Numbers), dans ce cas la fonction SplitStringToInt sera à ré implémenter pour chaque utilisations</p>
<p>ou</p>
<p>La table fait partie intégrante de la fonction et on doit donc l&rsquo;ajouter, voir la remplir avec le plus possible d&rsquo;enregistrements et on est pas obligé de ré implémenter cette fonction pour chaques types d&rsquo;utilisation? </p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver l&#8217;espace disque occupé par les fichiers, et l&#8217;espace libre dans ceux-ci par Jinroh77</title>
		<link>https://blog.developpez.com/elsuket/p8540/moteur-de-base-de-donnees-sql-server/trouver_l_espace_disque_occupe_par_les_f#comment-62</link>
		<dc:creator><![CDATA[Jinroh77]]></dc:creator>
		<pubDate>Thu, 29 Sep 2011 17:05:34 +0000</pubDate>
		<guid isPermaLink="false">#comment-62</guid>
		<description><![CDATA[Très pratique ces scripts.&lt;br /&gt;
Merci beaucoup.&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Très pratique ces scripts.<br />
Merci beaucoup.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Suivre le nombre de fichiers journaux virtuels du fichier du journal des transactions par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p9312/moteur-de-base-de-donnees-sql-server/suivre_le_nombre_de_fichiers_journaux_vi#comment-72</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Thu, 22 Sep 2011 14:11:55 +0000</pubDate>
		<guid isPermaLink="false">#comment-72</guid>
		<description><![CDATA[Merci les gars ;)&lt;br /&gt;
&lt;br /&gt;
Pour la taille de CreateLSN, quelle taille avez-vous mis ?&lt;br /&gt;
&lt;br /&gt;
@++ ;)]]></description>
		<content:encoded><![CDATA[<p>Merci les gars <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>Pour la taille de CreateLSN, quelle taille avez-vous mis ?</p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Suivre le nombre de fichiers journaux virtuels du fichier du journal des transactions par Glouferu</title>
		<link>https://blog.developpez.com/elsuket/p9312/moteur-de-base-de-donnees-sql-server/suivre_le_nombre_de_fichiers_journaux_vi#comment-71</link>
		<dc:creator><![CDATA[Glouferu]]></dc:creator>
		<pubDate>Thu, 22 Sep 2011 13:51:54 +0000</pubDate>
		<guid isPermaLink="false">#comment-71</guid>
		<description><![CDATA[Attention, la taille du champ &quot;CreateLSN&quot; est parfois trop petite ;)&lt;br /&gt;
&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Attention, la taille du champ &laquo;&nbsp;CreateLSN&nbsp;&raquo; est parfois trop petite <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Suivre le nombre de fichiers journaux virtuels du fichier du journal des transactions par ptit_dje</title>
		<link>https://blog.developpez.com/elsuket/p9312/moteur-de-base-de-donnees-sql-server/suivre_le_nombre_de_fichiers_journaux_vi#comment-70</link>
		<dc:creator><![CDATA[ptit_dje]]></dc:creator>
		<pubDate>Thu, 22 Sep 2011 08:23:23 +0000</pubDate>
		<guid isPermaLink="false">#comment-70</guid>
		<description><![CDATA[Petite precision sur le nombre de vlf crees par taille d&#039;allocation supplementaire au transaction log:&lt;br /&gt;
&lt;br /&gt;
chunks less than 64MB = 4 VLFs&lt;br /&gt;
chunks of 64MB and less than 1GB = 8 VLFs&lt;br /&gt;
chunks of 1GB and larger = 16 VLFs&lt;br /&gt;
&lt;br /&gt;
Les fichiers logs ne benificient pas de l&#039;instant file initialisation ce qui force le moteur a remplir le nouvel espace allouer de 0 car un bout de disque pourrait contenir des informations similaires a un log file.&lt;br /&gt;
&lt;br /&gt;
Etant donne l&#039;aspect cyclique du transaction log, un bit de parite fixe a 64 ou 128 permet de definir ou un VLF &quot;reutilise&quot; s&#039;arrete. &lt;br /&gt;
&lt;br /&gt;
Cheers]]></description>
		<content:encoded><![CDATA[<p>Petite precision sur le nombre de vlf crees par taille d&rsquo;allocation supplementaire au transaction log:</p>
<p>chunks less than 64MB = 4 VLFs<br />
chunks of 64MB and less than 1GB = 8 VLFs<br />
chunks of 1GB and larger = 16 VLFs</p>
<p>Les fichiers logs ne benificient pas de l&rsquo;instant file initialisation ce qui force le moteur a remplir le nouvel espace allouer de 0 car un bout de disque pourrait contenir des informations similaires a un log file.</p>
<p>Etant donne l&rsquo;aspect cyclique du transaction log, un bit de parite fixe a 64 ou 128 permet de definir ou un VLF &laquo;&nbsp;reutilise&nbsp;&raquo; s&rsquo;arrete. </p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Installer le iFilter pour fichiers PDF pour la recherche full-text par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p8960/moteur-de-base-de-donnees-sql-server/full-text/installer_le_ifilter_pour_fichiers_pdf_p#comment-119</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Wed, 21 Sep 2011 17:02:17 +0000</pubDate>
		<guid isPermaLink="false">#comment-119</guid>
		<description><![CDATA[Merci pour le tuyau !]]></description>
		<content:encoded><![CDATA[<p>Merci pour le tuyau !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Installer le iFilter pour fichiers PDF pour la recherche full-text par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p8960/moteur-de-base-de-donnees-sql-server/full-text/installer_le_ifilter_pour_fichiers_pdf_p#comment-118</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Wed, 21 Sep 2011 05:34:27 +0000</pubDate>
		<guid isPermaLink="false">#comment-118</guid>
		<description><![CDATA[Juste une petite précision :)&lt;br /&gt;
&lt;br /&gt;
Pour SQL Server 2008 x64 il faut également rajouter le path &quot;C:Program FilesAdobeAdobe PDF iFilter 9 for 64-bit platformsbin&quot; dans les variables d&#039;environnements. &lt;br /&gt;
&lt;br /&gt;
Sans cela SQL Server ne prend pas en compte les fichiers pdf ... C&#039;est effectivement marqué dans la documentation abode mais tout en bas .... donc pensez à bien la lire jusqu&#039;au bout :)&lt;br /&gt;
&lt;br /&gt;
++]]></description>
		<content:encoded><![CDATA[<p>Juste une petite précision <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Pour SQL Server 2008 x64 il faut également rajouter le path &laquo;&nbsp;C:Program FilesAdobeAdobe PDF iFilter 9 for 64-bit platformsbin&nbsp;&raquo; dans les variables d&rsquo;environnements. </p>
<p>Sans cela SQL Server ne prend pas en compte les fichiers pdf &#8230; C&rsquo;est effectivement marqué dans la documentation abode mais tout en bas &#8230;. donc pensez à bien la lire jusqu&rsquo;au bout <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Savoir quelles collations sont utilisées au niveau colonne, base de données et instance SQL Server par zinzineti</title>
		<link>https://blog.developpez.com/elsuket/p10232/moteur-de-base-de-donnees-sql-server/savoir_quelle_sont_les_collations_utilis#comment-84</link>
		<dc:creator><![CDATA[zinzineti]]></dc:creator>
		<pubDate>Mon, 29 Aug 2011 06:02:16 +0000</pubDate>
		<guid isPermaLink="false">#comment-84</guid>
		<description><![CDATA[Bonjour Nicolas,&lt;br /&gt;
&lt;br /&gt;
Il me semble qu&#039;il y a une coquille dans la requête collation niveau colonne.&lt;br /&gt;
&lt;br /&gt;
Prenons un exemple : &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt; --&gt;Pour une collation serveur  French_CI_AS &lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
SELECT SERVERPROPERTY(&#039;CollationID&#039;) [IDCollationServer],SERVERPROPERTY(&#039;Collation&#039; [CollationServer]&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
IDCollationServer&#160;&#160;CollationServer&#160;&lt;br /&gt;
----------------&#160;&#160;--------------------&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
53259&#160;&#160;                 French_CI_AS&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt; --&gt; Et une base de données de collation Latin1_General_CS_AS &lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
SELECT name [Base], collation_name [CollationBase] FROM sys.databases WHERE name = &#039;AdventureWorks&#039;&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
Base&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CollationBase&#160;&lt;br /&gt;
----&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-----------------&#160;&lt;br /&gt;
AdventureWorks&#160;&#160;&#160;&#160;        Latin1_General_CS_AS&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;exécution de la requête suivante : &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
SELECT    S.name + &#039;.&#039; + T.name AS table_name &#160;&lt;br /&gt;
&#160;   , C.name AS column_name &#160;&lt;br /&gt;
&#160;   , C.collation_name AS column_collation_name &#160;&lt;br /&gt;
&#160;   , FHC.description AS collation_description &#160;&lt;br /&gt;
FROM    sys.columns AS C &#160;&lt;br /&gt;
INNER JOIN  sys.tables AS T &#160;&lt;br /&gt;
&#160;     ON T.object_id = C.object_id &#160;&lt;br /&gt;
INNER JOIN  sys.schemas AS S &#160;&lt;br /&gt;
&#160;     ON S.schema_id = T.schema_id &#160;&lt;br /&gt;
INNER JOIN  sys.fn_helpcollations() AS FHC &#160;&lt;br /&gt;
&#160;     ON C.collation_name = FHC.name&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
WHERE    S.name = &#039;Person&#039; &#160;&lt;br /&gt;
AND    T.name = &#039;Contact&#039;&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Renvoie une erreur classique connue :&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;br /&gt;
Msg 468, Niveau 16, État 9, Ligne 11&lt;br /&gt;
Impossible de résoudre le conflit de classement entre &quot;French_CI_AS&quot; et &quot;Latin1_General_CS_AS&quot; dans l&#039;opération equal to.&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt; --&gt; Contournement &lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
SELECT    S.name + &#039;.&#039; + T.name AS table_name &#160;&lt;br /&gt;
&#160;   , C.name AS column_name &#160;&lt;br /&gt;
&#160;   , C.collation_name AS column_collation_name &#160;&lt;br /&gt;
&#160;   , FHC.description AS collation_description &#160;&lt;br /&gt;
FROM    sys.columns AS C &#160;&lt;br /&gt;
INNER JOIN  sys.tables AS T &#160;&lt;br /&gt;
&#160;     ON T.object_id = C.object_id &#160;&lt;br /&gt;
INNER JOIN  sys.schemas AS S &#160;&lt;br /&gt;
&#160;     ON S.schema_id = T.schema_id &#160;&lt;br /&gt;
INNER JOIN  sys.fn_helpcollations() AS FHC &#160;&lt;br /&gt;
&#160;     ON C.collation_name = FHC.name COLLATE database_default&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
WHERE    S.name = &#039;Person&#039; &#160;&lt;br /&gt;
AND    T.name = &#039;Contact&#039;&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
&lt;/code&gt;]]></description>
		<content:encoded><![CDATA[<p>Bonjour Nicolas,</p>
<p>Il me semble qu&rsquo;il y a une coquille dans la requête collation niveau colonne.</p>
<p>Prenons un exemple : </p>
<p><strong> &#8211;>Pour une collation serveur  French_CI_AS </strong></p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
SELECT SERVERPROPERTY('CollationID') [IDCollationServer],SERVERPROPERTY('Collation' [CollationServer]&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
IDCollationServer&amp;nbsp;&amp;nbsp;CollationServer&amp;nbsp;&lt;br /&gt;<br />
----------------&amp;nbsp;&amp;nbsp;--------------------&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
53259&amp;nbsp;&amp;nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; French_CI_AS&amp;nbsp;&lt;br /&gt;</div></td></tr></tbody></table></div>
<p><strong> &#8211;> Et une base de données de collation Latin1_General_CS_AS </strong></p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
SELECT name [Base], collation_name [CollationBase] FROM sys.databases WHERE name = 'AdventureWorks'&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
Base&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CollationBase&amp;nbsp;&lt;br /&gt;<br />
----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-----------------&amp;nbsp;&lt;br /&gt;<br />
AdventureWorks&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Latin1_General_CS_AS&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;</div></td></tr></tbody></table></div>
<p>L&rsquo;exécution de la requête suivante : </p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
SELECT &nbsp; &nbsp;S.name + '.' + T.name AS table_name &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; , C.name AS column_name &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; , C.collation_name AS column_collation_name &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; , FHC.description AS collation_description &amp;nbsp;&lt;br /&gt;<br />
FROM &nbsp; &nbsp;sys.columns AS C &amp;nbsp;&lt;br /&gt;<br />
INNER JOIN &nbsp;sys.tables AS T &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; &nbsp; ON T.object_id = C.object_id &amp;nbsp;&lt;br /&gt;<br />
INNER JOIN &nbsp;sys.schemas AS S &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; &nbsp; ON S.schema_id = T.schema_id &amp;nbsp;&lt;br /&gt;<br />
INNER JOIN &nbsp;sys.fn_helpcollations() AS FHC &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; &nbsp; ON C.collation_name = FHC.name&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
WHERE &nbsp; &nbsp;S.name = 'Person' &amp;nbsp;&lt;br /&gt;<br />
AND &nbsp; &nbsp;T.name = 'Contact'&amp;nbsp;&lt;br /&gt;</div></td></tr></tbody></table></div>
<p>Renvoie une erreur classique connue :</p>
<p><em><br />
Msg 468, Niveau 16, État 9, Ligne 11<br />
Impossible de résoudre le conflit de classement entre &laquo;&nbsp;French_CI_AS&nbsp;&raquo; et &laquo;&nbsp;Latin1_General_CS_AS&nbsp;&raquo; dans l&rsquo;opération equal to.<br />
</em></p>
<p><strong> &#8211;> Contournement </strong></p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
SELECT &nbsp; &nbsp;S.name + '.' + T.name AS table_name &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; , C.name AS column_name &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; , C.collation_name AS column_collation_name &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; , FHC.description AS collation_description &amp;nbsp;&lt;br /&gt;<br />
FROM &nbsp; &nbsp;sys.columns AS C &amp;nbsp;&lt;br /&gt;<br />
INNER JOIN &nbsp;sys.tables AS T &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; &nbsp; ON T.object_id = C.object_id &amp;nbsp;&lt;br /&gt;<br />
INNER JOIN &nbsp;sys.schemas AS S &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; &nbsp; ON S.schema_id = T.schema_id &amp;nbsp;&lt;br /&gt;<br />
INNER JOIN &nbsp;sys.fn_helpcollations() AS FHC &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; &nbsp; ON C.collation_name = FHC.name COLLATE database_default&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
WHERE &nbsp; &nbsp;S.name = 'Person' &amp;nbsp;&lt;br /&gt;<br />
AND &nbsp; &nbsp;T.name = 'Contact'&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
&amp;lt;code&amp;gt;&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;</div></td></tr></tbody></table></div>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Marquer une procédure stockée comme objet système : la procédure stockée sp_MS_marksystemobject par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p9409/utilitaires/marquer_un_procedure_stockee_comme_objet#comment-99</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Sat, 20 Aug 2011 02:56:29 +0000</pubDate>
		<guid isPermaLink="false">#comment-99</guid>
		<description><![CDATA[Merci SQLPro, voilà qui est corrigé ;)]]></description>
		<content:encoded><![CDATA[<p>Merci SQLPro, voilà qui est corrigé <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Ce qu&#8217;il n&#8217;est pas possible d&#8217;utiliser dans les fonctions T-SQL, et pourquoi par hmira</title>
		<link>https://blog.developpez.com/elsuket/p7249/t-sql/ce_qu_il_est_interdit_d_utiliser_dans_le#comment-2</link>
		<dc:creator><![CDATA[hmira]]></dc:creator>
		<pubDate>Thu, 21 Jul 2011 09:08:57 +0000</pubDate>
		<guid isPermaLink="false">#comment-2</guid>
		<description><![CDATA[Depuis  de la version SQL Server 2005, la liste des fonctions non déterministe, non autorisées sous SQL Server 2000 a été réduite. &lt;br /&gt;
Depuis la version SQL Server 2005, les 17 fonctions non déterministes ci-dessous sont désormais autorisées dans les fonctions UDF : &lt;br /&gt;
CURRENT_TIMESTAMP, &lt;br /&gt;
@@MAX_CONNECTIONS, &lt;br /&gt;
GET_TRANSMISSION_STATUS, &lt;br /&gt;
@@PACK_RECEIVED, &lt;br /&gt;
GETDATE, &lt;br /&gt;
@@PACK_SENT,&lt;br /&gt;
GETUTCDATE, &lt;br /&gt;
@@PACKET_ERRORS,&lt;br /&gt;
@@CONNECTIONS, &lt;br /&gt;
@@TIMETICKS, &lt;br /&gt;
@@CPU_BUSY, &lt;br /&gt;
@@TOTAL_ERRORS, &lt;br /&gt;
@@DBTS, &lt;br /&gt;
@@TOTAL_READ, &lt;br /&gt;
@@IDLE, &lt;br /&gt;
@@TOTAL_WRITE,&lt;br /&gt;
@@IO_BUSY. &lt;br /&gt;
&lt;br /&gt;
En revanche les 4 fonctions non déterministes ci-dessous ne sont toujours pas autorisées dans les fonctions : UDF &lt;br /&gt;
NEWID, &lt;br /&gt;
RAND, &lt;br /&gt;
NEWSEQUENTIALID, &lt;br /&gt;
TEXTPTR.&lt;br /&gt;
&lt;br /&gt;
SQL Server Books Online (BOL) ne fournit aucune raison pour ce changement et ne fait aucune distinction entre les fonctions non déterministes qui sont autorisés dans une fonction de celles qui ne sont pas ! &lt;br /&gt;
&lt;br /&gt;
A+]]></description>
		<content:encoded><![CDATA[<p>Depuis  de la version SQL Server 2005, la liste des fonctions non déterministe, non autorisées sous SQL Server 2000 a été réduite. <br />
Depuis la version SQL Server 2005, les 17 fonctions non déterministes ci-dessous sont désormais autorisées dans les fonctions UDF : <br />
CURRENT_TIMESTAMP, <br />
@@MAX_CONNECTIONS, <br />
GET_TRANSMISSION_STATUS, <br />
@@PACK_RECEIVED, <br />
GETDATE, <br />
@@PACK_SENT,<br />
GETUTCDATE, <br />
@@PACKET_ERRORS,<br />
@@CONNECTIONS, <br />
@@TIMETICKS, <br />
@@CPU_BUSY, <br />
@@TOTAL_ERRORS, <br />
@@DBTS, <br />
@@TOTAL_READ, <br />
@@IDLE, <br />
@@TOTAL_WRITE,<br />
@@IO_BUSY. </p>
<p>En revanche les 4 fonctions non déterministes ci-dessous ne sont toujours pas autorisées dans les fonctions : UDF <br />
NEWID, <br />
RAND, <br />
NEWSEQUENTIALID, <br />
TEXTPTR.</p>
<p>SQL Server Books Online (BOL) ne fournit aucune raison pour ce changement et ne fait aucune distinction entre les fonctions non déterministes qui sont autorisés dans une fonction de celles qui ne sont pas ! </p>
<p>A+</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Marquer une procédure stockée comme objet système : la procédure stockée sp_MS_marksystemobject par sqlpro</title>
		<link>https://blog.developpez.com/elsuket/p9409/utilitaires/marquer_un_procedure_stockee_comme_objet#comment-98</link>
		<dc:creator><![CDATA[sqlpro]]></dc:creator>
		<pubDate>Thu, 14 Jul 2011 18:08:26 +0000</pubDate>
		<guid isPermaLink="false">#comment-98</guid>
		<description><![CDATA[Deux petites choses :&lt;br /&gt;
1) t&#039;es aussi dyslexique que moi, et dans ton titre tu a oublié le e final de &quot;un&quot; procédure !&lt;br /&gt;
2) c&#039;est pas sp_ms_marksystemobject, mais sys.sp_MS_marksystemobject (note la casse).&lt;br /&gt;
J&#039;ai fait une entrée de mon blog sur le sujet : http://blog.developpez.com/sqlpro/p10131/ms-sql-server/creer-une-procedure-executable-de-toutes/&lt;br /&gt;
&lt;br /&gt;
A +&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Deux petites choses :<br />
1) t&rsquo;es aussi dyslexique que moi, et dans ton titre tu a oublié le e final de &laquo;&nbsp;un&nbsp;&raquo; procédure !<br />
2) c&rsquo;est pas sp_ms_marksystemobject, mais sys.sp_MS_marksystemobject (note la casse).<br />
J&rsquo;ai fait une entrée de mon blog sur le sujet : <a href="http://blog.developpez.com/sqlpro/p10131/ms-sql-server/creer-une-procedure-executable-de-toutes/" rel="nofollow">http://blog.developpez.com/sqlpro/p10131/ms-sql-server/creer-une-procedure-executable-de-toutes/</a></p>
<p>A +</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Mêlée de considérations sur la gestion du fichier du journal des transactions par dbaffaleuf</title>
		<link>https://blog.developpez.com/elsuket/p10037/moteur-de-base-de-donnees-sql-server/melee_considerations_fichier_journal_tra#comment-83</link>
		<dc:creator><![CDATA[dbaffaleuf]]></dc:creator>
		<pubDate>Wed, 13 Jul 2011 20:04:10 +0000</pubDate>
		<guid isPermaLink="false">#comment-83</guid>
		<description><![CDATA[Hello,&lt;br /&gt;
&lt;br /&gt;
Je suis plus pour réduire le journal à une taille définie plutôt que de faire un &#039;TRUNCATEONLY&#039; et le réagrandir ensuite. Pendant l&#039;opération de réagrandissement, le fichier LDF sera zéro-initialisé justement en raison de la structure des VLFs, ça risque de prendre du temps. Tu peux le voir en activant le TF 3004 dans la session qui fait l&#039;alter database modify file. &lt;br /&gt;
&lt;br /&gt;
Merci pour ton post, A+&lt;br /&gt;
&lt;br /&gt;
David B.]]></description>
		<content:encoded><![CDATA[<p>Hello,</p>
<p>Je suis plus pour réduire le journal à une taille définie plutôt que de faire un &lsquo;TRUNCATEONLY&rsquo; et le réagrandir ensuite. Pendant l&rsquo;opération de réagrandissement, le fichier LDF sera zéro-initialisé justement en raison de la structure des VLFs, ça risque de prendre du temps. Tu peux le voir en activant le TF 3004 dans la session qui fait l&rsquo;alter database modify file. </p>
<p>Merci pour ton post, A+</p>
<p>David B.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur En SQL, NULL n&#8217;est pas une valeur ! par zinzineti</title>
		<link>https://blog.developpez.com/elsuket/p9971/t-sql/en_sql_null_n_est_pas_une_valeur#comment-113</link>
		<dc:creator><![CDATA[zinzineti]]></dc:creator>
		<pubDate>Wed, 06 Jul 2011 12:51:26 +0000</pubDate>
		<guid isPermaLink="false">#comment-113</guid>
		<description><![CDATA[Il faut noter que tout dépend de l&#039;option SET ANSI_NULLS de la base de données. &lt;br /&gt;
Si cette option est à OFF alors celà change tout !&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SET ANSI_NULLS OFF&lt;br /&gt;
&lt;br /&gt;
IF NULL = NULL &lt;br /&gt;
  PRINT &#039;OK&#039; &lt;br /&gt;
ELSE PRINT &#039;KO&#039;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;b&gt; Donne bien comme résultat : OK &lt;/b&gt;]]></description>
		<content:encoded><![CDATA[<p>Il faut noter que tout dépend de l&rsquo;option SET ANSI_NULLS de la base de données. <br />
Si cette option est à OFF alors celà change tout !</p>
<p>Exemple : </p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;br /&gt;<br />
SET ANSI_NULLS OFF&lt;br /&gt;<br />
&lt;br /&gt;<br />
IF NULL = NULL &lt;br /&gt;<br />
&nbsp; PRINT 'OK' &lt;br /&gt;<br />
ELSE PRINT 'KO'&lt;br /&gt;</div></td></tr></tbody></table></div>
<p>
<b> Donne bien comme résultat : OK </b></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Lister les colonnes d&#8217;une ou des toutes les tables avec leurs types par djeepy1</title>
		<link>https://blog.developpez.com/elsuket/p9579/snippets/lister_les_colonnes_d_une_ou_des_toutes#comment-30</link>
		<dc:creator><![CDATA[djeepy1]]></dc:creator>
		<pubDate>Fri, 03 Jun 2011 16:54:19 +0000</pubDate>
		<guid isPermaLink="false">#comment-30</guid>
		<description><![CDATA[petit tip : dans Management Studio, faîtes Alt+F1 après avoir selectionné le nom de la table.]]></description>
		<content:encoded><![CDATA[<p>petit tip : dans Management Studio, faîtes Alt+F1 après avoir selectionné le nom de la table.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver les derniers grossissements automatiques de fichiers par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p9847/moteur-de-base-de-donnees-sql-server/trouver_les_derniers_grossissements_auto#comment-82</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Thu, 31 Mar 2011 04:03:07 +0000</pubDate>
		<guid isPermaLink="false">#comment-82</guid>
		<description><![CDATA[Merci Mikedavem :)&lt;br /&gt;
&lt;br /&gt;
Il faudra attendre la prochaine version de SQL Server pour pouvoir auditer cela à l&#039;aide des événements étendus ;)&lt;br /&gt;
&lt;br /&gt;
@++ ;)&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Merci Mikedavem <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Il faudra attendre la prochaine version de SQL Server pour pouvoir auditer cela à l&rsquo;aide des événements étendus <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par zinzineti</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-46</link>
		<dc:creator><![CDATA[zinzineti]]></dc:creator>
		<pubDate>Wed, 30 Mar 2011 10:02:55 +0000</pubDate>
		<guid isPermaLink="false">#comment-46</guid>
		<description><![CDATA[Ou plus simplement ;-)&lt;br /&gt;
&lt;br /&gt;
SELECT GETDATE() -1 AS hier_avec_heure&lt;br /&gt;
SELECT CAST(GETDATE() -1 AS DATE) AS hier]]></description>
		<content:encoded><![CDATA[<p>Ou plus simplement <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
<p>SELECT GETDATE() -1 AS hier_avec_heure<br />
SELECT CAST(GETDATE() -1 AS DATE) AS hier</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par zinzineti</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-45</link>
		<dc:creator><![CDATA[zinzineti]]></dc:creator>
		<pubDate>Wed, 30 Mar 2011 09:58:48 +0000</pubDate>
		<guid isPermaLink="false">#comment-45</guid>
		<description><![CDATA[Et le jour précédent (hier) :-) &lt;br /&gt;
&lt;br /&gt;
SELECT DATEADD(WEEKDAY, -1,GETDATE()) AS hier_avec_heure&lt;br /&gt;
SELECT CAST(DATEADD(WEEKDAY, -1,GETDATE()) AS DATE)AS hier]]></description>
		<content:encoded><![CDATA[<p>Et le jour précédent (hier) <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> </p>
<p>SELECT DATEADD(WEEKDAY, -1,GETDATE()) AS hier_avec_heure<br />
SELECT CAST(DATEADD(WEEKDAY, -1,GETDATE()) AS DATE)AS hier</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver les derniers grossissements automatiques de fichiers par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p9847/moteur-de-base-de-donnees-sql-server/trouver_les_derniers_grossissements_auto#comment-81</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Wed, 30 Mar 2011 06:45:53 +0000</pubDate>
		<guid isPermaLink="false">#comment-81</guid>
		<description><![CDATA[Lut :-)&lt;br /&gt;
&lt;br /&gt;
Billet intéressant. Je me permets de compléter .. Avec cette méthode on est obligé d&#039;avoir une trace en continue pour pouvoir détecter un éventuel grossissement de fichier. J&#039;avais un client qui voulait pouvoir détecter ces grossissements uniquements quand ceux-ci se produisent.&lt;br /&gt;
&lt;br /&gt;
On peut également passer une des méthodes (parmi tant d&#039;autres) qui permet de faire ceci :&lt;br /&gt;
&lt;br /&gt;
http://blog.developpez.com/mikedavem/p8763/sql-server-2005/sql/audit-des-autogrow-de-fichiers-de-bases/#more8763&lt;br /&gt;
&lt;br /&gt;
++]]></description>
		<content:encoded><![CDATA[<p>Lut <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
<p>Billet intéressant. Je me permets de compléter .. Avec cette méthode on est obligé d&rsquo;avoir une trace en continue pour pouvoir détecter un éventuel grossissement de fichier. J&rsquo;avais un client qui voulait pouvoir détecter ces grossissements uniquements quand ceux-ci se produisent.</p>
<p>On peut également passer une des méthodes (parmi tant d&rsquo;autres) qui permet de faire ceci :</p>
<p><a href="http://blog.developpez.com/mikedavem/p8763/sql-server-2005/sql/audit-des-autogrow-de-fichiers-de-bases/#more8763" rel="nofollow">http://blog.developpez.com/mikedavem/p8763/sql-server-2005/sql/audit-des-autogrow-de-fichiers-de-bases/#more8763</a></p>
<p>++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs par boutinj</title>
		<link>https://blog.developpez.com/elsuket/p9840/snippets/trouver_le_premier_et_le_dernier_jour_de#comment-44</link>
		<dc:creator><![CDATA[boutinj]]></dc:creator>
		<pubDate>Tue, 29 Mar 2011 20:34:02 +0000</pubDate>
		<guid isPermaLink="false">#comment-44</guid>
		<description><![CDATA[Merci beaucoup, j&#039;en avais déjà implementé mais là c&#039;est plus que complet.]]></description>
		<content:encoded><![CDATA[<p>Merci beaucoup, j&rsquo;en avais déjà implementé mais là c&rsquo;est plus que complet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Générer le script de mise à jour des types de données de colonnes dont le type est déprécié par zinzineti</title>
		<link>https://blog.developpez.com/elsuket/p9824/moteur-de-base-de-donnees-sql-server/generer_le_scrirpt_de_mise_a_jour_des_ty#comment-55</link>
		<dc:creator><![CDATA[zinzineti]]></dc:creator>
		<pubDate>Tue, 22 Mar 2011 14:49:46 +0000</pubDate>
		<guid isPermaLink="false">#comment-55</guid>
		<description><![CDATA[C&#039;est bien de le souligner en bas du billet : &quot;on exécutera la changement de type avec précaution !&quot;&lt;br /&gt;
Parce qu&#039;on ne sait pas tout ce que les applications (pour ne pas dire les développeurs) font...&lt;br /&gt;
&lt;br /&gt;
--&gt; Automatiser cette tâche sur un serveur de PROD me paraît un peu risqué ;-) si on n&#039;a pas sous la main le script de retour arrière.&lt;br /&gt;
je m&#039;explique :&lt;br /&gt;
S&#039;il y a juste deux colonnes qui sont MAJ pas de problème pour faire un retour arrière rapide AU CAS OU !&lt;br /&gt;
Mais imaginons le cas où il y a plusieurs dizaines de colonnes qui sont MAJ...en cas de problème&lt;br /&gt;
au niveau d&#039;une application  par exemple , il faut prévoir le script de retour arrière   &lt;br /&gt;
&lt;br /&gt;
--&gt; je propose de :&lt;br /&gt;
1.&lt;br /&gt;
Lister d&#039;abord les colonnes concernées&lt;br /&gt;
----------------&lt;br /&gt;
SELECT OBJECT_NAME(c.OBJECT_ID) TableName&lt;br /&gt;
, c.name ColonneName&lt;br /&gt;
,t.name TypeName&lt;br /&gt;
FROM sys.columns AS c&lt;br /&gt;
JOIN sys.types AS t ON c.user_type_id=t.user_type_id&lt;br /&gt;
WHERE t.name IN (&#039;text&#039;,&#039;ntext&#039;,&#039;image&#039;) &lt;br /&gt;
ORDER BY TableName;&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
Préparer le script de retour arrière (pour annuler l&#039;opération de MAJ)&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
--&gt; Aplliquer la MAJ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Question &lt;br /&gt;
--------&lt;br /&gt;
Je me demande si les types &#039;timestamp&#039; et &#039;datetime&#039; ne sont pas aussi dépréciés sous SQL Server 2008 ?&lt;br /&gt;
&lt;br /&gt;
A +   ;-) ]]></description>
		<content:encoded><![CDATA[<p>C&rsquo;est bien de le souligner en bas du billet : &laquo;&nbsp;on exécutera la changement de type avec précaution !&nbsp;&raquo;<br />
Parce qu&rsquo;on ne sait pas tout ce que les applications (pour ne pas dire les développeurs) font&#8230;</p>
<p>&#8211;> Automatiser cette tâche sur un serveur de PROD me paraît un peu risqué <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> si on n&rsquo;a pas sous la main le script de retour arrière.<br />
je m&rsquo;explique :<br />
S&rsquo;il y a juste deux colonnes qui sont MAJ pas de problème pour faire un retour arrière rapide AU CAS OU !<br />
Mais imaginons le cas où il y a plusieurs dizaines de colonnes qui sont MAJ&#8230;en cas de problème<br />
au niveau d&rsquo;une application  par exemple , il faut prévoir le script de retour arrière   </p>
<p>&#8211;> je propose de :<br />
1.<br />
Lister d&rsquo;abord les colonnes concernées<br />
&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
SELECT OBJECT_NAME(c.OBJECT_ID) TableName<br />
, c.name ColonneName<br />
,t.name TypeName<br />
FROM sys.columns AS c<br />
JOIN sys.types AS t ON c.user_type_id=t.user_type_id<br />
WHERE t.name IN (&lsquo;text&rsquo;,&rsquo;ntext&rsquo;,&rsquo;image&rsquo;) <br />
ORDER BY TableName;</p>
<p>2.<br />
Préparer le script de retour arrière (pour annuler l&rsquo;opération de MAJ)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>3.<br />
&#8211;> Aplliquer la MAJ </p>
<p>
Question <br />
&#8212;&#8212;&#8211;<br />
Je me demande si les types &lsquo;timestamp&rsquo; et &lsquo;datetime&rsquo; ne sont pas aussi dépréciés sous SQL Server 2008 ?</p>
<p>A +   <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Retrouver le dossier par défaut des sauvegardes des bases de données sous SQL Server 2005 et suivants par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p9782/moteur-de-base-de-donnees-sql-server/retrouver_le_dossier_par_defaut_des_sauv#comment-104</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Mon, 14 Mar 2011 15:29:32 +0000</pubDate>
		<guid isPermaLink="false">#comment-104</guid>
		<description><![CDATA[Merci pour le tuyau !]]></description>
		<content:encoded><![CDATA[<p>Merci pour le tuyau !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Retrouver le dossier par défaut des sauvegardes des bases de données sous SQL Server 2005 et suivants par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p9782/moteur-de-base-de-donnees-sql-server/retrouver_le_dossier_par_defaut_des_sauv#comment-103</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Sun, 13 Mar 2011 18:39:42 +0000</pubDate>
		<guid isPermaLink="false">#comment-103</guid>
		<description><![CDATA[SELECT TOP 1 @backupdir = QUOTENAME(LEFT(physical_device_name, LEN(physical_device_name) - CHARINDEX(&#039;&#039;, REVERSE(physical_device_name))))&lt;br /&gt;
FROM msdb.dbo.backupset AS bs&lt;br /&gt;
JOIN msdb.dbo.backupmediafamily AS bf&lt;br /&gt;
ON bs.media_set_id = bf.media_set_id&lt;br /&gt;
WHERE bs.database_name = base_de_donnees_concernee&lt;br /&gt;
ORDER BY bs.backup_finish_date DESC;&lt;br /&gt;
&lt;br /&gt;
++&lt;br /&gt;
&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>SELECT TOP 1 @backupdir = QUOTENAME(LEFT(physical_device_name, LEN(physical_device_name) &#8211; CHARINDEX(&nbsp;&raquo;, REVERSE(physical_device_name))))<br />
FROM msdb.dbo.backupset AS bs<br />
JOIN msdb.dbo.backupmediafamily AS bf<br />
ON bs.media_set_id = bf.media_set_id<br />
WHERE bs.database_name = base_de_donnees_concernee<br />
ORDER BY bs.backup_finish_date DESC;</p>
<p>++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Retrouver le dossier par défaut des sauvegardes des bases de données sous SQL Server 2005 et suivants par mikedavem</title>
		<link>https://blog.developpez.com/elsuket/p9782/moteur-de-base-de-donnees-sql-server/retrouver_le_dossier_par_defaut_des_sauv#comment-102</link>
		<dc:creator><![CDATA[mikedavem]]></dc:creator>
		<pubDate>Sun, 13 Mar 2011 18:38:33 +0000</pubDate>
		<guid isPermaLink="false">#comment-102</guid>
		<description><![CDATA[Encore une une méthode pour compléter :-). En effet il arrive certaines fois de ne pas retrouver le chemin par défaut avec la procédure xp_instance_readreg. Dand ce cas par script je tente de retrouver le dernier path de la dernière sauvegarde pour la base de données concernant. Bien entendu cela suppose qu&#039;au moins une sauvegarde ait été initiée.&lt;br /&gt;
&lt;br /&gt;
SELECT TOP 1 @backupdir = QUOTENAME(LEFT(physical_device_name, LEN(physical_device_name) - CHARINDEX(&#039;&#039;, REVERSE(physical_device_name))))&lt;br /&gt;
		FROM msdb.dbo.backupset AS bs&lt;br /&gt;
		JOIN msdb.dbo.backupmediafamily AS bf&lt;br /&gt;
		 ON bs.media_set_id = bf.media_set_id&lt;br /&gt;
		WHERE bs.database_name = &lt;br /&gt;
		ORDER BY bs.backup_finish_date DESC;&lt;br /&gt;
&lt;br /&gt;
++]]></description>
		<content:encoded><![CDATA[<p>Encore une une méthode pour compléter :-). En effet il arrive certaines fois de ne pas retrouver le chemin par défaut avec la procédure xp_instance_readreg. Dand ce cas par script je tente de retrouver le dernier path de la dernière sauvegarde pour la base de données concernant. Bien entendu cela suppose qu&rsquo;au moins une sauvegarde ait été initiée.</p>
<p>SELECT TOP 1 @backupdir = QUOTENAME(LEFT(physical_device_name, LEN(physical_device_name) &#8211; CHARINDEX(&nbsp;&raquo;, REVERSE(physical_device_name))))<br />
		FROM msdb.dbo.backupset AS bs<br />
		JOIN msdb.dbo.backupmediafamily AS bf<br />
		 ON bs.media_set_id = bf.media_set_id<br />
		WHERE bs.database_name = <br />
		ORDER BY bs.backup_finish_date DESC;</p>
<p>++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Voir l&#8217;historique d&#8217;exécution des jobs par une requête par elsuket</title>
		<link>https://blog.developpez.com/elsuket/p7895/snippets/voir_l_historique_d_execution_des_jobs_p#comment-16</link>
		<dc:creator><![CDATA[elsuket]]></dc:creator>
		<pubDate>Wed, 09 Mar 2011 03:14:08 +0000</pubDate>
		<guid isPermaLink="false">#comment-16</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
&lt;br /&gt;
Pouvez-vous essayer sans le &quot;sys.&quot; qui précède &quot;sysmessages&quot;? Je n&#039;ai pas d&#039;instance SQL Server 2000 sous la main pour tester ... :)&lt;br /&gt;
&lt;br /&gt;
N&#039;hésitez pas à donner le label de l&#039;erreur ;)&lt;br /&gt;
&lt;br /&gt;
@++ ;)]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Pouvez-vous essayer sans le &laquo;&nbsp;sys.&nbsp;&raquo; qui précède &laquo;&nbsp;sysmessages&nbsp;&raquo;? Je n&rsquo;ai pas d&rsquo;instance SQL Server 2000 sous la main pour tester &#8230; <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>N&rsquo;hésitez pas à donner le label de l&rsquo;erreur <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>@++ <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Voir l&#8217;historique d&#8217;exécution des jobs par une requête par balih</title>
		<link>https://blog.developpez.com/elsuket/p7895/snippets/voir_l_historique_d_execution_des_jobs_p#comment-15</link>
		<dc:creator><![CDATA[balih]]></dc:creator>
		<pubDate>Tue, 08 Mar 2011 10:02:43 +0000</pubDate>
		<guid isPermaLink="false">#comment-15</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
&lt;br /&gt;
Merci pour ton script.&lt;br /&gt;
Je suis débutant sous sql server. La version complete marche très bien sous sql server 2008 mais sous sql server 2000 j&#039;ai un message d&#039;erreur sur sysmessages ?&lt;br /&gt;
&lt;br /&gt;
Comment pourrais je résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
Merci&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Merci pour ton script.<br />
Je suis débutant sous sql server. La version complete marche très bien sous sql server 2008 mais sous sql server 2000 j&rsquo;ai un message d&rsquo;erreur sur sysmessages ?</p>
<p>Comment pourrais je résoudre ce problème.</p>
<p>Merci</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Connaître la taille du cache alloué aux bases de données d&#8217;une instance par Jinroh77</title>
		<link>https://blog.developpez.com/elsuket/p9741/moteur-de-base-de-donnees-sql-server/connaitre_la_taille_du_cache_alloue_aux_#comment-80</link>
		<dc:creator><![CDATA[Jinroh77]]></dc:creator>
		<pubDate>Sat, 05 Mar 2011 14:41:13 +0000</pubDate>
		<guid isPermaLink="false">#comment-80</guid>
		<description><![CDATA[Sympa cette petite requête.&lt;br /&gt;
Merci pour l&#039;info :)]]></description>
		<content:encoded><![CDATA[<p>Sympa cette petite requête.<br />
Merci pour l&rsquo;info <img src="https://blog.developpez.com/elsuket/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
</channel>
</rss>
