PI Services

Le blog des collaborateurs de PI Services

Installation d'une instance sql server 2017 sur linux (ubuntu)

Introduction

Dans mon blog précédent  , j'ai expliqué comment lancer une instance SQL 2017 installée sur une image docker (linux) depuis Docker installé sous Windows. Dans ce blog, je vais détailler l'installation d'une instance SQL Server 2017 sur Linux. Microsoft SQL Server 2017 supporte les versions d'OS suivants:

  • Red Hat Enterprise Linux (7.3 or 7.4)
  • SUSE Linux Enterprise Server (v12 SP2)
  • Ubuntu (16.04)
  • Docker Engine (1.8+)

Attention: l'installation de sql server sur linux nécessite de 2 Gb de ram minimum et de la version de NFS 4.2 ou supérieur.

Installation de SQL Server 2017

Mise à jour de l'os

Avant de démarrer l'installation de SQL Server 2017, assurez vous que Ubuntu est bien à jour en exécutant les deux commandes suivantes:

sudo apt-get update
sudo apt-get upgrade

Installation de SQL Server 2017

Importer les clés GDP:

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

Enregistrer la repository Ubuntu de Microsoft SQL Server:

sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"

Exécuter les commandes suivantes pour l'installation de SQL Server 2017:

sudo apt-get update
sudo apt-get install -y mssql-server

A la fin de l'installation, exécuter la commande suivante pour configurer SQL Server:

sudo /opt/mssql/bin/mssql-conf setup

Entrer 1

Accepter les conditions d'utilisations et entrer le mot de passe SA.

L'installation et la configuration de SQL Server 2017 est finie:

Vérification du service SQL Server

Lancer la commande suivante:

systemctl status mssql-server

On constate que le service est bien démarré:

Tests

Utiliser SSMS pour se connecter à ce serveur:

 Exécuter la commande sql ci-dessus pour voir la version de SQL server qui a été installée.

 

SCVMM 2012 Computer already exist lors d’un Scale-Out de service

Vous souhaitez déployer une seconde instance de votre service avec un nom prédéfinit mais lorsque vous vous apprêtez à déployer votre VM, un message d’erreur apparait :

image

Cependant, dans votre Cloud privé, aucune machine virtuelle de ce nom n’est présente.

Pour remédier à ce problème, il est nécessaire d’accéder à la base de donnée VMM sur le serveur SQL et de supprimer l’entrée présente avec ce nom de VM.

Connecter vous sur votre base de donnée VMM

image

Aller sur la table tbl_WLC_VMDeploymentConfig

image

Editer la table et rechercher la colonne ComputerName et identifier votre nom de VM posant problème.

image

Supprimer la ligne du tableau.

image

Le problème de la VM déjà existante lors du Scale-Out dans VMM n’apparait plus. La VM peut être déployée.

image

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

SQL Server : Erreur 4861 lors d’une opération BULK INSERT

Introduction

Dans le cadre d’une opération d’insertion en batch en utilisant la commande BULK INSERT sur un serveur de base de données SQL Server on peut être confronté à une erreur système d’exploitation indiquant qu’un problème d’ouverture du fichier source à cause d’un Accès refusé bloque l’exécution de l’opération.

image

image

Il faudra noter que l’exécution de la même requête sur le serveur SQL lui même ne génère par cette erreur mais s’exécutera sans aucun problème.  

Causes

Le fait que la requête s’exécute convenablement depuis le serveur de base de données lui et pas depuis une autre machine ou un poste client, exclu automatiquement le fait que le compte avec lequel la requête est lancée ne dispose pas des privilèges nécessaires pour la réalisation de cette opération.

Malgré tout, c’est bien un problème de sécurité qui est exposé par ce message d’erreur, en effet et vu que nous somme dans un contexte où la requête est lancée depuis un poste distant et qui procèdera à l'a lecture d’un fichier depuis un partage sur un autre serveur et qui fera appel à la procédure BULK INSERT sur le serveur de base de données, ce mécanisme et dans une infrastructure Windows implique le recourt à l’authentification Kerberos et bien sûr aux prérequis relatif à cette technologie.   

Résolution

Pour pouvoir exécuter la requête sans problème il existe deux méthodes:

Méthode 1

La première méthode est simple et elle consiste tout simplement à utiliser un compte SQL pour se connecter au serveur de base de données au lieu d’un compte Windows et bien sûre s’assurer que le compte de service du serveur de bases de données SQL Server accède au fichiers source, le login SQL devra bien sûr avoir le droit bulkadmin au niveau du serveur SQL.

Méthode 2

Configurer le serveur de base de données et le compte de service SQL pour permettre ce genre d’opération en :

Configurer le compte de service SQL

En ajoutant  le SPN MSSQLSvc au compte de service utilisé pour le démarrage du service SQL comme suit :

Si c’est une instance par défaut exécuter :

SETSPN –A MSSQLSvc/<fqdn du serveur SQL> <Nom du Compte de Service>

SETSPN –A MSSQLSvc/<fqdn du serveur SQL>:1433 <Nom du Compte de Service>

Si c’est une instance nommée:

SETSPN –A MSSQLSvc/<fqdn du serveur SQL>:<Nom de l’instance>

SETSPN –A MSSQLSvc/<fqdn du serveur SQL>:<Port d’écoute de l’instance>

Approuver le compte de service pour la délégation au niveau de l'AD.

image 

Configuration du compte machine du serveur de base de données

Approuver le compte machine du serveur de base de données pour la délégation au niveau de l’AD.

image

SQL Server 2008 R2 : Le nouveau né HP BDW !

 

Après le HP Business Decision Appliance et le HP Enterprise Data Wharehouse Appliance, le 6 Juin 2011 MS et HP viennent d’annoncer la sortie de HP Business Data Wharehouse Appliance.

