...depuis quelques heures déjà.
Désolé de ne pas plus m'étendre plus sur cette nouvelle mais je suis chez un
client en plein audit de perfs alors je développerai ce soir, pendant
l'installation 
Aller au contenu | Aller au menu | Aller à la recherche
jeudi 7 août 2008
Par Djeepy1 le jeudi 7 août 2008, 12:27 - SQL Server
...depuis quelques heures déjà.
Désolé de ne pas plus m'étendre plus sur cette nouvelle mais je suis chez un
client en plein audit de perfs alors je développerai ce soir, pendant
l'installation 
mercredi 6 août 2008
Par Djeepy1 le mercredi 6 août 2008, 21:55 - Infrastructure
En parlant baie de disques avec un client, je me suis souvenu de quelques tips pour optimiser les performances que j'avais lu dans un vieux SQL Server Magazine. L'idée de ce petit post est de vous en livrer un (oui, je sais je pourrais faire un article complet mais là, j'ai la flemme).
Nous allons donc parler Disk Sector Alignment, ou en français, alignement des secteurs du disque. Avant de commencer, on va faire une révision rapide sur le vocabulaire associé aux disques :
Le problème d'alignement vient du fait que, dans un système NTFS, le MBR utilise 63 secteurs. Or si vos pistes font 64 secteurs, il y a un décalage d'un secteur. Ceci va impliquer 2 opérations physiques pour écrire/lire un bloc de données quand on tombe en bout de piste, puisque la tête va devoir changer de piste.
Pour palier ce problème, on peut préciser à Windows de décaler une partition pour la faire démarrer en début d'une piste et ainsi être alignée pour les opérations d'IO. Pour ce faire, on doit utiliser un utilitaire qui s'appelle DISKPART.EXE. On le trouve sous Vista et avec Windows 2003.
A noter que Windows 2008 décale automatiquement et correctement les partitions pour palier le problème.
Décalez bien...
dimanche 3 août 2008
Par Djeepy1 le dimanche 3 août 2008, 22:35 - SQL Server
ll existe différentes techniques pour récupérer la taille d'une base de données. Je vous en livre ici une que j'utilise. Elle se base sur la vue système sys.database_files qui nous renseigne sur les fichiers de la base de données.
SELECT dbname, [ROWS]*8 as Donnees,
[LOG]*8 as Journaux
FROM
(SELECT DB_NAME() as dbname, type_desc, size
FROM sys.database_files) as p
PIVOT
(SUM(size) FOR type_desc IN ([ROWS], [LOG])) as
pvt
Grâce à la fonction PIVOT, j'aggrège les fichiers de données et journaux. Vous noterez aussi que je multiplie la taille par 8 car la valeur de cette vue correspond à un nombre de pages (8KB). Nous obtenons donc une taille en kilo-octets.
Pour connaître les tailles de toutes les bases de données d'un serveur, on peut utiliser se script combiné avec la fonction système sp_MSforeachDB
CREATE TABLE #TMP_DB_Sizes (
dbname sysname,
datasizeinkb int,
logsizeinkb int)
EXECUTE sp_msforeachdb '
INSERT INTO #TMP_DB_Sizes
SELECT dbname, [ROWS]*8 as Donnees, [LOG]*8 as Journaux
FROM
(SELECT ''[?]'' as dbname, type_desc, size
FROM [?].sys.database_files) as p
PIVOT
(SUM(size) FOR type_desc IN ([ROWS], [LOG])) as pvt'
select * from #TMP_DB_Sizes
drop table #TMP_DB_Sizes
J'utilise une table temporaire pour n'avoir qu'un jeu de résultat. Vous noterez l'utilisation de '[?]' pour injecter le nom de la base en cours dans le script
Il existe bien évidemment d'autres solutions, venant de 2000 ou de 2005, certaines apportant d'autres informations comme le pourcentage d'espace inutilisé.
Bon audit !!
Par Djeepy1 le dimanche 3 août 2008, 22:00 - SQL Server
Lorsque l'on travaille avec des transactions imbriquées, on veut parfois pour voir annuler une transaction intermédiaire mais garder les précédentes opérations.
En T-SQL, l'opération de ROLLBACK annule l'ensemble des niveaux de transactions (scopes). Pour s'en convaincre, cette citation de la documentation (ROLLBACK) :
When nesting transactions, this same statement rolls back all inner transactions to the outermost BEGIN TRANSACTION statement.
Le code suivant montre un exemple du problème. Le premier ROLLBACK annule tout depuis la transaction A. La variable @@trancount permet de voir qu'il n'y a plus de transaction en cours
BEGIN TRAN A
-------on démarre le premier niveau de transaction
INSERT INTO [AdventureWorks].[dbo].[truc]([a],[b])
VALUES ('transaction A','transaction A')
select @@trancount --returns 1
BEGIN TRAN B
-------on démarre le deuxième niveau de transaction
INSERT INTO [AdventureWorks].[dbo].[truc]([a], [b])
VALUES ('transaction B','transaction B')
select @@trancount --returns 2
ROLLBACK TRANSACTION B
--on annule la transaction intermédiaire
select @@trancount
--returns 0 : plus de transaction en cours
COMMIT TRAN A --génère une erreur
--Msg 6401, Level 16, State 1, Line 19
--Cannot roll back B. No transaction or savepoint of that name was
found.
Ce comportement ne nous permet donc pas d'annuler une partie du traitement tout en gardant le reste. Heureusement, l'instruction SAVE TRANSACTION nous permet de corriger le tir. SAVE TRANSACTION permet de mettre un point de sauvegarde dans la transaction en cours pour pouvoir y revenir par la suite, avec l'instruction ROLLBACK.
Voici le script modifié. A la fin, la ligne A est insérée mais pas la B.
BEGIN TRAN A
-------on démarre le premier niveau de transaction
INSERT INTO [AdventureWorks].[dbo].[truc]([a],[b])
VALUES ('transaction A','transaction A')
select @@trancount --returns 1
BEGIN TRAN B
-------on démarre le deuxième niveau de transaction
SAVE TRANSACTION B_Saved
--on met un point de sauvegarde
INSERT INTO [AdventureWorks].[dbo].[truc]([a], [b])
VALUES ('transaction B','transaction B')
select @@trancount --returns 2
ROLLBACK TRANSACTION B_Saved
COMMIT B
--on force quand même un commit pour valider la transaction B
select @@trancount --returns 1
COMMIT TRAN A
A noter que l'on doit quand même faire un COMMIT de la transaction enfant car le retour à un point de sauvegarde ne termine pas la transaction.
dimanche 6 juillet 2008
Par Djeepy1 le dimanche 6 juillet 2008, 23:11 - Bewise
Je viens d'être nommé par Microsoft Most Valuable Professional (MVP) sur la technologie SQL Server. C'est une grande nouvelle dans ma vie professionnelle mais aussi pour Bewise.
Les MVP (Most Valuable Professionals) Microsoft sont des leaders de communautés techniques exceptionnels dans le monde entier qui sont récompensés pour partager, de leur propre initiative, leurs grandes connaissances pratiques dans les communautés techniques, qu'elles soient en ligne ou non. Les MVP Microsoft sont des experts reconnus qui incarnent l'excellence des communautés techniques et qui s'investissent largement auprès d'une communauté dans une volonté d'aider les autres.
Cette reconnaissance est le fruit d'un an d'invetissement sous la forme d'articles, de webcasts, de conférences et par ce blog. Biensur, cela ne signifie pas que je vais relâcher la pression, bien au contraire.
Vous pouvez consulter mon profil sur le site des MVP Microsoft à cette adresse :
https://mvp.support.microsoft.com/profile/Jean-Pierre.Riehl

