Articles

les différentes méthodes pour chercher les objets dans SQL Server

Image
La recherche d'objets dans SQL server est une tâche qui consiste à chercher une occurrence (table, procédure stockée, colonne, ou une expression ...) dans tous les objets SQL du serveur ou base de données.

Créer une colonne personnalisée

Image

Autour des jobs SQL Server

Image
Scénario:  Lors d'un projet de migration, j'ai été confronté au problème de pouvoir générer des jobs en masse via management Studio dans le but de les migrer dans un nouvel environnement SQL Server. En plus, on liste différents moyens de manipuler les jobs (depuis Management Studio ou via script) Solution :  La solution est d'appuyer sur la touche F7 ,on pourra sélectionner plusieurs jobs et ainsi générer le script par un clic droit 'Script Job as '. Démarrer/Arrêter un job Arrêter un job (ou plusieurs via script uniquement) USE msdb GO                                                                   OU  EXEC dbo.sp_stop_job N'The name of the job' Démarrer un job (ou plusieurs via script uniquement) USE msdb GO               ...

Comment vérifier l'existence d'un fichier avant d'exécuter des tâches

Image
Scénario :  Souvent on est amené à vérifier l'existence d'un fichier dans un répertoire avant de lancer l'exécution les tâches restantes dans un package ou pas. Solution :  Pour ce faire, on créée 3 variables dans le package : Folder_Path: nom du répertoire dans lequel on vérifie l’existence du fichier File_Path: pour le chemin absolu du ficher (concaténation du chemin du répertoire et 'MonFichier.txt') File_Exist_Flg : flag qui égal à "1" si le fichier existe, sinon "0" Glisser le composant Script Task et renseigner les variables comme ci-dessous : Le script en C# teste si le fichier existe ou pas, et affecte la bonne valeur à la variable  File_Exist_Flg: On ajoute la contrainte de précédence,  Si le fichier existe, on poursuit l'exécution du flux de données qui suit, sinon, on l'exécute pas.

Erreur process cube : logon failure unknown username or bad password

Image
Scénario:  Lors du process d'un cube ou une dimension, on a l'erreur de type (voir ci-dessous) : 'logon failure unknown username or bad password' Cela provient des informations erronées d'authentification l ors de la création d'un objet source de données dans un modèle Analysis Services, il s'agit de l'un des paramètres que vous devez configurer : l'option d'emprunt d'identité ( Impersonation Information ). Solution:  Pour résoudre ce problème on procède par ligne de commande, où XXXX représente le compte utilisateur : Net user XXXX /active:yes Ou bien on renseigne à nouveau le compte Windows adéquat : Origine erreur : Après plusieurs tentatives de process (d'échecs d'authentification), le compte est bloqué ! Afin de résoudre ce problème, on procède  comme suit en ré-activant le compte :

Déploiment d'un cube sur plusieurs serveurs

Image
Scénario :  Déployer le cube sur plusieurs serveurs Solution :  Il existe 2 méthodes pour déployer un cube sur SQL Server Management Studio : Faire un Backup, -->  copier le fichier vers le nouvel environnement --> faire un restore depuis ce fichier Générer un script XMLA et l'exécuter directement sur le serveur cible   Méthode 1 Copiez le fichier de sauvegarde créé dans le nouvel environnement (attention aux droits d’accès ). Lancer SQL Server Management Studio dans le nouvel environnement et connectez-vous au serveur Analysis Services cible Créer une nouvelle base de données dans le serveur avec un nom pertinent (généralement concernant l'ancien nom de cube). Clic droit sur le dossier Bases de données et sélectionnez Restaurer Spécifier le fichier de sauvegarde, la base de données à laquelle il sera écrit, et cochez la case à cocher Autoriser le remplissage de la base de données.  Méthode 2 Ouvrez SQL Serv...

Comment calculer YTD, MTD en MDX - PeriodsToDate

