SQL Server 2016 sous Linux


Information étonnante mais vraie : SQL Server arrive sous Linux. Pour avoir un aperçu c'est par là :
https://www.microsoft.com/fr-fr/server-cloud/sql-server-on-linux.aspx

Power BI Desktop


Auparavant, les outils Microsoft proposaient de faire de la Business Intelligence sur demande à travers plusieurs solutions :
  • Power BI pour Microsoft Excel 2013 ou + (avec Power View, Power Map et Power Pivot)
  • Power BI pour Microsoft SharePoint 2010 ou + (avec Power View et Power Pivot)
  • Power BI pour Microsoft Office 365
Il est maintenant possible de faire de la BI générée à la volée sur une application disponible OnPremise : Power BI Desktop.

Après un test rapide de l'outil, voici les points positifs que j'ai pu constater :
  • Une création de rapport très proche de Power View,
  • Des sources de données très variées,
  • Des performances très acceptables,
  • Un accès aux données par importation ou par une connexion active (DirectQuery),
  • Une compatibilité Windows, iOS et Android.
Pour les bases de données d'entreprise, je recommande de créer un cube Analysis Services pour faciliter l'accès aux données (création de libellés de colonnes compréhensibles, de colonnes calculées) et accélérer les accès DirectQuery aux volumes importants de données.

Vous trouverez ici une bonne présentation de l'outil de Robert Sheldon :
https://www.simple-talk.com/sql/reporting-services/working-with-sql-server-data-in-power-bi-desktop/

Evaluer la volumétrie d'une base de données


Voici une petite requête pour évaluer quelles tables prennent le plus de place dans une base de données. Très pratique lorsque l'on cherche à réduire la volumétrie.
SELECT  [Nom de la table] = OBJECT_NAME(p.object_id) 
       ,[Nombre de lignes] = SUM(CASE WHEN (p.[index_id] < 2) AND (a.[type] = 1) THEN p.[rows] ELSE 0 END)
       ,[Volume alloué (kb)] = (SUM(a.total_pages) * 8192 / 1024)
       ,[Volume utilisé par les données (kb)] = (SUM(CASE WHEN a.[type] <> 1 THEN a.[used_pages] WHEN p.[index_id] < 2 THEN a.[data_pages] ELSE 0 END) * 8192 / 1024)
       ,[Volume utilisé par les indexs (kb)] = ((SUM(a.[used_pages]) - SUM(CASE WHEN a.[type] <> 1 THEN a.[used_pages] WHEN p.[index_id] < 2 THEN a.[data_pages] ELSE 0 END)) * 8192 / 1024) 
    FROM sys.partitions p
	INNER JOIN sys.allocation_units a ON p.[partition_id] = a.[container_id]
	INNER JOIN sys.sysobjects s ON p.[object_id] = s.[id]
    WHERE s.[type] = 'U'    -- On ne conserve que les tables Utilisateur (exclusion des tables système)
    GROUP BY p.[object_id]
    ORDER BY [Volume alloué (kb)] DESC, object_name(p.[object_id]) 

INSERT failed because the following SET options have incorrect settings: 'ARITHABORT'.


L'erreur suivante "INSERT failed because the following SET options have incorrect settings: 'ARITHABORT'." peut survenir lors d'une insertion ou d'une mise à jour sur une base de données. D'après MSDN, elle peut survenir lorsqu'il y a un dépassement de capacité ou une division par zéro durant l'exécution d'une requête. Mais bien souvent, c'est parce que vous utilisez des vues indexées ou des colonnes calculées sur votre base de données, et que le mode de compatibilité choisi ne le supporte pas.

Pour vérifier cela, aller dans les propriétés de la base de données, puis dans la catégorie "Options". Si le paramètre "Compatibility level" est à "SQL Server 2000" ou "SQL Server 2005", passez-le à "SQL Server 2008" ou à une version plus récente. Voici un aperçu du paramètre à modifier :

1 2 ... 16