PI Services

Le blog des collaborateurs de PI Services

SQL Server – Amélioration de la reconstruction d’un index en ligne sous SQL Server 2012.

SQL Server 2012 cache quelques petites nouveautés qui peuvent bien vous surprendre.

J’ai découvert récemment qu’il est désormais possible de reconstruction un index en ligne sur SQL Server 2012 de tables qui contiennent des types VARCHAR(MAX) et NVARCHAR(MAX).

Démonstration :

Commencez par exécuter le script sous SQL Server 2008 R2 puis sur SQL Server 2012.

USE [tempdb]
GO
CREATE TABLE T1
(ID INT, C1 NVARCHAR(10), C2 NVARCHAR(MAX))
GO
CREATE CLUSTERED INDEX [IX_T1]
ON T1
(ID)
GO
CREATE NONCLUSTERED INDEX [IX_T1_Cols]
ON T1
(C1)
INCLUDE (C2)
GO
USE [tempdb]
GO
ALTER INDEX [IX_T1_Cols] ON [dbo].[T1]
REBUILD WITH (ONLINE = ON)
GO
DROP TABLE T1
GO

Résultat :

Sur le serveur SQL Server 2008 R2, on a un message d’erreur du type

Msg 2725, Level 16, State 2, Line 1
An online operation cannot be performed for index ‘IX_T1_Cols’ because the index contains column ‘C2’ of data type text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, or large CLR type. For a non-clustered index, the column could be an include column of the index. For a clustered index, the column could be any column of the table. If DROP_EXISTING is used, the column could be part of a new or old index. The operation must be performed offline.

Tandis que sur le serveur SQL Server 2012

Command(s) completed successfully.

SQL Server 2005 – Erreur 28086 lors de la réinstallation de SQL Server Reporting.

Lors d’une mission d’installation de SQL Server chez un client, j’ai rencontré un problème d’installation du service SQL Server Reporting suite à une réinstallation du serveur.

L’erreur en question mentionne que le service SQL Server Reporting ne peut pas etre installé car il existe une instance du même nom sur le serveur.

An instance with the same name is already installed on this computer. To proceed with SQL Server Setup, provide a unique instance name.

error sql article

Pour résoudre ce problème :

1. Commencez par désinstaller tous les binaires de SQL Server 2005

2. Supprimez le dossier correspondant à C:\Program Files\Microsoft SQL Server\, ou spécifiquement le dossier C:\Program Files\Microsoft SQL Server\MSSQL.1.

3. Puis ouvrez l’éditeur du registre recherchez les clés suivantes pour les supprimer :

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSSQLServer

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.1

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Services\SQL Server

4. Puis redémarrer votre serveur et relancez votre installation.

SQL Server – Comparaison de base de données avec SSDT 2012.

Dans le cadre de l’administration de serveurs de base de données, vous serez probablement un jour amené à comparer des bases de données entre elles.

La procédure ci-dessous vous aide à comparer deux bases de données entre à l’aide de SQL Server Data Tools 2012.

1. Commencez par télécharger le SQL Server Data Tools de Visual Studio 2012 en suivant ce lien :

http://msdn.microsoft.com/en-us/jj650015

Cliquez ensuite sur le lien Download SQL Server Data Tools for Visual Studio 2012

2. Une fois que votre outil est téléchargé, installez le puis lancez le SQL Server Data Tools.

L’icône ressemble à cette image :

clip_image001

3. Dans le menu SQL, sélectionnez Comparaison de schémas puis cliquez sur Nouvelle comparaison de schémas…

clip_image002

4. Sélectionnez dans un premier temps la source en cliquant sur Sélectionner source…

clip_image003

5. Cliquez sur Nouvelle connexion… pour choisir la base de données d’un serveur que vous désirez mettre en source.

clip_image004

6. Choisissez le nom du serveur puis votre base de données hébergée sur ce dernier.

a. Dans l’exemple ci-dessous notre serveur se nomme JELAV-HP-01\SQL2012 et notre base de données source se prénomme AdventureWorks2012

b. Cliquez ensuite sur OK

clip_image005

7. Cliquez sur OK.

clip_image006

8. Sélectionnez maintenant votre base de données cible en cliquant sur Sélectionner cible…

clip_image007

9. Une fenêtre de sélection pour le schéma cible apparait. Cliquez sur Nouvelle connexion… pour ajouter la base de données cible que vous souhaitez.

clip_image008

10. Choisissez le nom du serveur puis votre base de données hébergée sur ce dernier.

a. Dans l’exemple ci-dessous notre serveur se nomme JELAV-HP-01\SQL2008R2 et notre base de données cible se prénomme AdventureWorks2008R2

b. Cliquez ensuite sur OK

clip_image009

11. Cliquez à nouveau sur OK.

clip_image010

12. Vos deux champs Source et Cible sont renseignés, vous pouvez maintenant comparer le schéma des deux bases de données en cliquant sur l’icône Comparer.

clip_image011

13. Une fois que la comparaison des schémas est terminée, dans notre exemple nous observons des objets qui comportent des points de divergence. Nous avons la possibilité de mettre à jour le schéma cible pour que le schéma de la base de données AdventureWorks2008R2 soit identique de celle de AdventureWorks2012.

clip_image012

14. Pour mettre à jour, le schéma de la base de données cible, cliquez sur l’icône Mettre à jour.

clip_image013

15. Une fenêtre apparait pour vous avertir et vous demander confirmation, cliquez sur Oui.

clip_image014

16. Une fois que la mise à jour est achevée, vous pouvez voir le détail des opérations dans le menu Opérations des outils de données et le succès de celui-ci.

clip_image015

17. Relancez la comparaison des deux schémas pour valider la mise à jour. Résultat de la comparaison, le schéma des deux bases de données sont identique.

clip_image016

Création d’un rapport sur Report Builder 3.0

 

Introduction

Report Builder est un outil de création de rapports qui nous permet d’en générer à partir de sources de données. Lors de la création d’un rapport, nous pouvons indiquer où trouver les données, les données à obtenir et comment afficher les données.

 

Création de notre rapport

Nous commençons par lancer Report Builder 3.0. Une fenêtre de mise en route apparait :

Nous allons dans le volet Nouveau rapport puis nous cliquons sur Rapport vierge afin de commencer à créer un nouveau rapport.

clip_image003

Notre espace de travail s’affiche alors avec le ruban qui présente les différents menus, un volet de navigation sur la gauche et une fenêtre centrale sur laquelle se présentera notre futur rapport.

Création de notre source de données

Nous devons pour commencer, spécifier une source de données afin d’indiquer à notre rapport où chercher les informations. Pour se faire, nous cliquons droit sur le dossier Sources de données dans le volet de navigation à gauche. Puis sur Ajouter une source de données…

image

Une fenêtre apparait, nous permettant de créer notre source de données.

Nous remplissons le champs Nom, puis nous sélectionnons le type de connexion (dans notre exemple il s’agit d’un server SQL) puis nous indiquons dans la Chaine de connexion le nom de notre serveur.

image

Une fois que les informations générales ont été indiquées, nous devons rentrer les informations d’identification afin que notre rapport puisse accéder aux données de nos bases de données. Nous choisissons un utilisateur qui a les droits suffisamment élevés pour pouvoir se connecter au serveur de base de données.

Une fois ces informations entrées nous pouvons poursuivre en cliquant sur OK.

1

Notre source de données apparait ensuite dans le dossier Sources de données :

image

Création de notre Dataset

Une fois notre source de données nous devons créer un dataset. Un dataset est un ensemble de données stockées en mémoire. Ainsi, lorsque nous allons exécuter notre rapport, le jeu de résultat stockées en mémoire de notre requête sera affiché.

Enfin, chaque dataset est associé à une source de données.

Pour créer un dataset, nous cliquons droit sur notre Source de données DS_JELAVSQL puis cliquons sur Ajouter un dataset…

image

La fenêtre de propriété du dataset apparait.

Nous remplissons les champs Nom, Source de données et Requête.

Notre requête définira les propriétés et les valeurs de notre rapport. Dans cette exemple, nous voulions récolter les informations sur les propriétés d’un serveur de base de données.

image

Une fois que les champs ont été complétés nous validons l’opération en appuyant sur le bouton OK.

Notre dataset apparait ensuite dans la liste des datasets disponibles au niveau du dossier Datasets.

image

 

Conception de notre rapport

Nous avons notre source de données, notre dataset, il nous manque plus que la visualisation de notre rapport.

Nous commençons par créer un tableau vide. Nous cliquons sur Table puis sur Insérer un tableau pour faire apparaitre un tableau vide sur notre page vierge.

image

Nous remplissons ensuite notre tableau, en glissant-déposant les objets de notre dataset dans les cellules de notre tableau. Nous donnons également un titre à notre rapport afin de préciser quel type d’information il nous renvoie.

image

Une fois que les cellules on était rempli par nos objets, nous pouvons tester notre rapport.

 

Vérification de la conception

Pour vérifier que notre rapport fonctionne, nous cliquons sur Exécuter afin de l’afficher.

image

Le rendu de notre rapport avec les résultats de notre requête définit dans le dataset :

image

 

Conclusion

Il est très simple avec Report Builder 3.0 de créer des rapports. Grace à ce tutorial nous sommes à présent capable de créer un nombre infini de rapports (suivant la requête écrite dans le dataset) qui peuvent dans beaucoup de situations nous être très utile, simplifier notre travail et nous faire gagner du temps .

SQL Server – Script Table Row Count in a Database

Ce script très utile pour des travaux d’inventaire ou de statistiques, permet de compter le nombre de lignes que disposent les tables d’une base de données :

USE [DB]
GO
SELECT OBJECT_NAME(OBJECT_ID) TableName, st.row_count
FROM sys.dm_db_partition_stats st
WHERE index_id < 2
ORDER BY st.row_count DESC
GO

SQL Server 2008 R2 – Erreur 7399 lors de la liaison d’un serveur SQL local à un serveur SQL distant

