Avec les utilitaires OSQL ou ISQL, il est possible d’exécuter des script SQL en lignes de commande :
osql /U mon_user /P mon_password /S mon_serveur /d ma_bdd /n /i mon_fichier_de_script.sql
Cependant, si le fichier mon_fichier_de_script.sql contient des caractères spéciaux, ça risque de planter.
En effet, l’option système « Automatic ANSI to OEM conversion » est sans doute activée. De plus, il faut utiliser ISQL.
Il faut donc modifier cette clé qui se trouve en base de registre.
Pour faire propre, voici ce qu’il faut ajouter dans votre .bat pour que tout aille mieux :
–> Sous Windows 2003, on va mettre la valeur de la clé à OFF si elle était à ON :
FOR /F "TOKENS=3 DELIMS= " %%A IN (’REG QUERY HKLMSOFTWAREMicrosoftMSSQLServerClientDB-Lib /v AutoAnsiToOem’) DO SET AUTOANSITOOEM=%%A
IF /i "%AUTOANSITOOEM%" EQU "ON" (REG ADD HKLMSOFTWAREMicrosoftMSSQLServerClientDB-Lib /v AutoAnsiToOem /t REG_SZ /d OFF /f)
–> Sous Windows XP, la même chose, sauf que la boucle FOR renvoie 4 entrée, il faut choisir la bonne (SKIP=3) :
FOR /F "SKIP=3 TOKENS=3 DELIMS= " %%A IN (’REG QUERY HKLMSOFTWAREMicrosoftMSSQLServerClientDB-Lib /v AutoAnsiToOem’) DO SET AUTOANSITOOEM=%%A
IF /i "%AUTOANSITOOEM%" EQU "ON" (REG ADD HKLMSOFTWAREMicrosoftMSSQLServerClientDB-Lib /v AutoAnsiToOem /t REG_SZ /d OFF /f)
Ensuite, il faut inclure la ou les commandes ISQL UNIQUEMENT (sinon, simplement remplacer OSQL par ISQL) :
isql /U mon_user /P mon_password /S mon_serveur /d ma_bdd /n /i mon_fichier_de_script.sql
Et pour finir, remettre en place la clé de la base de registre :
IF /i "%AUTOANSITOOEM%" EQU "ON" (REG ADD HKLMSOFTWAREMicrosoftMSSQLServerClientDB-Lib /v AutoAnsiToOem /t REG_SZ /d ON /f)
Notez que l’option « Automatic ANSI to OEM conversion » est directement modifiable via l’outil cliconfg.exe.
Article adapté de cette page en anglais
XPath : Faire un uppercase sur une chaine de caractères
C’est un peu grossier, mais pratique, notamment dans les formulaires Infopath :
translate("ma_chaine", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
Pour mettre en majuscule seulement la première lettre :
concat(translate(substring("ma_chaine", 1, 1), "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), substring("ma_chaine", 2))
MOSS 2007 : Comment modifier une liste SharePoint via un WebService sous SSIS ?
Tutoriel.
SOMMAIRE
- 1. INTRODUCTION
- 2. VERIFIER L’EXISTENCE DU WEB SERVICE
- 3. CREER LA DLL DE PROXY
- 4. EXEMPLE DE PROJET SOUS SSIS
1. INTRODUCTION
1.1. Description
Voici une manière rapide de mettre à jour des métadonnées d’éléments d’une liste SharePoint grâce aux web services natifs de l’application. Ces web services seront appelés à partir de Microsoft SQL Server 2005 Integration Services (SSIS).
1.2. Pré-requis
Les logiciels suivants doivent être installés sur la machine :
- WSS 3.0 et MOSS 2007
- Visual Studio 2005
- SQL Server 2005
2. VERIFIER L’EXISTENCE DU WEB SERVICE
Sous IE, taper l’URL suivante : http://serveur:port/_vti_bin/lists.asmx
» serveur:port » étant un site SharePoint dans lequel vous souhaitez attaquer les listes.
L’écran suivant devrait s’afficher avec la liste complète des opérations que propose le Web Service :
3. CREER LA DLL DE PROXY
Une DLL de proxy fournit toutes les classes qui permettent de communiquer avec le Web Service. Il serait possible de développer soi-même ces classes, mais ce serait inutile, car la création de cette DLL est très simple. Elle nous permet de faire abstraction, entre autres, de l’utilisation du protocole SOAP et du formatage des requêtes à envoyer au serveur.
Une DLL de proxy = Un Web Service.
NB : SSIS est capable de communiquer directement avec des Web Services grâce à la » Web Service Task « . Cependant, le Web Service List.asmx contient des paramètres de type complex qui ne sont pas gérés par SSIS. D’où la création de cette DLL qui sera fournie à SSIS.
3.1. Création de la DLL
Ouvrir Visual Studio 2005, même une version Express gratuite suffit. Ici nous utiliserons Visual C# 2005 Express Edition.
Ajout d’une référence vers le Web Service :
- Faire Fichier > Nouveau Projet > Class Library
- Donner un nom du genre » MOSSWebService » et cliquer sur OK.
- Dans l’explorateur de solution, faites un clic-droit sur » Références » et cliquer sur » Ajouter une référence Web » :
- Dans la fenêtre qui apparait, renseigner l’URL du Web Service (la page comme vue précédemment devrait s’afficher en aperçu), et donner un nom à la référence (ici, MOSSWebService_Lists) :
- Cliquer sur » Ajouter la référence « .
- NB : A partir de ce moment là, Visual Studio va générer automatiquement tout le code adapté au Web Service en utilisant WSDL.exe (qu’on aurait pu aussi utiliser » à la main » directement en ligne de commande).
- Sauvegarder la solution dans un répertoire quelconque.
Avant de compiler notre solution, il va falloir signer l’assembly :
- Faire un clic-droit sur le projet (MOSSWebService), et faites » Propriétés « .
- Cliquer sur l’onglet » Signature « .
- Cliquer sur » Signer l’assembly «
- Dans la liste déroulante en dessous, faire » <nouveau�> «
- Une fenêtre surgit, donner un nom au fichier de clé (ici, MOSSWebService_Lists)
- Décocher la case » Protéger mon fichier par un mot de passe «
- Faire OK, vous devriez obtenir cet écran :
- Faites CTRL + S avant de cliquer-droit sur la solution et cliquer sur » Générer la solution « .
3.2. Enregistrement dans le GAC
- Copier la DLL, présente dans » Repertoire_de_la_solution / MOSSWebService / bin / Release / « , vers le répertoire » C: WINDOWS Microsoft.NET Framework v2.0.xxxxx « .
- Ouvrir une fenêtre de commandes MSDOS.
- Aller dans le répertoire » C:WINDOWSMicrosoft.NETFrameworkv2.0.xxxxx « .
- Taper » gacutil –i MOSSWebService.dll » et faites ENTREE.
- L’assembly et ajoutée dans le cache et est disponible pour SSIS.
-
NB : Certains diront qu’il suffit de faire un glisser-déposer de la DLL pour la placer dans le GAC. A cela je réponds : « C’est en faisant n’importe quoi qu’on devient n’importe qui » (L.Briand).
4. EXEMPLE DE PROJET SOUS SSIS
- Lancer SQL Server Business Intelligence Development Studio, et faire » Fichier > Nouveau > Projet » puis sélectionner » Project Integration Service » et faire OK.
- Faire un » Glisser – déposer » d’une tâche de script de la boite à outils vers la page Flux de contrôle :
- Double-cliquer sur la tache de script.
- Une fenêtre d’édition de la tâche s’ouvre. Cliquer sur » Script » à gauche, puis sur le bouton » Créer un script » en bas :
- Une nouvelle fenêtre Visual Studio s’ouvre, avec du code source prédéfini.
- Dans l’ » explorateur de projet » (ici à gauche), faire un clic-droit sur » Références » et cliquer sur » Ajouter une référence » :
- Choisir la nouvelle DLL fraichement créée (MOSSWebService.dll), faire » Ajouter » puis » OK « .
- Faire de même pour les deux DLL suivantes :
- System.XML.dll
- System.Web.Services.dll
- Modifier le code comme suit :
- Ajouter deux lignes d’import :
Imports MOSSWebService
Imports MOSSWebService.MOSSWebService_Lists
- Dans le corps de la fonction Main(), ajouter le code suivant :
- Ajouter deux lignes d’import :
-
Public Sub Main() Try ’’’ URL du Web Service Dim sUrl As String = "http://URL/_vti_bin/lists.asmx" ’’’ Objet représentant le Web Service Dim oListWS As New Lists oListWS.Credentials = System.Net.CredentialCache.DefaultCredentials oListWS.Url = sUrl ’’’ Génération de la requête CAML de mise à jour de la liste Dim xDoc As New System.Xml.XmlDocument Dim xBatch As System.Xml.XmlElement = xDoc.CreateElement("Batch") xBatch.SetAttribute("OnError", "Return") ’’’ Corps de la requête CAML : Cette requête va simplement changer la metadonnée "Title" ’’’ de l’item d’identifiant 20. Dim sBatch As String = "" sBatch += "20" sBatch += "Nouveau Titre" sBatch += "" xBatch.InnerXml = sBatch ’’’ Lancement de la fonction de MAJ de la liste "Bibliothèque des sinistres". Dim xReturn As System.Xml.XmlNode = oListWS.UpdateListItems("Bibliothèque des sinistres", xBatch) ’’’ Affichage de la réponse renvoyée par le serveur. Dts.Events.FireInformation(1, "", xReturn.InnerXml, "", 0, False) ’’’ La tâche s’est bien passée Dts.TaskResult = Dts.Results.Success Catch Ex As Exception ’’’ La tâche a échoué Dts.TaskResult = Dts.Results.Failure End Try End Sub
- Faire CTRL + S, et fermer la fenêtre Visual Studio.
- De retour sur le SSIS, faire F5 pour lancer le package.
- L’item d’identifiant 20 (s’il existe) aura son titre à » Nouveau Titre » (à vérifier sous le site SharePoint).
MOSS 2007 : Problème de MAJ de workflow et cache du Designer
Les modifications apportées aux workflows dans le designer ne sont pas pris en compte !
Voici la manipulation à effectuer, inspirée de cet article de MSDN.
- Fermer de Designer
- Recherche le répertoire %System Drive%Documents and Settings\%user%Local SettingsApplication DataMicrosoftWebSiteCache.
- Supprimer le répertoire dont le nom correspond au site concerné.
- Les modifications apportées au designer seront prises en compte.
La meilleure chose à faire serait de créer un batch qui supprime ces fichiers à la demande…
MOSS 2007 : Les liens relatifs vers les bibliothèques de connexions de données situées sur des collections de sites SharePoint différentes ne sont pas pris en charge.
Cette erreur peut arriver lorsque vous publiez un formulaire Infopath même si vos connexions de données viennent de la même bibliothèque !
Cette erreur n’a alors aucune raison d’être, vu que toutes vos connexions font bien partie de la même collection de site.
Que se passe-t-il ? Voici le problème que j’ai rencontré, et qui arrive assez fréquemment :
Editez le fichier manifest.xsf
avec le bloc note.
Allez sur les lignes où sont déclarées toutes les connexions (xsf2:adoAdapterExtension ou xsf2:webServiceAdapterExtension).
Maintenant comparez bien les attributs siteCollection
… la moindre majuscule de différence, et l’erreur surgira !
Il faut bien que toutes les attributs siteCollection
des balises xsf2:connectoid
soient parfaitement identiques, à la majuscule près !
MOSS 2007 : Problème de style en mode anonyme.
Il peut arriver que certains fichiers (images, feuilles CSS) soient inaccessibles en mode anonyme, notamment dans les sous-sites d’une collection de sites SharePoint.
La solution est simple : tous les fichiers inhérents au style que vous avez créés doivent être placés dans le répertoire _catalogs/masterpage
.
Ainsi, tous vos fichiers seront accessibles, même via une connexion anonyme. De plus, cela permet de centraliser vos sources autour de votre nouvelle masterpage.
Bash UNIX : Supprimer des lignes d'un fichier avec SED
sed '/ma_chaine/d' fichier_source.txt > fichier_cible.txt
Voir cette page très complète : USEFUL ONE-LINE SCRIPTS FOR SED
CSS : Comment centrer une DIV ?
CSS : Comment centrer une boîte DIV sous Firefox et IE6-7 ?
Sous IE, la boite « conteneur » doit avoir la propriété text-align à « center ».
Sous FF, il faut que la boite « contenue » ait les propriétés margin-left et margin-right à auto !
Bash UNIX : Recherche une commande dernièrement entrée
A l´invite, il suffit de faire CTRL + R, et commencer à taper la chaine rechercher (ça peut être en plein milieu).
Le Bash proposera la solution la plus proche.
Faire (ou flèches) pour copier la commande après l´invite.
Javascript : Comment supprimer les espaces d'une chaine de caractères ?
Ce code permet de supprimer tous les espaces d’une chaine de caractère, en utilisant une expression régulière :
ma_chaine = ma_chaine.replace(/ /g, "");