Un besoin récurrent dans les rapports de Business Intelligence est de comparer les mesures à fréquence journalière ou mensuelle (chiffre d’affaire à titre d’exemple) par rapport aux mesures cumulées jusqu’à une date donnée (jour ou mois). Pour cette raison, on utilise fréquemment les notions de YTD (Year-to-Date) et MTD (month-to-Date). Plus souvent les mesures citées précédemment sont calculées dans le cube, d’autres mesures peuvent être rajoutées par ex. QTD (Qurter-to-Date) et WTD (Week-to-Date) Donc, comment calcule-t-on ces mesures en MDX ?  Pour ce faire, il existe des fonctions, à savoir : 1. YTD (member_expression) : est une fonction qui renvoie un ensemble de membres du même parent (sibling), cette liste contient en première position le premier frère et en dernière position le membre spécifié : member_expression. Ex. La fonction utilisée toute seule : YTD([Time].[CalendarMonth].[Month Id].&[201606]) renvoie la liste suivante : J...

Générer une liste de valeurs arbitraires (format date)

DECLARE @start date = '20150525' ; DECLARE @end date = getdate() ; WITH dates AS (     SELECT   CONVERT(VARCHAR(10), @start, 112)  AS date     UNION ALL     SELECT   CONVERT(VARCHAR(10), dateadd(DD,1,date) , 112)     FROM  dates     WHERE date < @end ) SELECT * FROM dates OPTION (MAXRECURSION 0);

Sécurité SQL Server : Comment créer un utilisateur, le mapper vers une BD et lui assigner des rôles via un script

Pour un utilisateur SQL : /* Ajout d'un compte SQL  à une base de données */ Use master ; Go  IF NOT EXISTS( select * from sys.sql_logins where name='MyLogin')  BEGIN CREATE LOGIN MyLogin with password= XXXXXX, check_policy = off; END GO Use Mydatabase; Go EXEC sp_change_users_login 'Auto_Fix', 'MyLogin' Pour un compte AD : Use master ; Go  IF NOT EXISTS( select * from sys.server_principals where name='Domain\User')  BEGIN CREATE LOGIN [MyLogin] FROM WINDOWS  with  DEFAULT_DATABASE=[MyDatabase]; END GO Use MyDatabase; Go /* Ajout de l'utilisateur [Domain\User] à la base de données */ CREATE USER [Domain\User] FOR LOGIN [MyLogin] ; /* Ajouter le rôle db_owner au compte */ sp_addrolemember 'db_owner', 'Domain\User'

Comment créer une chaîne de connexion

Image
Créez un fichier (.txt. par exemple) et renommer le en  .udl Entrez dans les  propriétés  de ce fichier Sur l'onglet Connection : Renseignez les infos de votre instance SQL Cliquez sur  Test Connection Vous aurez soit un message  d'échec , soit un message de  succès De nouveau, renommer le fichier en .txt qui contiendra la chaîne de connexion

Erreur de renommage d'une base de données

Si on tente de renommer une BD existante, et on obtient l'erreur suivante :  the database could not be exclusively locked to perform the operation ! Lla solution est la suivante : USE [master]; GO ALTER DATABASE Old_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE Old_Name MODIFY NAME = New_Name ALTER DATABASE New_Name SET MULTI_USER

Erreur lors de création d'un projet SSAS tabulaire

Image
Si vous tentez de créer un projet SSAS tabulaire et vous obtenez l'erreur suivante : cannot connect to server localhost . Reason : the workspace database server is not running in tabular mode Cette erreur signifie que votre instance Analysis Services 'localhost' ne fonctionne pas en mode tableau ... et qu'il fonctionne en mode multidimensionnel. La meilleure façon de tester le mode d'installation de la fonctionnalité Analysis Services est de se connecter avec SQL Server Management Studio, on remarquera rapidement que cet outil est configuré comme suit : et si on tente une connexion vers l'instance : localhost\Tabular, on aura un échec. La solution :  est d'nstaller une nouvelle instance de SQL Server Analysis Services avec Mode Tabular par exemple: localhost\Tabular. Ci-dessous quelques étapes : Nouvelle Installation de SQL Server Sélectionner l'outil SSAS Choisir le nom de l'instance Spécifier le mode Ta...

