SQL Server
Mythe: TORN PAGE DETECTION est moins coûteux que CHECKSUM
C’est tentant de le penser, parce qu’on sait que le mécanisme de Torn Page Detection (TPD) ne se base que sur les premiers bits de chaque secteur de 512 octets dans chaque page, alors que le checksum calcule une somme de contrôle de toute la page. * Sauf que pour pouvoir ajouter la signature de... »
News côté formation…
Ça y est, Louis et moi avons terminé la nouvelle mouture de la formation SQL Server production. Les versions de SQL Server ciblées reflètent celles qui composent le parc de prod actuel et qui sont supportées par l’éditeur, c’est à dire 2005, 2008, 2008 R2. 10 sections principales sur 5 jours avec une dizaine de... »
Saines lectures
Une autre question fréquemment posée en formation et d’ordre plus général concerne les lectures conseillées sur SQL Server et les sujets associés. La liste qui suit n’engage bien évidemment que moi. Les bouquins En général les stagiaires rechignent toujours autant à se mettre à l’anglais, et c’est bien dommage car la plupart du temps la doc... »
Fragmentation sur des tables stockées en S-GAM
C’est une question que j’ai fréquemment eu en formation à la suite d’un TP sur la fragmentation des indexes. Soit une table ‘FILLIALE‘ avec la définition suivante: FILLIALE { NOT NULL, (50) NULL, (100) NULL, (5) NULL, (50) NULL, NULL } Elle contient 240 lignes, une clé primaire... »
Une alternative à xp_fixeddrives
Pour faire simple, le besoin est de pouvoir récupérer l’équivalent d’un df (UNIX) en Transact-SQL, c’est à dire ça: $ df -k Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur c: 40957684 28061160 12896524 69% ... »
Scripting et SMO (suite): scripter les objets directement en T-SQL
Suite de l’article précédent, où il était question de générer le DDL d’une base avec C# et SMO. Si on pousse l’idée un peu plus loin, il serait séduisant de pouvoir le faire directement dans une procédure stockée, en s’interfaçant avec SMO et sa méthode Script(). La première solution qui vient à l’esprit, c’est... »
Mythe: SQL Server associe un thread à chaque connexion
C’est évidemment faux, mais il est facile de se méprendre sur la question. Pourtant il existe une manière simple de le vérifier. Sur une instance non-idle (avec de l’activité), il suffit de récupérer plusieurs fois de suite la valeur de os_thread_id associé à sa propre connexion: select os_thread_id from sys.dm_os_threads T inner join sys.dm_os_workers W on... »
Générer le DDL complet d’une base en C# / SMO / multithreading
Pour faire suite à un post sur développez concernant l’existence d’outils de scripting d’objets en dehors de ceux proposés par SSMS, j’ai décidé de regarder d’un peu plus près le sujet et d’en créer un (getMsDDLmt) pour voir ce que ça donne. Afin de suivre les explications du code, les sources sont disponibles sur... »
Abonnez-vous au blog de la CapData team !
Bonjour à tous, Juste un petit post pour vous rappeler les différentes méthodes vous permettant de suivre l’activité débordante du blog de la capdata team : Accès standard via la page web : http://blog.capdata.fr Vous abonner au flux RSS du blog et être ainsi prévenu de l’arrivée des nouveaux articles : http://feeds.feedburner.com/CapDataTeamBlog Nous suivre sur Twitter pour retrouver... »
Réunion GUSS le 1er juillet !
Beaucoup de travail et pas beaucoup de temps pour écrire des articles. De nouveaux sujets vont arriver cependant, certainement durant l’été. Patience donc ! Bref un court post pour dire que je serai présent à la prochaine réunion du GUSS le 1er juillet. La réunion a lieu dans les nouveaux locaux de MS à Issy-les-Moulineaux,... »
SQLDIAG (épisode 2)
Deuxième épisode de la trilogie sur SQLDIAG et les outils avancés de diagnostic autour de SQL Server. Nous parlerons aujourd’hui du résultat de la trace lancée lors du rapport précédent et de son contenu. Nous verrons comment charger le contenu de la trace SQL et du fichier BLG dans SQL Profiler pour interprétation. Puis... »
Jeux de caractères, Unicode et Base de données
Introduction Un caractère est un symbole ou un signe unique appartenant à un alphabet. Le jeu de caractères est un ensemble de caractères à représenter. Il existe plusieurs jeux de caractères, permettant de représenter différents alphabets du monde. Le standard ASCII Afin de répertorier tous les caractères, un standard a été mis en place. Le premier standard... »
Modifier PAGE_VERIFY après une migration depuis SQL 2000
En regardant une session de Paul Randal sur les corruptions à la teched de Barcelone en 2008* , j’ai réalisé qu’il manquait une étape dans notre listing de choses à faire à la suite d’une migration de 2000 vers 2005 ou 2008. Par défaut en version 2000, PAGE_VERIFY n’a qu’une seule valeur possible pour vérifier... »
Un trigger fait-il parti d’une transaction ?
C’est une question que l’on peut se poser, même si la réponse parait évidente, nous ne sommes pas à l’abri d’éventuelles surprises. Verdict à la fin de ce post ! C’est d’ailleurs une question que l’on s’est posée, autour de la machine café, et qui du coup a fait l’objet d’un petit exercice avec Oracle,... »
Insert et Update en une seule fois avec MERGE
Combien de fois le doute s’installe : Les lignes existent-elles des 2 cotés ? Jusqu’à la version 2005, la méthode consistait à faire un select , puis si la ligne n’existait pas dans l’autre table on l’insérait, sinon on la mettait à jour. Depuis la version 2008, Sql server nous propose de faire tout ça... »
Intérêt de créer des indexes cluster uniques
Hello, Un petit post rapide sur l’impact que peuvent avoir des valeurs de clés d’index clusterisé dupliquées sur les pages d’indexes non clusterisés. En effet, par défaut la commande CREATE CLUSTERED INDEX va créer un index clusterisé non-unique, qui donc autorise l’insertion de valeurs dupliquées. Or cela pose un certain nombre de problèmes, notamment lorsque l’optimiseur... »
Scruter les journaux d’évènements Windows avec LogParser
Un petit post sur un outil bien pratique pour tous ceux qui rament pour écrire des scripts sous Windows. Un des outils indispensables dont toute production doive se doter est un analyseur de journaux d’erreur. Logparser est un petit exécutable fourni gratuitement par Microsoft et qui permet de lire des fichiers structurés propriétaires tels que... »
SQLDIAG (épisode 1)
Début d’une assez longue série de posts sur l’utilitaire SQLDIAG et ses petits camarades de jeu PSSDIAG, SQLNexus et autres RML Utilities… SQLDIAG est un utilitaire en mode ligne de commandes qui est livré avec SQL Server depuis plus de 10 ans maintenant. Il est bien caché, peu de gens l’utilisent mais il peut être... »
Retrouver les tables dont les stats ne sont plus compilées en automatique
Quand on tombe sur un problème de performance de requête, il faut entre autres choses vérifier si les statistiques sur les tables ont bien été recompilées récemment. En effet, ce n’est pas parce que les options ‘auto create statistics‘ et ‘auto update statistics‘ sont activées pour une base que ses tables et indexes ont... »
Règles d’installation de base (épisode 2)
Suite de l’épisode précédent. Une fois le matériel commandé, livré, déballé, racké, etc…, il va falloir installer Windows et SQL Server. Là encore il va falloir regarder certains détails de près : Paramétrage de Windows Server: Préparation des disques: On l’a dit dans l’épisode 1, le disque c’est le nerf de la guerre. Je vais donc apporter un... »
Modifier la Collation d’une base SQL 2005
L’objectif de cet article est de présenter une méthode pour changer la collation d’une base de données. »
Retrouver une transaction en échec
Aujourd’hui la réplication transactionnelle est en panne. Un coup d’oeil rapide au moniteur de réplication nous confirme que l’agent de distribution est en échec: Command attempted: if @@trancount > 0 rollback tran (Transaction sequence number: 0x0000CD53000011DE001000000000, Command ID: 1) Error messages: Syntax error, permission violation, or other nonspecific error (Source: MSSQLServer, Error number: 20025) Get help: http://help/20025 Syntax error, permission violation, or... »
Sessions consommatrices dans tempdb
Je sais ce que vous allez dire: on l’a déjà vu partout, il y a déjà un million d’articles sur le sujet, quel intérêt pour une société qui se défend justement de poster sur des sujets originaux, etc… Je vous répondrai que le problème n’est pas trivial. Tout le monde utilise les vues DMV pour... »
Règles d’installation de base (épisode 1)
C’est par là qu’on commence… à faire des bêtises en général. SQL Server, c’est facile, on clique, suivant, suivant et hop c’est fini. Hélas, ce n’est pas plus facile qu’un autre SGBD. C’est juste plus facile de se tromper. Voici quelques règles de bases lorsqu’on s’apprête à installer un SQL Server en production. Episode 1:... »
Attention : publication transactionnelle et indexes non clusters
Récemment, en resynchronisant une publication transactionnelle avec un éditeur 2005 vers un abonné 2005, on s’est aperçu que le snapshot ne générait que les index clusters pour chaque article, pas les indexes non clusters. Enorme ! Nous avons revérifié avec un éditeur en 2000, et les indexes non clusters sont bien générés en même... »
Principes d’une sauvegarde à chaud
Rien de plus simple de que faire une sauvegarde sur SQL Server: BACKUP DATABASE maBase to disk='D:\MSSQL.1\MSSQL\Backup\maBase.bak' with init, stats 10 percent processed. 21 percent processed. 32 percent processed. 43 percent processed. 54 percent processed. 60 percent processed. 71 percent processed. 82 percent processed. 93 percent processed. Processed 144 pages for database 'maBase', file 'maBase' on file 1. 100 percent processed. Processed 2 pages for database 'maBase',... »
Modes de récupération et journal de transactions, épisode 2
Dans l’article précédent, nous avons vu quels sont les principaux modes de récupération SIMPLE et FULL, et leur effet respectif sur le journal des transactions. Ici nous allons aborder le troisième mode BULK-LOGGED, ses avantages, inconvénients et contextes d’utilisation. Quelques rappels du post précédent: BULK-LOGGED: c’est un mode à combiner avec le mode FULL. Dans ce... »
Modes de récupération et journal de transactions, épisode 1
Une petite série de posts sur les différents modes de récupération des bases sous SQL Server 2005/2008, et leur impact sur le journal de transactions. Dans ce premier épisode: Qu’implique le passage de SIMPLE à COMPLET. Que devient mon journal en mode COMPLET si je ne le sauvegarde pas régulièrement. Le mode de récupération (recovery model en anglais)... »

