Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Driver randomly failed with different SqlError on MS SQL Server 2005 #31

Open
YoEight opened this issue Mar 2, 2017 · 2 comments
Open

Comments

@YoEight
Copy link

YoEight commented Mar 2, 2017

Greetings,

Here's my situation, I run the same query but with different parameters several times and it never fails at the same point when running my program (I print each line I read). Here a possible outcome when launching my program 3 times.

Attempt 1

A
B
C
testing-mssqlserver: user error (Data.ByteString.packCStringLen: negative length: -15471)

Attempt 2

A
B
testing-mssqlserver: SqlError {seState = "[]", seNativeError = -2, seErrorMsg = "sqlFetch: []"}

Attempt 3

A
B
C
D
E
testing-mssqlserver: SqlError {seState = "[]", seNativeError = -2, seErrorMsg = "SQLNumResultCols: []"}

My env:
OS: Archlinux 64bits
GHC: 8.0.2 64bits

λ yoeight → cat /etc/odbc.ini
[MSSQL]
Description = MS SQL Server
Driver = FreeTDS
Server = ${server_name}
UID = ${user}
PWD = ${password}
ReadOnly = No
Port = 1111
TDS_Version = 8.0
λ yoeight → cat /etc/odbcinst.ini
[FreeTDS]
Description = MS SQL Server
Driver = /usr/lib/libtdsodbc.so
UsageCount = 1
FileUsage = 1
Trace = Yes
TraceFile = /tmp/odbc.log

nb: Don't know if it's related to the driver but I never had a single line of log in /tmp/odbc.log

Thanks for your time.

@YoEight
Copy link
Author

YoEight commented Mar 2, 2017

You might need that one too

λ yoeight → cat /etc/freetds/freetds.conf 
#   $Id: freetds.conf,v 1.12 2007-12-25 06:02:36 jklowden Exp $
#
# This file is installed by FreeTDS if no file by the same 
# name is found in the installation directory.  
#
# For information about the layout of this file and its settings, 
# see the freetds.conf manpage "man freetds.conf".  

# Global settings are overridden by those in a database
# server specific section
[global]
        # TDS protocol version
	tds version = auto

	# Whether to write a TDSDUMP file for diagnostic purposes
	# (setting this to /tmp is insecure on a multi-user system)
;	dump file = /tmp/freetds.log
;	debug flags = 0xffff

	# Command and connection timeouts
;	timeout = 10
;	connect timeout = 10
	
	# If you get out-of-memory errors, it may mean that your client
	# is trying to allocate a huge buffer for a TEXT field.  
	# Try setting 'text size' to a more reasonable limit 
	text size = 64512

# A typical Sybase server
[egServer50]
	host = symachine.domain.com
	port = 5000
	tds version = 5.0

# A typical Microsoft server
[egServer70]
	host = ntmachine.domain.com
	port = 1433
	tds version = 7.0

@YoEight
Copy link
Author

YoEight commented Mar 2, 2017

My current hack consists on retrying the faulted query execution until it passes. At the current stage of my project, it isn't a big issue but it will if we want to go on the next level.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant