Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe


Poster un commentaire

La librairie SMO

Dans un récent projet j’ai eu besoin de restaurer et supprimer des bases de données SQL Server via un code C#.

Comment faire? La solution est l’utilisation de la librairie SMO (SQL Server Management Objects) que j’ai découvert pour l’occasion. Cette librairie fournit tout ce dont on a besoin pour ce genre d’opérations et bien d’autres.

Comme j’ai un peu galéré pour trouver des exemples qui fonctionnent, voici un petit article rapide sur le sujet.

Lire la suite

Publicités


Poster un commentaire

Scale up/down d’une base SQL Azure par code

Il existe diverses circonstances pour lesquelles on a besoin de rescaler dynamiquement une base SQL Azure. Dans mon cas je devais lancer un script SSIS très impactant d’où le besoin de passer momentanément à un tiers de facturation assurant plus de DTU.

Il existe 4 méthodes:

  1. Script T-SQL
  2. Api REST
  3. SDK .Net
  4. PowerShell

Je vais examiner ces méthodes dans cet article, mais remarquez tout de même que dans les coulisses, le SDK appelle les Api REST comme Fiddler vous le confirmera aisément. Pour moi il s’agit donc de la même méthode.

Avant de commencer, je vous encourage comme toujours à ne pas me faire confiance et tester vous même le code proposé, mais faites TRES attention à certaines choses:

2016-11-11_00-21-55

 

Une base SQL ca peut être très cher, n’oubliez donc pas de redescendre le tiers dès que possible!

Lire la suite


Poster un commentaire

Lancer un script SSIS

Sur mon projet j’ai un peut ramé pour faire un truc tout simple: lancer un script SSIS depuis du code C#.

Il existe un SDK: Microsoft.SqlServer.Dts.Runtime

l’exécution se passe bien, c’est facile de passer les paramètres du script… mais je n’ai jamais réussi à récupérer les logs!

Vous trouverez une exemple ici:

http://www.codeproject.com/Tips/658959/Execute-SSIS-Packge-by-using-Csharp-and-SQL-Server

 

Alors je me suis lancé dans l’exécution d’un process avec dtexec.exe et là… on se heurte à la syntaxe pour passer les paramètres. Du bonheur!!!!!

D’où l’intérêt de cet article.

Lire la suite


Poster un commentaire

Patterns pour haute dispo et scalabilité d’une appli web – Partie III

L’architecture CQRS

Poursuivons avec l’architecture CQRS.

CQRS fait partie de ces patterns émergeants pas encore très connus, mais je crois promis à un certain avenir d’autant plus que souvent on le rencontre par hasard sans savoir qu’il y a une architecture!!!

Soyons tout de même clair, la littérature disponible n’est pas encore à la hauteur de ce qui existe pour les architectures traditionnelles. Beaucoup de questions sont encore débattues.

Je me garderai bien d’intervenir dans un débat où je ne me sens pas l’épaisseur suffisante, mais si j’ai réussi à vous faire comprendre de quoi on parle et l’intérêt de CQRS, le but est atteint!

Lire la suite


Poster un commentaire

Patterns pour haute dispo et scalabilité d’une appli web – Partie II

Exploiter l’asynchronisme

Un thread est occupé lorsqu’il exécute du code. Cela ne signifie pas qu’il soit réellement utilisé. Il peut être en attente pour une des raisons suivantes:
  1. Le code effectue des manipulations de données en mémoire, il est en attente qu’une CPU devienne disponible.
    On parle de code lié à la CPU (CPU-bound)
  2. Le code est en attente d’une requête vers un composant situé en dehors de son process, il est alors I/O bound.
Ces situations ne sont pas très favorables car si le thread ne travaille pas, il n’est pas pour autant disponible pour d’autres tâches.
Une meilleure situation serait de le recycler en attendant que la cause du blocage se résolve.
Les techniques d’asynchronismes permettent d’organiser ce recyclage. Toutefois, l’asynchronisme a un coût. De plus, dans la mesure où le nombre de CPU est tout de même très limité sur un serveur, la mise en oeuvre de code asynchrone est surtout pertinente pour du code I/O bound.

Lire la suite