Problème :

Lors de la liaison d’un serveur SQL à un autre le message d’erreur suivant s’affiche" :

3_thumb2

Le fournisseur OLE DB “SQLNCLI10” du serveur lié “xxx” a rapporté une erreur. Echec de l’authentification.

Impossible d’initialiser l’objet de la source de données du fournisseur OLE DB “SQLNCLI10” du serveur lié “xxx”

Le fournisseur OLE DB “SQLNCLI10” du serveur lié “xxx” a retourné le message “Spécification d’autorisation non valide”. (Microsoft SQL Server, Erreur : 7399)

Cause :

Les principales causes sont les suivantes :

  • Le problème peut être lié au réseau, par exemple vouloir lié deux serveurs qui sont dans deux VLANs différents.
  • Il peut s’agir également d’un problème de configuration au niveau de l’authentification.
    Résolution :

Nous commençons par vérifier si les serveurs arrivent à communiquer entre eux en les pingant afin d’écarter un problème qui pourrait être lié au réseau. Une fois ce problème résolue, nous pouvons passer à la liaison de nos serveurs.

    Nous poursuivons ensuite par la configuration de la liaison entre les serveurs. Nous naviguons jusqu’au dossier Objets serveur du volet droit de navigation puis faisons un clic-droit sur Serveurs liés afin de commencer notre configuration.
    6_thumb
    Nous entrons le nom du serveur SQL que nous voulons lier et nous choisissons SQL Serveur comme type de serveur :

7_thumb4

Nous poursuivons avec l’onglet Sécurité, ou nous définissons un utilisateur qui appartient au serveur que nous voulons lier pour faire notre mappage de connexions entre les deux serveurs.

Enfin nous choisissons le contexte de sécurité “Seront effectuées dans le contexte de sécurité de la connexion actuelle” de notre liste puis validons la configuration en cliquant sur OK.

2_thumb11

Nous avons désormais lié notre serveur SQL local à notre serveur SQL distant tout en assurant la sécurité de notre environnement.

Sharepoint 2013 – Cannot connect to database master at SQL Server

Problème :

Lors du lancement de l'assistant de configuration de Sharepoint 2013, une erreur de connexion se produit sur la page de configuration des paramètres de la base de données de Sharepoint : “Cannot connect to database master at SQL Server…

image

clip_image001

Cause :

Les causes sont multiples. Il peut s’agir :

  1. D’un problème de pare-feu qui bloque le trafic entrant sur le serveur SQL sur le port 1433 ou tous les trafics entrants.
  2. De l’utilisateur spécifié pour la configuration n’a pas assez de permissions pour configurer notre ferme.
  3. D’un problème au niveau des paramètres de connexion de SQL Server avec le protocole TCP/IP qui est désactivé.
  4. Du service SQL Server Browser qui est désactivé.

    Résolution :
  • Dans le cas où il s’agit d’un problème de pare-feu

Nous devons ajouter une nouvelle règle aux pare-feu Windows autorisant le trafic entrant sur le serveur SQL.

Nous lançons le Windows Firewall with Advanced Security puis cliquez droit sur Inbound Rules pour créer une nouvelle règle :

image

Nous choisissons la règle qui concerne un port puis passez à la page suivante :

image

Cette règle s’applique sur le port 1433 en TCP :

image

Elle autorise les connexions entrantes vers le serveur SQL :

image

Et s’applique sur l’ensemble du domaine :

image

image

 

  • Dans le cas ou il s’agit d’un problème de droits insuffisants pour l’utilisateur
    Pour résoudre le problème lié à l’utilisateur, il faut lui attribuer les roles dbcreator et securityadmin sur le serveur SQL.

Nous vérifions que notre utilisateur a bien ces droits, si ce n’est pas le cas, nous les lui attribuions.

Lancez le SQL Server Management Studio, nous développons le dossier Security puis double-cliquons sur l’utilisateur en question pour accéder à ses propriétés. Nous naviguons jusqu’à l’onglet Server Roles et cochons dbcreator et securityadmin si ce n’est pas déjà fait puis validons l’opération en appuyant sur OK :

image

 

  • Dans le cas ou il s’agit d’un problème au niveau des paramètres de connexion de SQL Server

Nous lançons le SQL Server Configuration Manager puis nous naviguons dans le volet de droite et développons le menu SQL Native CLient 11.0 Configuration pour aller sur le Client Protocols.

Nous vérifions que notre protocole TCP/IP est bien activé. Si ce n’est pas le cas nous l’activons.

image

 

  • Dans le cas ou si s’agit d’un problème du service SQL Browser qui est désactivé
    Nous lançons le SQL Server Configuration Manager puis naviguons jusqu’aux services SQL “SQL Server Services. Nous vérifions l’état du service SQL Server Browser et voyons que le service est désactivé et arreté :

image

Nous commençons par changer le mode de démarrage du service en Manual afin de pouvoir activé le service :

image

Puis nous démarrons le service SQL Server Browser :

image

image