mercredi 3 août 2011

(C#/.NET Framework 4) Insert SQL en base Oracle et obtention de l'ID ajouté.


Contexte : La table MATABLE comporte plusieurs champs dont un qui est nommé ID et qui est alimenté automatiquement par une SEQUENCE INCREMENTEE au sens ORACLE.
String strSQL = "insert into MATABLE(CHAMPS1) values('VALEUR1') returning id into :myOutputParameter";
OracleCommand oracleCommand = new OracleCommand();
oracleCommand.Connection = oracleConnection;
oracleCommand.CommandType = System.Data.CommandType.Text;
oracleCommand.CommandText = strSQL;
oracleCommand.Parameters.Add("myOutputParameter", OracleDbType.Decimal, System.Data.ParameterDirection.ReturnValue);
oracleCommand.ExecuteReader();
int id = Int32.Parse(oracleCommand.Parameters["myOutputParameter"].Value.ToString());

mardi 28 juin 2011

Script PL/SQL Oracle Data Scanner v0.1

Après la publication du script PL/SQL d'hier, je me permets de créer donc le projet "Script PL/SQL Oracle Data Scanner" dont la version est actuellement en v0.1. L'objectif premier est de créer un script qui permet de rechercher une valeur dans une base de données Oracle en itérant sur tous les enregistrements de toutes les tables d'une base de données Oracle.

Pour chaque table, cette amélioration du script permet de compter tous les enregistrements de chacune, et liste les champs de chacune des tables également. Pour des raisons encore non élucidées, il y a des exceptions sur certaines tables système (probablement des droits qui ne permettent pas de les lire).
declare
myvar varchar2(1024);
i number;
myresult varchar2(1024);
myval varchar2(1024);
nbrec number;
begin
dbms_output.enable(500000);
for t in (select t.* from all_tables t where t.table_name like '%') loop
myvar := t.table_name;
dbms_output.put_line('table name = ' || myvar);

begin
execute immediate ('select count(*) from ' || t.table_name)
into nbrec;
dbms_output.put_line(' Nb records = ' || nbrec);
exception
when others then
dbms_output.put_line(' *** exception count ***');
end;

for u in (select u.* from all_tab_columns u where u.table_name = myvar) loop
dbms_output.put_line(' column name = ' || u.column_name);
end loop;
end loop;
end;

lundi 27 juin 2011

PL/SQL Oracle Scanner tous les champs de toutes les tables

declare
myvar varchar2(1024);
i number;
myresult varchar2(1024);
begin
for t in (select t.* from all_tables t where t.table_name like 'MARESTRICTIONDETABLE%') loop
myvar := t.table_name;
dbms_output.put_line('table name = ' || myvar);

for u in (select u.* from all_tab_columns u where u.table_name = myvar) loop
dbms_output.put_line('column name = ' || u.column_name);
end loop;

end loop;
end;

Avant de lancer l'exécution de ce script, mettez une restriction en remplaçant MARESTRICTIONDETABLE.

Si vous ne voulez aucune restriction, on peut étendre le champs d'application à absolument toutes les tables d'une base de données Oracle en supprimant la clause WHERE suivante

where t.table_name like 'MARESTRICTIONDETABLE%'

Have Fun !

lundi 25 avril 2011

Only Télécom et blocage de ports

Il semblerait que l'opérateur Only Télécom bloque certains ports jusqu'à environs 23h. Un des ports bloqués est le port 18604. Malgré plusieurs appels au support, ils ne donnent toujours pas de réponse après plusieurs mois.

Qualité de service Only Télécom = 0/20 !

mercredi 9 mars 2011

Application pour accélerer RDP (Remote Desktop) et TeamViewer

Il existe une application permettant d'accélerer les connexions Remote Desktop et TeamViewer, et plus généralement toute communication utilisant le protocole TCP sur une machine Windows. Cette application est fournie par la société Inmarsat et s'appelle TCP Accelerator. Initialement c'est une application destinée à améliorer la rapidité des connexions des terminaux se connectant par satellite.

Cette application est disponible pour Windows XP/Vista/7 et aussi MacOS G3/G4/G5. A noter que la version Vista fonctionne également sur Windows Server 2008.

Inmarsat TCP Accelerator (Actuellement en version 2) est disponible à l'adresse http://www.inmarsat.com/Support/BGAN/TCP_Accelerator.aspx
Update du 13/07/2014 :
http://www.inmarsat.com/support/bgan-firmware/bgan-tcp-accelerator/


Il faut installer cette application sur le serveur uniquement, donc la machine distante et non le client. En toute logique si Inmarsat TCP Accelerator est installé sur le serveur et sur le client, il devrait y avoir encore un gain en rapidité de connexion TCP.

mardi 1 mars 2011

Création du blog BPEL MASTER

Je vous annonce officiellement la création du blog BPEL MASTER à l'adresse web suivante :

http://bpelmaster.blogspot.com

Have fun !

mardi 22 février 2011

Technique pour accélerer la prise de contrôle à distance (RDP/Terminal Server)

Démarrer l'outil de modification de base de registre REGEDT32

Dans l'arborescence de la base de registre suivante :
[HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client]

Créer la clé DWORD 32 bits suivante : Min Send Interval
Mettez y la valeur 0000000A

Cette valeur hexadécimale correspond à la valeur décimale 10 et signifie que les informations envoyées vers l'ordinateur distant seront envoyées toutes les 10 millisecondes au lieu des 100 millisecondes initiales.



jeudi 17 février 2011

C# ASP.NET et problèmes Oracle.DataAccess.dll

Il peut arriver que lorsque vous ouvrez un projet sur une machine autre que celle sur laquelle il a été initialement créé, il y ait
alors des erreurs IIS ASP.NET qui s'affichent concernant la DLL Oracle.DataAccess.dll

Afin d'avancer dans la résolution de ce problème, il faut savoir que lorsque vous lancez l'exécution du projet dans un navigateur web, le serveur web de développement tente de charger la DLL Oracle.DataAccess.dll qui correspond à la version qui a été initialement importée dans le projet.

Le serveur va alors rechercher la bonne dll dans les répertoires du projets, puis de la GAC, puis dans les répertoires systèmes de la machine locale.

Si une erreur s'affiche il faut alors en général réimporter la bonne dll Oracle.DataAccess dans le projet (la bonne version). Et en général il faut également réinstaller les composants clients Oracle, puis fermer Visual Studio et le ré-ouvrir.

mercredi 16 février 2011

Envoyer un email avec document attaché, en C#

using System.Net.Mail;

public void envoyerEmailAvecDocumentAttache(){
string from = "test_sender@provider.fr";
string to = "test_recipient@provider2.fr";
string subject = "test subject";
string message = "test message";
MailMessage mm = new MailMessage(from, to, subject, message);
Attachment attached = new Attachment(@"C:\TEMP\AttachedFile.txt");
mm.Attachments.Add(attached);

SmtpClient smtpclient = new SmtpClient("smtp.anyprovider.com");
smtpclient.Send(mm);
}


Bien sûr il faut remplacer les champs suivants par des valeurs adéquates concernant votre projet et environnement :
"test_sender@provider.fr"
"test_recipient@provider2.fr"
"smtp.anyprovider.com"

vendredi 4 février 2011

Problème SQL Server Agent qui ne démarre pas

Sous SQL Server 2008 R2, si l'agent SQL Server ne démarre pas, il faut vérifier si l'observateur d'évènements est démarré dans les services (services.msc).

En effet, si l'event viewer n'est pas démarré alors l'agent SQL Server démarrera et s'arrêtera aussitôt :)