Avec cette nomination, Bewise se voit dotée maintenant de 6 MVP dans différents domaines dont 2 pour SQL Server. Bien que c'était le cas avant, cela souligne nos compétences sur SQL Server tant au niveau de la gestion des données qu'au niveau décisionnel.
jeudi 26 juin 2008
Par Djeepy1 le jeudi 26 juin 2008, 01:05 - SQL Server
Un très bon article forcément partisan mais qui permet de lister les atouts de SQL Server 2008 (et pourquoi pas même 2005) par rapport à son grand rival Oracle.
Le livre blanc est accessible à cette adresse :
SQL Server 2008 Compared to Oracle Database 11g 
Moi j'aime bien la comparaison des prix 
jeudi 19 juin 2008
Par Djeepy1 le jeudi 19 juin 2008, 18:57 - Bewise
N’hésitez pas à poser des questions aux consultants Bewise sur les sujets traités ou tout autre points de SQL Server 2008.

jeudi 12 juin 2008
Par Djeepy1 le jeudi 12 juin 2008, 23:04 - SQL Server
Non, ce n'est pas un jeu de mot pour présenter une nouvelle Assembly. Je
parle ici de références clients qui utilisent avec succès SQL Server.
Le tout présenté dans une petite application Silverlight.
Le site est ici : http://www.microsoft.com/france/sql/ilslontfait/