SQL Server Reporting Services (SSRS)

Image
SSRS est la solution Reporting de Microsoft qui permet d'exécuter les rapports depuis un portail web. D'après mon expérience, j'ai été confronté à des problèmes de développement de rapports SSRS, et je décris les différentes manières pour les résoudre ou les contourner : Le rapport est composé d’un tableau dont les cellules sont cliquables. le clic sur une cellule entraîne l'exécution d'un sous-rapport qui permet de remonter les données en mode détail.       Mais : le fait de vouloir plusieurs sous-rappors (un rapport par onglet), n'est possible ! hélas, le clic droit ne marche pas Solution :  Enregistrer le rapport sous format Excel en local. Les cellules sauvegarde les valeurs des paramètres. Lancer le sous-rapport  dans un nouvel onglet est dorénavant possible .

Backup/Restore d'une Base de données

Backup Database : DECLARE @name VARCHAR(50)  -- nom de la base de données DECLARE @path VARCHAR(256) -- chemin du fichier du Backup DECLARE @fileName VARCHAR(256) -- nom du fichier pour le Backup   DECLARE @fileDate VARCHAR(20) -- date du backup DECLARE @SQL NVARCHAR(MAX) -- Renseigner le nom de la base de données à migrer SET @name='Ma_Base' -- Renseigner le répertoire de Backup SET @path = N'C:\mssql\MSSQL.2\MSSQL\Backup\' -- Mettre la base en mode Read_Only pour éviter tout écriture ou mise à jour de la base SET @SQL = 'ALTER DATABASE ' + @name + ' SET READ_ONLY WITH ROLLBACK IMMEDIATE' EXECUTE (@SQL) -- Spécifier le format du nom de fichier SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) SET @fileName = @path + @name + '_backup_' + @fileDate + '_Migration.BAK'  BACKUP DATABASE @name TO DISK=@fileName  WITH  STATS = 10 Restore Database :  -- Renseigner les fichiers physiques et logiques --...

Gestion de sécurité SSRS

Image
SQL Server Reporting services fonctionne avec l'autorisation basé sur le rôle, et un sous-systéme pour attribuer/octroyer/accorder aux utilisateurs/groupes l'accés aux éléments d'un serveur de rapport. chaque utilisateur interagit avec le serveur de rapports dans le contexte d'un rôle qui lui définit ses accés attribués. Reporting services inclut des rôles prédéfinis, qui sont : Content Manager (gestionnaire de contenu) : a la capacité maximale de tout gérer, créer l'arborescence des rapports et les datasources y compris l'attribution de droits à d'autres utilisateurs. Publisher (rôle de publication) a le droit de publier/ajouter des rapports au serveur en plus de la création et gestion des dossiers. Browser (lecteur) a le droit d'exécuter les rapports, voir les dossiers et s'abonner sur des rapports. Report Builder (générateur de rapports)  crée/modifie des rapports dans Report Builder. My report (Mes rapports) a le droit de gérer un espac...

Job exécutant un package en erreur

Image
Job exécutant un package en erreur Le package est en erreur lorsqu’elle est appelée à partir d’une étape de travail de l’agent SQL Server J’ai été confronté récemment à une erreur d’exécution d’un package SSIS, l’erreur obtenue est la suivante : Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available .  Le message d’erreur est claire et précise que le job sql n’est pas en mesure de déchiffrer le mot de passe d’une source de données, toutefois le package fonctionne correctement en dehors de l’agent. Résolution : Soit : Le compte d'utilisateur utilisé pour exécuter le package sous SQL Server Agent diffère de l'auteur du package d'origine. Le compte d'utilisateur n'a pas les autorisations requises pour établir des connexions...