Obtenir l’accès exclusif à une base dans SQL Server

Quel développeur ou administrateur n’a jamais rencontré une base de données récalcitrante dans SQL Server ? En l’occurrence j’avais besoin de restaurer une table en environnement de recette à partir d’une sauvegarde de celle de production. Naturellement, j’utilise SQL Server Management Studio, clic droit sur ma base Tasks > Restore > Database… Je finis la configuration et clique sur OK et là : Exclusive access could not be obtained because the database is in use.

Lire la suite

Exporter des données avec jsPDF dans SharePoint 2013

Récemment, le client me demandait de faire un filtre avec deux critères sur des éléments de liste, puis de pouvoir sélectionner une partie des éléments afin d’en exporter les informations au format PDF.

Comme les données sont de taille raisonnable, je me suis intéressé à jsPDF qui se définit comme une solution côté client en HTML5 pour générer des PDF. A la date d’écriture de l’article, la version 0.9.0rc2 est disponible et propose des options sympathiques :

  • Intégration de texte (font, taille, type, couleur)
  • Intégration des images
  • Intégration de HTML
  • Saut de page
  • Formes géométrique (cercle, ellipse, line, rectangle, triangle)

Je vais repartir des webparts connectées décrites dans l’article précédent pour ajouter la fonctionnalité d’export PDF.

Lire la suite

Webparts connectées

Dans SharePoint, connecter des webparts permet de rendre une webpart consommatrice dépendante de la valeur envoyée par la ou les webparts fournisseuses. Ce mécanisme existe sur certaines webparts de SharePoint – comme les vues de liste – et peut être implémenté sur des webparts personnalisées. Concrètement on peut s’en servir pour créer facilement des filtres ou des interfaces de type master-detail. Pour l’exemple prenons un liste de recette que l’on aimerait filtrer par le type de recette (entrée, plat, dessert).

Lire la suite

Les composants ou concepts graphiques obsolètes

Quand on travaille avec un outil qui permet de faire des sites – SharePoint ou autre – les mêmes composants reviennent fréquemment. Comme dans tous les domaines, il y a des effets de mode. De même qu’il faut oser dire à quelqu’un que son pantalon à patte d’eph en velours est has been, il faut savoir quand conseiller de nouveaux composants. Les carrousels : peu d’utilisateurs attendent que le carrousel tourne pour voir toutes les vignettes.

Lire la suite

Afficher les sites suivis dans le bandeau avec KnockoutJS– 3

J’avais envie de découvrir KnockoutJS (KO) et coder la même fonctionnalité m’a paru être un bon exercice pratique. Première différence : comme KO préfère le JSON, j’ai fait appel aux fonctionnalités de suivi avec des appels REST plutôt que par le ClientContext. Deuxième différence : l’utilisation de MVVM (Modèle-Vue-VueModèle) propose un confort certains à la lecture et la maintenance du code. Dans ce cadre d’utilisation et vu mes connaissances, KO m’a bien plu.

Lire la suite

Opération de masse sur une liste : SPWeb.ProcessBatchData

Dans le cadre d’un projet, j’ai besoin de mettre à jour une liste de référence de manière quotidienne à partir d’une source extérieure (non accessible par BCS). Nous parlons de quelques milliers éléments et ma source de données renvoie tout, sans possibilité de faire de l’incrémentiel. Premier réflexe, utiliser le classique modèle objet : //delete old data int _nbItems = _cmdbList.Items.Count; for (int idx = 0; idx < _nbItems; idx++) { _cmdbList.

Lire la suite

Mail facile sur un environnement de développement : smtp4dev

smtp4dev est un outil très pratique quand on veut tester les envois de mail dans un environnement de dev. Pour tester des workflows avec assignation de tache ou encore l’envoi de digest, cela devient rapidement indispensable. Configuration de l’envoi de mail de la ferme Configurer la ferme pour que le serveur SMTP soit le serveur et configurer les adresses mails sortantes et replyTo. $SMTPServer = $env:computername $EmailAddress = "farm@" + $SMTPServer $ReplyToEmail = "replyTo@" + $SMTPServer Try { Write-Host "Configuring Outgoing Email: " -NoNewLine $loadasm = [System.

Lire la suite

Gestion du cache distribué dans SharePoint 2013

La gestion du cache distribué compte parmi l’un des points les plus laborieux de l’administration SharePoint 2013. Premièrement il est géré par AppFabric et non SharePoint. Deuxièmement il est administrable uniquement par PowerShell. Troisièmement s’il manque de mémoire, plusieurs services de la ferme fonctionneront de manière erratique, voire pas du tout.

Je me permets ces commentaires car il m’a donné du fil à retordre lors de l’installation et configuration des fermes. Et dernièrement, on s’est retrouvé 2 fois de suite avec un newsfeed vide au petit matin en production. D’ailleurs l’avertissement sur la technet est explicite :

Le service de cache distribué peut se retrouver dans un état inopérationnel ou irrécupérable si vous ne suivez pas les procédures répertoriées dans cet article. Dans des situations extrêmes, vous pourriez avoir à recréer la batterie de serveurs. Le cache distribué dépend du prérequis Windows Server AppFabric. N’administrez pas le Service de mise en cache AppFabric depuis la fenêtre Services des Outils d’administration du Panneau de configuration. N’utilisez pas les applications dans le dossier nommé AppFabric pour Windows Server dans le menu Démarrer.

ou encore :

L’arrêt du cache engendre une perte de données partielle. Le cache de flux dépend du service de cache distribué. Les balises et les activités de document sont enregistrées uniquement dans le cache de flux ; elles ne sont pas persistantes dans les bases de données de contenu. Lorsque le service de cache distribué est arrêté, les balises et les activités de document sont perdues. […] Une manière de conserver les balises et les activités de document consiste à utiliser la méthode décrite dans la section Effectuer un arrêt approprié du service de cache distribué plus loin dans cet article. Lorsque la méthode de l’arrêt approprié du service de cache distribué est utilisée, toutes les données du cache sont déplacées d’un serveur vers un autre avant l’arrêt du service de cache distribué.

La cache distribué peut être hébergé soit sur un seul serveur soit sur un cluster de cache et l’administration sera différente dans les deux cas.

Lire la suite

Restaurer une collection de site supprimée

La suppression d’une collection de site résulte généralement d’une mûre réflexion. Mais il peut aussi s’agir d’une erreur et là – évidemment – c’est la panique. Avec le Service Pack 1 de SharePoint 2010 sont apparues des commandes PowerShell pour rattraper ce genre d’erreur. Heureusement je n’ai eu besoin de m’en servir qu’avec la version 2013. Get-SPDeletedSite : lister les collections de site supprimées Remove-SPDeletedSite : supprimer définitivement une collection de site Restore-SPDeletedSite : restaurer une collection de site supprimée <td> Restore-SPDeletedSite_.

Lire la suite

Service sandbox trop occupé

Quelle drôle de message que le suivant quand on souhaite activer une solution sandbox sous SharePoint 2010 : The sandboxed code execution request was refused because the Sandboxed Code Host Service was too busy to handle the request Une recherche sur internet permet de trouver pleins de solutions. Une entrée sur SharePoint Dev Blog liste plusieurs sources possibles. L’une d’elle vient d’une clé de registre dont la valeur est erronée.

Lire la suite