Les références sont :
lundi 9 juin 2008
Par Djeepy1 le lundi 9 juin 2008, 15:17 - SQL Server
Tellement excité à l'idée d'installer la RC0 de SQL Server 2008, j'ai écarté un détail pourtant visible dès la page de téléchargement...
Il y a une nouvelle édition de SQL Server qui complète la gamme :
En discutant avec différents camarades de jeu, nous nous sommes posés cette simple question : mais qu'est ce que c'est ???
Aux premières informations, ce serait une édition spéciale pour les hébergeurs pour faire baisser les prix du hosting basé sur SQL Server. Bien qûr, je reste à l'affût dès que j'en sais plus..
Plus d'infos : http://mshostingsummit08.spaces.live.com/blog/cns!4308FE7290C0AF4!195.entry
Par Djeepy1 le lundi 9 juin 2008, 00:24 - SQL Server
Il y a plusieurs semaines, j'ai terminé un article d'introduction aux fonctionnalités spatiales de SQL Server 2008. Voici quelques extraits pour vous mettre en appétit. Et pour aller directement sur l'article complet :
Premiers pas dans l'espace (www.bewise.fr)
Introduction
Cet article se veut une première introduction aux nouveaux types spatiaux de SQL Server 2008. Je vais vous les présenter et nous les manipulerons. Nous aborderons aussi leur utilisation avec du code .NET. Enfin, nous utiliserons Virtual Earth pour présenter les données géographiques mais nous ne rentrerons pas dans le détail de cette technologie.[...]
Premières requêtes
Les 2 nouveaux types proposent toute une série de méthodes pour manipuler des données spatiales. Aire de la surface, surface circonscrite, inscrite, périmètre, intersection, union, barycentre… Le but n’est pas de vous les décrire ici une à une. Nous allons toutefois en utiliser quelques unes dans des requêtes simples mais indispensables dans une application gérant des types spatiaux.Tout d’abord, voyons comment retrouver les points contenus dans une zone donnée. Comme cas concret, on peut imaginer une recherche d’appartements ou d’hôtels dans une zone définie. Pour cela, nous avons plusieurs possibilités avec les méthodes STContains, STIntersects et STWithin. La méthode STIntersects serra utilisée pour le type geography car les 2 autres n’existent que sur le type geometry. Voici le code T-SQL permettant cette requête :
Declare @zone geography = geography::STPolyFromText('POLYGON((43 3.2, 43 3.5, 43.2 3))', 4326)
Select *
From CustomerPlaces
Where @zone.STIntersects(CustomerPlaces.Localization) = 1[...]
ADO.NET
Après avoir vu un aperçu des types spatiaux et de leur utilisation dans SQL dans Management Studio, intéressons nous à la manipulation depuis une application .NET.[...]
Et comme d'habitude, n'hésitez pas pour les questions...
« billets précédents - page 1 de 8