Le nouveau né est une Appliance 4U préconfigurée et optimisée pour supporter des charges de travail Data Wharehouse pour des solutions atteignant les 5 TB de données.

Selon l’environnement du client l’Appliance peut être déployé et prêt à l’emploi en 10 minutes, basé sur l’architecture Fast Track 3.0 et conçu pour des performances maximales.

L’Appliance est constitué d’un seul serveur DL370 G6 configuré comme suit :

  • 96 GB de mémoire vive
  • 2 CPU Intel Xeon X5675 
  • 2 disques SAS de 300 Gb en RAID 1 pour Windows Server 2008 R2 Enterprise Edition qui est déjà préinstallé et licencié 
  • 22 disques SAS de 600 Gb pour le stockage
  • SQL Server 2008 R2 préinstallé mais sans licence

La procédure d’installation a été simplifiée au maximum, de telle sorte qu’elle est réduite à la réponse à quatre questions :

1- Quel est le mot de passe de l’administrateur?

2- Quel domaine l’Appliance doit rejoindre ?

3- Quel compte puis-je utiliser pour joindre le domaine ?

4- Quel compte AD devra joindre le groupe d’administrateurs locaux ?

 

Si vous voulez voir l'intérieur de la "bête" , cliquer ici

SQL Server – Changer l’emplacement par défaut des bases de données utilisateur et systèmes

L’emplacement par défaut des bases de données SQL Server est généralement <Dossier d'installation>\MSSQL.1\MSSQL\Data

SQL Server nous permet de modifier cet emplacement par défaut sauf qu’il faut faire attention que la procédure n’est pas la même pour les bases de données utilisateurs et les bases de données système.

Changement de l’emplacement par défaut des bases utilisateur

Pour modifier l’emplacement par défaut des base de donnés utilisateurs juste après l’installation de SQL Server :

- Ouvrir SQL Server Management Studio

- Avec le bouton droit de la souri cliquer sur Serveur | Propriétés

- Sélectionner la page Paramètres de base de données

ServerProp

- Au niveau de la section Emplacement de la base de données par défaut saisir les nouveau emplacements des fichiers de données et des fichiers Log

dbLocation 

Pour réaliser cette opération on peut aussi exécuter le code T-SQL suivant :

USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'E:\UserDB'
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'E:\UserLOG'
GO

Déplacement des bases de données systèmes

 

La base de données MASTER

  1. Changer les paramètres de démarrage de SQL Server en utilisant SQL Server Configuration Manager (Gestionnaire de configuration SQL Server)

configSQL

  1. Changer le chemin du fichier master.mdf en précisant le nouveau chemin devant la commutateur –d
  2. Changer  le chemin du fichier mastlog.ldf en précisant le nouveau chemin devant le commutateur –l
  3. Arrêter  le service SQL Server en exécutant NET STOP MSSQLSERVER (pour une instance nommée utiliser  NET STOP MSSQL$<Nom de l’instance>)
  4. Déplacer les fichier vers le nouvel emplacement
  5. Démarrer le service SQL Server en exécutant NET START MSSQLSERVER

 

Les bases de données MSDB et MODEL

Cette procédure s’applique à la base de données MSDB et MODEL :

Les scripts mentionnés concernent la base de données MSDB et il suffit de les adapter pour MODEL.

  • Démarrer un invite de commande (cmd)
  • Exécuter NET STOP MSSQLSERVER
  • Exécuter NET START MSSQLSERVER /c /m /T3608
  • Exécuter l’utilitaire SQLCMD (il faut s’assurer que tous les autres services SQL sont arrêtés et qu’aucune application ne tente de se connecter au serveur )
  • Au niveau de l’invite SQLCMD exécuter le script T-SQL Suivant :

      USE master
      Go
      sp_detach_db ‘msdb’
      Go

  • Déplacer  les fichiers msdbdata.mdf et msdglog.ldf dans le nouvel emplacement
  • Exécuter NET STOP MSSQLSERVER
  • Exécuter  NET START MSSQLSERVER
  • Lancer le script T-SQL suivant

      USE master
      Go
      sp_attach _db ‘msdb’ , ‘<nouvel emplacement>\msdbdata.mdf’, ‘<nouvel emplacement>\msdblog.ldf’
      Go

      La base de données TEMPDB

  • Exécuter le script T-SQL suivant :

USE master

GO

ALTER DATABASE tempdb

MODIFY FILE (NAME = 'tempdev',FILENAME = '<new location>\tempdb.mdf')

GO

ALTER DATABASE tempdb

MODIFY FILE (NAME = 'templog',FILENAME = '<new location>\templog.ldf')

GO

  • Exécuter NET STOP MSSQLSERVER
  • Déplacer les fichiers tempdb.mdf et templog.ldf au nouvel emplacement
  • Exécuter NET START MSSQLSERVER

    SQL Server – Erreur d’activation Service Broker dans MSDB

    Suite à la restauration de la base de données MSDB il se peut que le Service Broker ne s’active pas et ainsi on ne pourra plus utiliser certaines fonctionnalités comme la messagerie de base de données qui permet la notification des opérateurs en cas d’échec ou de réussite des travaux.

    Pour résoudre ce problème il suffit de créer un nouveau Service Broker au niveau de la base de données MSDB et de l’activer pour cela il faut exécuter les trois lot T-SQL suivants :

    ALTER DATABASE [MSDB] SET NEW_BROKER WITH ROLLBACK IMMEDIATE

    Go

    ALTER DATABASE [MSDB] SET NEW_BROKER

    Go

    ALTER DATABASE [MSDB] SET ENABLE_BROKER

    Go