SQL Server

I/O asynchrones (épisode 1)

Mardi, juillet 5, 2011
By David BAFFALEUF
I/O asynchrones (épisode 1)

Ce post est le premier d’une série sur les API systèmes impliquées au niveau de SQL Server: Gestion des entrées/sorties: alignement, I/Os asynchrones, alternate streams, scatter gather, I/O completion ports, etc… Le multithreading:  synchronisation, events, mutexes, spinlocks, sections critiques… La mémoire: allocation, fichiers mappés, AWE, large pages… Cette série plutôt barbare va dévier un peu des sujets SGBD... »

Pourquoi il faut sauvegarder les bases systèmes

Dimanche, juillet 3, 2011
By David BAFFALEUF

On peut presque dire que sur 90% des instances que l’on audite, les bases systèmes ne sont JAMAIS sauvegardées. Souvent c’est un aspect de l’administration qui est négligé: on effectue des sauvegardes des bases utilisateurs, mais les bases systèmes ne contiennent pas de données métier donc elles ne font pas partie  du plan de maintenance.... »

Repérer un package SSIS lors de son exécution

Jeudi, juin 30, 2011
By Louis HOCHBERG

Voici quelques infos pour identifier et tracer l’exécution d’un package SSIS avec SQL Server Profiler . Il n’est pas forcément évident de repérer une session d’exécution d’un package SSIS parmi toutes les sessions connectées au même moment sur un server SQL. Pour repérer le package SSIS , il est possible de donner un nom parlant et repérable... »

Error 8976 / 8978, problèmes de chaînage, comment récupérer les données

Lundi, mai 30, 2011
By David BAFFALEUF
Error 8976 / 8978, problèmes de chaînage, comment récupérer les données

Cet article fait suite à une question postée sur developpez.net la semaine dernière. La personne indique qu’une erreur 823 est remontée sur une base en version SQL Server 2000. On lui demande d’inspecter les logs systèmes à la recherche d’une panne matérielle qui aurait pu être à l’origine du problème, puis de retourner le... »

Msg 2508, Level 16, State 1: the In-Row data %% for object %% is incorrect

Mardi, mai 10, 2011
By David BAFFALEUF

Un petit article pour parler de cette erreur assez courante qui se rencontre soit avec des versions antérieures à SQL Server 2005, soit à la suite d’une migration. Elle n’est pas très grave et plutôt bien décrite puisque la solution est indiquée dans le message (« Run DBCC UPDATEUSAGE »). dbcc checkdb('MvxRef') with no_infomsgs, all_errormsgs Msg 2508, Niveau 16, État 1,... »

Bench avec NetApp / Datacore / ESX

Mardi, avril 26, 2011
By David BAFFALEUF
Bench avec NetApp / Datacore / ESX

J’ai récemment eu l’occasion de pouvoir effectuer un bench IO sur une plateforme SQL Server sous ESX avec un couple Datacore / NetApp au niveau du stockage. Contexte technique: DataCore SANMelody / NetApp: Le but de la manœuvre est de déterminer le débit maximum que sera capable de tirer le  sous système IO cible. L’architecture est la... »

Consistence des écritures avec SATA

Dimanche, mars 13, 2011
By David BAFFALEUF
Consistence des écritures avec SATA

A l’origine, cet autre post de James Hamilton qui s’interroge sur le support de FUA par le protocole ATA/IDE/SATA. C’est quoi FUA ? FUA = Force Unit Access. Il s’agit d’un bit au sein d’un Command Disk Block Read ou Write SCSI qui permet d’indiquer au driver de ne pas lire ou écrire depuis ou à... »

Alter table rebuild

Mercredi, mars 2, 2011
By Louis HOCHBERG

Apparue  avec SQL Server 2008, cette nouvelle option permet de reconstruire une table qui n’a pas d’index cluster.  Une table de ce type est appelé un heap. Avant cette version, la solution souvent utilisée pour reconstruire une table heap consiste à créer artificiellement un index cluster sur une ou plusieurs colonnes de la table puis de supprimer... »

Voucher certification SQL Server 70-432 offert !

Vendredi, février 25, 2011
By David BAFFALEUF

Un petit post rapide pour vous rappeler que CapData Consulting est centre de formation PROMETRIC depuis novembre 2010 et offre à chaque stagiaire du cursus DBA SQL Server Production un coupon de passage de la certif MCTS 70-432 ainsi que le livre Micrososft Press de préparation. Si vous êtes intéressés par une formation orientée opérationnelle... »

Cours MCM en ligne

Vendredi, janvier 7, 2011
By David BAFFALEUF

Un petit mot rapide (beaucoup de travail en ce moment) pour signaler que tous les cours d’entraînement au MCM dispensés par SQLSkills sont disponibles en streaming et au téléchargement:  http://www.sqlskills.com/T_MCMVideos.asp Encore une mine d’or à ciel ouvert, merci SQLSkills ! A+. David B. »

Récupérer l’espace consommé par le versionning de lignes

Jeudi, décembre 9, 2010
By David BAFFALEUF

Pour cet article, je pars du principe que vous êtes familier du mode d’isolation SNAPSHOT ou READ_COMMITTED_SNAPSHOT (RCSI) qui permettent à SQL Server de se rapprocher du mode READ_COMMITTED par défaut sous Oracle ou InnoDB. Pour plus d’informations, cf la page MSDN concernant ces modes: http://msdn.microsoft.com/en-us/library/tcbchxcb%28v=vs.80%29.aspx Lorsque SNAPSHOT_ISOLATION ou READ_COMMITTED_SNAPSHOT est activé sur une base,... »

Formation Optimisation de requêtes

Mercredi, septembre 22, 2010
By David BAFFALEUF

Hello, Pour faire suite au post précédent concernant le développement des formations SQL Server chez CapData, voici le plan de la nouvelle formation Optimisation de requêtes qui nous a été réclamée par pas mal de gens ces derniers temps. La formation n’est pas encore au catalogue mais la première session sera donnée par bibi début... »

Mythe: TORN PAGE DETECTION est moins coûteux que CHECKSUM

Mercredi, septembre 1, 2010
By David BAFFALEUF

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…

Lundi, août 30, 2010
By David BAFFALEUF

Ç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

Mercredi, août 25, 2010
By David BAFFALEUF

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

Vendredi, août 20, 2010
By David BAFFALEUF
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

Mardi, août 17, 2010
By David BAFFALEUF

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

Mardi, août 3, 2010
By David BAFFALEUF
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

Dimanche, août 1, 2010
By David BAFFALEUF
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

Jeudi, juillet 29, 2010
By David BAFFALEUF

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... »