|
|
sybperl-l Archive
Up Prev Next
From: "Wechsler, Steven" <Steven dot Wechsler at mtvstaff dot com>
Subject: Commit error on DBD::Sybase with MSSQL...
Date: Aug 18 2008 3:56PM
Hi, I'm using DBD::Sybase v. 1.08 connecting to Sybase and MSSQL 2000,
using FreeTDS v. 0.82. SQL Server is set up for TDS version 8.0 in
freetds.conf
Anyway, it works fine for Sybase, but with when connecting to SQL
Server, if I use the default autocommit setting (1), I get the following
message:
Msg 3902, Severity 16, State 1:
Server 'DEVMSSQL01', Line: 2:
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION
This message comes before the output from whatever query I am running
(and note that the query is only a SELECT). I ran with DBI_TRACE turned
on, and note that COMMIT TRAN appears to be sent explicitly by
DBD::Sybase:
DBI 1.602-ithread default trace level set to 0x0/3 (pid 22384) at
DBI.pm line 273 via run_sql.pl line 61
-> DBI->connect(dbi:Sybase:server=devmssql01, sa, ****,
HASH(0x17429150))
-> DBI->install_driver(Sybase) for linux perl=5.008008 pid=22384
ruid=2001 euid=2001
syb_init() -> DBD::Sybase 1.08 initialized
OpenClient version: freetds v0.82 (threadsafe, default tds
version=5.0)
install_driver: DBD::Sybase version 1.08 loaded from
/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DBD/Sybase.pm
New 'DBI::dr' (for DBD::Sybase::dr, parent='', id=undef)
dbih_setup_handle(DBI::dr=HASH(0x17428fa0)=>DBI::dr=HASH(0x17428e30),
DBD::Sybase::dr, 0, Null!)
dbih_make_com(Null!, 0, DBD::Sybase::dr, 152, 0) thr#16dce010
<- install_driver= DBI::dr=HASH(0x17428fa0)
!! warn: 0 CLEARED by call to connect method
-> connect for DBD::Sybase::dr (DBI::dr=HASH(0x17428fa0)~0x17428e30
'server=devmssql01' 'sa' **** HASH(0x16f73460)) thr#16dce010
New 'DBI::db' (for DBD::Sybase::db, parent=DBI::dr=HASH(0x17428e30),
id=undef)
dbih_setup_handle(DBI::db=HASH(0x174948f0)=>DBI::db=HASH(0x17494840),
DBD::Sybase::db, 16fd7400, Null!)
dbih_make_com(DBI::dr=HASH(0x17428e30), 17469dc0, DBD::Sybase::db,
2872, 0) thr#16dce010
syb_db_login() -> using global CS_LOCALE data
syb_db_login() -> checking for chained transactions
syb_db_login() -> ct_option is supported
syb_db_login() -> chained transactions are supported
get_server_version() -> ct_command(select @@version)
get_server_version() -> ct_results(4040)
get_server_version() -> version = Microsoft SQL Server 2000 -
8.00.2039 (Intel X86)
May 3 2005 23:18:38
Copyright (c) 1988-2003 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack
1)
get_server_version() -> version = Unknown
get_server_version() -> ct_results(4046)
<- connect= DBI::db=HASH(0x174948f0) at DBI.pm line 637
-> STORE for DBD::Sybase::db (DBI::db=HASH(0x17494840)~INNER
'PrintError' 1) thr#16dce010
STORE DBI::db=HASH(0x17494840) 'PrintError' => 1
<- STORE= 1 at DBI.pm line 689
-> STORE for DBD::Sybase::db (DBI::db=HASH(0x17494840)~INNER
'AutoCommit' 1) thr#16dce010
syb_db_commit() -> ct_command(
COMMIT TRAN
)
syb_db_commit() -> ct_send() OK
Msg 3902, Severity 16, State 1:
Server 'DEVMSSQL01', Line: 2:
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
If I run it with AutoCommit set to 0, I get a message about a ROLLBACK
with no corresponding BEGIN TRAN. I suspect that the reason that we
don't see these messages with Sybase is that ASE will just ignore a
COMMIT or ROLLBACK if there's no corresponding BEGIN TRAN.
How can I fix this?
Steve Wechsler | steven.wechsler@mtvstaff.com
Sybase/SQL Server/MySQL Database Administrator
212-846-5683
MTV Networks
|