SQL Server ne conserve par défaut que 6 archives du journal d'erreur, et l'historique des travaux de l'agent SQL est bien trop court.
Nous allons remédier à cela avec quelques scripts SQL.
dimanche 24 septembre 2023
Par Arian Papillon le dimanche 24 septembre 2023, 11:13
SQL Server ne conserve par défaut que 6 archives du journal d'erreur, et l'historique des travaux de l'agent SQL est bien trop court.
Nous allons remédier à cela avec quelques scripts SQL.
samedi 23 septembre 2023
Par Arian Papillon le samedi 23 septembre 2023, 10:35
Etre notifié par mail en cas de problème, c'est indispensable !
Ici, nous configurons Database Mail, étape importante des best practices après l'installation d'une instance SQL Server.
Tant qu'à faire, simplifions l'opération en configurant avec un script SQL.
vendredi 22 septembre 2023
Par Arian Papillon le vendredi 22 septembre 2023, 09:40
A l'installation d'une instance SQL Server, il y a au minimum quelques "best practices" à appliquer.
Cette série d'articles décrit les principales configurations indispensables et les moyens de les mettre en place avec de simples requêtes SQL : tâches de maintenance, alertes, notifications par email, configuration de l'instance, ...
Nous commençons ici par la configuration des tâches de maintenance.
samedi 8 juillet 2023
Par Arian Papillon le samedi 8 juillet 2023, 17:46
On ne le dira jamais assez, il faut installer les correctifs sur vos instances SQL Server.
Microsoft a enfin mis en ligne une page tenue à jour qui recense les correctifs pour toutes les versions de SQL Server, de la version 6.5 (hé oui !) à la version 2022.
Mais bien sûr, si vous utilisez SQL Server 2012 (fin du support étendu le 12 juillet 2023, on y est) ou une version encore plus ancienne, envisagez à court terme la mise à jour vers une version encore supportée par Microsoft.
Pour installer un correctif, pour ma part, j'attends en général une quinzaine de jours avant de l'appliquer, histoire d'éviter des régressions imprévues (il y a même eu des retraits de correctifs en catastrophe dans le passé, quelques jours après leur sortie).
En ce qui concerne SQL Server 2022 par exemple, le correctif Cumulative Update 4 avait quelques bugs qui pourraient se révéler gênants.
En voilà un, heureusement corrigé depuis par le Cumulative Update 5 :
-- Créons une table avec un index descendant
DECLARE @T table (i integer NOT NULL INDEX ii (i DESC));
INSERT @T (i) VALUES (1), (2), (3);
-- Cette requête renvoie les données en ordre descendant !
SELECT Ascending = T.i
FROM @T AS T
WHERE T.i IN (1, 2, 3)
ORDER BY T.i ASC; -- Mais nous avions demandé un ordre ascendant
-- Cette requête renvoie les données en ordre ascendant !
SELECT Descending = T.i
FROM @T AS T
WHERE T.i IN (1, 2, 3)
ORDER BY T.i DESC; -- Mais nous avions demandé un ordre descendant
-- CU 4 : L'ordre est incorrect avec un index descendant et un prédicat IN sur cette clé
samedi 18 mars 2023
Par Arian Papillon le samedi 18 mars 2023, 18:12
Vous trouverez ici les diapositives et les démonstration de notre session sur la recherche en texte intégral lors de la conférence Datafrogs de ce 18 mars 2023.
jeudi 2 mars 2023
Par Arian Papillon le jeudi 2 mars 2023, 10:27
Depuis SQL Server 2008, il est possible de créer des index filtrés : des index nonclustered avec un prédicat WHERE, qui ne vont indexer qu'une partie de la table.
Bien que peu utilisés (je le constate souvent dans les bases que j'examine), l'utilisation des index filtrés peut nous aider à résoudre certaines problématiques de performances et peuvent réduire le volume de stockage.
Il faut cependant bien comprendre quelles sont les limites à leur utilisation : dans beaucoup de cas, les index filtrés que j'ai rencontré étaient mal utilisés !
lundi 27 février 2023
Par Arian Papillon le lundi 27 février 2023, 09:16
Un petit webcast sur Database Ledger, nouvelle fonctionnalité de sécurité de SQL Server 2022. Basé sur la technologie de la blockchain, cela permet d'assurer la traçabilité des modifications et de garantir l'intégrité des données, pour des bases de données à haute sécurité. Dans la démo, j'ai joué au vilain pirate pour altérer ma base de données...
jeudi 23 février 2023
Par Arian Papillon le jeudi 23 février 2023, 09:20
En construisant mes démos, je suis tombé sur ce bug : lorsqu'on tente d'ajouter un filegroup filestream à une base de données, on obtient le message d'erreur suivant.
Msg 35221, Level 16, State 1, Line 2 Could not process the operation. Always On Availability Groups replica manager is disabled on this instance of SQL Server. Enable Always On Availability Groups, by using the SQL Server Configuration Manager. Then, restart the SQL Server service, and retry the currently operation. For information about how to enable and disable Always On Availability Groups, see SQL Server Books Online.
Cela n'a bien entendu aucun rapport avec Always On...
Ce problème (entre autres) est corrigé avec le Cumulative Update #1, qu'il est donc urgent de télécharger ici.
mercredi 8 février 2023
Par Arian Papillon le mercredi 8 février 2023, 16:37
Question : Aurais-tu une technique pour qu’au sein d’un SELECT, la fonction Rand() change de valeur sur chaque ligne ? Car malheureusement, elle garde la même valeur sur chaque ligne...
Réponse : effectivement, pour un UPDATE SET col = RAND(), la fonction n'est effectuée qu'une seule fois et la valeur sera la même pour toutes les lignes. Mais il existe une solution, avec la création d'une vue et d'une fonction, qui forcera la fonction à s'exécuter pour chaque ligne.
-- Création d'une vue
CREATE VIEW [dbo].[V_RAND] AS
SELECT RAND() AS RAND
GO
-- Création d'une fonction
CREATE FUNCTION [dbo].[F_GET_RAND] ()
RETURNS FLOAT
AS
BEGIN
RETURN (SELECT RAND FROM V_RAND)
END;
GO
UPDATE MATABLE SET MACOLONNEFLOAT = dbo.F_GET_RAND()
dimanche 20 novembre 2022
Par Arian Papillon le dimanche 20 novembre 2022, 13:01
Si comme moi vous déployez fréquemment des instances SQL Server pour des tests divers et que vous êtes pressé, le plus rapide est de le faire avec un fichier de configuration.
Dans cet article, un exemple de fichier de configuration compact pour une installation simple de SQL Server 2022.
« billets précédents - page 2 de 19 - billets suivants »