WSS 3.0, créer simplement une page d’association de Workflow

Si l’on s’en tient à la documentation Microsoft sur la création d’une page d’association de Workflow, chaque page devrait faire tout le boulot. Extrait du SDK (rubrique Workflow Association and Initiation Forms) :

The workflow developer must program what happens when the administrator submits changes to the form. In general, the custom workflow association form must perform the following actions:

  • Examine the value of the GuidAssoc parameter to determine whether the user is adding a new workflow association or editing an existing workflow association.
  • If the user is adding a new workflow association, call the AddWorkflowAssociation method to create a new workflow association.
  • If the user is editing an existing workflow association, call the UpdateWorkflowAssociation method to update that workflow association.
  • Create the task list for the workflow, if it does not already exist.
  • Use the data collected from the user to set properties of the SPWorkflowAssociation object, as appropriate.
  • Create the workflow history list, if necessary.

Tout ça est très lourd et doit être reproduit pour chaque page d’association que vous devez créer. Il existe toutefois une solution, probablement non supportée puisque non documentée. Continue reading

Rating 3.50 out of 5
[?]

Environnement de démo, réduire la taille des bases de données en mode Standalone

Il vous est peut être déjà arrivé de devoir migrer une machine virtuelle d’un serveur de développement vers un serveur démo, typiquement un laptop avec peu d’espace disque.

Pour gagner en place, il peut être intéressant de réduire la taille des bases de données. La commande DBCC SHRINKDATABASE (site technet) vient à notre secours !

Pour réduire au maximum la taille de votre base, utilisez la syntaxe ci dessous :

Et hop ! 2 Go gagné pour mon site d’équipe de démo.

Comment exécuter cette requête sur une installation en mode standalone ?

Lorsque vous installez SharePoint en mode Standalone (c’est souvent le cas pour les machines de démo), vous n’avez pas accès à Sql Management Studio… enfin presque. En effet, l’installation en mode Standalone utilise une version particulière de SQL Server, à savoir la version “Windows Internal Database” (anciennement Sql Server Embedded Edition). Cette dernière n’est accessible qu’en local et via les canaux nommés. Il est possible d’utiliser une chaine de connexion comme celle ci :

[text]\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query[/text]

Cette chaine de connexion accèdera au serveur par canaux nommés, ce qui est l’unique possibilité ouverte par la version Windows Internal Database.

Avec cette chaine de connexion, vous devriez être en mesure d’administrer la base depuis Sql Management Studio.

Scripter la réduction de toutes les bases depuis la ligne de commande

Vous voudrez peut être scripter cette réduction depuis la ligne de commande. Soit parce que vous ne voulez pas installer les outils SQL sur une machine de démo, soit parce que vous souhaitez automatiser cette réduction (j’ai par exemple sur le bureau de ma machine un fichier .cmd que je lance avant de sauvegarder / dupliquer le ficher vhd pour réduire la taille de ce dernier).

Pour se faire, vous pouvez passer par l’utilitaire en ligne de commande sqlcmd. Ce dernier vous permet d’exécuter des requêtes depuis la ligne de commande. Par exemple, la commande suivante var réduire la taille de la base de contenu wss_content :

[text]sqlcmd.exe -E -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query –Q "DBCC SHRINKDATABASE ( wss_content)" -c go[/text]

Enfin, la procédure stockée sp_MSforeachdb (qui n’est pas supportée par Microsoft, mais ce n’est pas un souci dans notre cas) permet d’exécuter une commande sur toutes les bases d’un serveur. Appliqué à notre besoin, la requête ressemblera à celle ci :

Ou encore dans la version ligne de commande :

[text]sqlcmd.exe -E -S \\.\pipe\mssql$microsoft##ssee\sql\query -Q "EXEC sp_MSforeachdb @command1=N’DBCC SHRINKDATABASE (?)’, @replacechar=’?’" -c go

[/text]

Vous pouvez, comme moi, créer un fichier .cmd qui lancera cette commande à la demande avant copie de vhd, ou selon vos besoins, planifier la commande une fois par jour, etc.

Quid de la production ?

Vous pourriez être tenté de vouloir appliquer cette méthode sur un serveur de production, mais avant que les DBA soient sur votre dos, je vous rappelle qu’il est déconseillé d’utiliser cette approche en production. En effet, lorsque la base est pleine, SQL Server va interrompre les connexions en cours, puis augmenter la taille des fichiers de la base… ce qui a le double impact négatif de prendre du temps et de favoriser la fragmentation. Le sujet de l’article n’est pas de parler de la production donc je vous laisse chercher sur la toile ces best-practices !

Rating 5.00 out of 5
[?]