Salut,

J'ai besoin d'executer un bulk insert d'un fichier dans une table de ma base sur sql server.
Tout marche bien mais en executant pas a pas je me suis rendu compte que lorsque j'appelle execute de DBI sur mon statement, les donnees sont inserees malgre le fait que je n'ai pas appele commit.

J'ai regarde dans les docs de DBI. Autocommit est bien a 0 au moment de mon execute et dans la doc de sql server je ne trouve rien pour forcer le bulk a respecter la transaction.

Quelqu'un a t il une idee ?

Le code est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
my $Statement = "BULK INSERT $dbname.$tablename
FROM '$Path'
WITH
(
    FIELDTERMINATOR = ';'
    , ROWTERMINATOR = '\n'
)
" ;
warn $Statement."\n" ;
$DBObj->begin_work() ;
my $Sth = $DBObj->prepare($Statement) ;
my $Result = $Sth->execute() 
if ($Result and $Result == 100)
{
    $Sth->commit() ;
}
else
{
    $Sth->rollback() ;
}