jtds with SQL Server 2008 R2 - "socket write error" - sql-server-2008

We moved an old installation to a new hosting partner and now we're getting intermittent (now and then, days apart) "socket write errors" on a jdbc connection from an apache (6.0.20) to an SQL Server 2008 R2 (running on another host). We're using the current jTDS (1.2.5) jdbc drivers. The problems did not occur before the move.
An MS SQL Server specialist suggests the problems might be related to us running jTDS with MS Server 2008 R2.
Q: Can anybody support (or disprove) the theory that our problems are related to us using jTDS (and that we would be better off using MS JDBC drivers)?

There are a number of reasons this could happen depending on what your application is doing:
The SQL Server instance may have been stopped
The connection has timed out
In the case of binary data, the stream is reset.

Related

What is the newest SQL Server backend that MS Access 2003 can connect to?

Having troubles connecting MS Access 2003 into SQL Server 2012 back-end. Working with another team to figure out the issues. I am wondering if there is a limit as to how far forward Ms Access 2003 can go?
To my knowledge there is no version-specific limit; it really depends on what specifically you are trying to do. For example, I just successfully connected to SQL Server 2014 Express (running on Windows 7) from Access 2003 (running on Windows Server 2003) using the old "SQL Server" ODBC driver. I currently don't have ready access to a SQL Server 2016 instance, but I would expect that simply establishing such a connection would be technically possible as well.
No doubt such a connection will be unable to take advantage of some newer SQL Server features, e.g., those supported by newer ODBC drivers like "SQL Server Native Client" and its successors. However, many of those features are largely irrelevant to an Access/SQL_Server setup anyway (with the possible exception of datetime2 column support). The key point is that there is no hard limit that "Access 2003 is simply unable to connect to SQL Server version 'x' or newer.".

Create a Linked Server for a MySQL Database in SQL Server 2005

I'm currently trying something I've never done before - I'm trying to access MySQL data in an SQL Server environment. Where I am, we have two servers (the MySQL and MSSQL servers), and each stores different types of data. Recently I've found a need to write queries that include data for both servers. One of the ways I read to do this is adding a "Linked Server" in SQL Server. But try as I might I cannot seem to get a Linked Server added.
I am working on a Windows 7 system, our SQL Server instance is 2005, and the MySQL version is 5.5.31.
What I've done so far is this:
Downloaded and installed the MySQL ODBC drivers
Created a System DSN using that driver for the MySQL database, called "Production". (I also tested the connection from the Data Sources application and it connects just fine).
Checked for the Provider in SQL Server (MSDASQL) to configure options such as "allow nested queries" and "allow 'LIKE' operator"
right click on Linked Servers in Server Objects in SQL Server > "New Linked Server"
From here, I fill out the linked server info like this:
Checked "Other data source" (not SQL Server)
Chose Provider "Microsoft OLE DB Provider for ODBC Drivers"
Product Name: "Production"
Data Source: (the name of the System DSN) Production
Then in the security tab, I chose the "Connections will be made using this security context" and provided my username and login for the MySQL server.
Then this is where I run into an error every time. I always get the following error message:
The linked server has been created but failed a connection test. Do you want to keep the linked server?
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.Express.ConnectionInfo)
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "FLUX".
OLE DB provider "MSDASQL" for linked server "FLUX" returned message "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". (Microsoft SQL Server, Error: 7303)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.5000&EvtSrc=MSSQLServer&EvtID=7303&LinkId=20476
If you click that link for help, by the way, nothing shows up.
I saw other people suggested trying an older MySQL ODBC driver, adding a System Data Source for the 32bit driver as well as the 64bit driver, and restarting my machine (not the DB server) -- none of these fixed my error.
What I do not understand is why my System DSN seems to work and connect fine, but SQL Server cannot see the Data Source. Does anyone see what I'm missing, or what I might be configuring incorrectly?
EDIT
Clarified that I restarted my local machine, but not the DB server since trying to add the Linked Server.
From everything you've said, you probably have a mismatch between bitnesses of SQL Server 2005 components and the installed ODBC Driver for MySQL.
System DSNs are definitely the way to go.
You probably will need to install both the 32-bit and 64-bit ODBC driver, and configure an identical (same name and everything!) System DSN with each.
I would say you may also want/need to install this patch it was useful for getting XP and 2003 to work properly for ODBC type connections for me.
http://www.microsoft.com/downloads/details.aspx?FamilyID=000364db-5e8b-44a8-b9be-ca44d18b059b&displaylang=en
Is your Database server on the same machine on which you have Sql Server Management Studio Installed? If the SQL Server is on a remote machine then you need to install the ODBC driver on remote Machine and create the DSN there as per link
I was having the same issue but the above link solved my problem.

Linked server requires no encryption

I'm trying to replicate a Linked Server from a Windows 2k3 / SQL Server 2000 to a Windows 2008 / SQL 2008 R2 setup.
The SQL 2000 Linked server is setup like this:
srvname=blah.blah.com
srvproduct=SQL Server
providername=SQLOLEDB
datasource=blah.blah.com
srvnetname=blah.blah.com
rpc=1
rpcout=1
dataaccess=1
The SQL 2008 R2 Linked Server is setup the same way.
I've copied the remote users, and all seems fine, except when i tried to connect, I get this error:
OLE DB provider "SQLNCLI10" for linked server "blah.blah.com" returned message "Client unable to establish connection". (Microsoft SQL Server, Error: 20)
Encryption not supported on SQL Server
I still have access to the SQL 2000 machine, and can run the query fine. I'm guessing the issue is that Windows2008 machine is trying to send data encrypted, but the linked server is saying it can't handle encryption. Something along those lines. I've played with various different Data Source types, and nothing seems to pan out. I don't have access to the remote server so I don't know what OS/Database is on it.
Anyone with more SQL knowledge than me can point me in the right direction?
Thanks!
Hooray! I've done it. For anyone that may find this issue in the future, this is what I did:
Create ODBC connection to SOMESERVER.COM, call it dsnSOME
Driver: SQL Server
Name: dsnSOM
Server: SOMESERVER.COM
Create a Linked Server to dsnSOM:
Linked server: "SOMESERVER" (I don't think it matters)
Provider: Microsoft OLE DB Provider for ODBC Drivers
Product Name: dsnSOME
Data source: dsnSOME
And that's it. Now when I call the stored procedure I call:
[SOMESERVER].database.owner.storedprocedure
And it works!
It seems that for whatever reason, when trying to run a stored procedure on SQL 64 bit to a SQL 32 bit linked server directly, it gives this weird message about Encryption. However going through the ODBC and it works great.

SQL Server 2012 - Cannot create an instance of OLE DB provider "Microsoft.Jet.OLEDB.4.0" (Microsoft SQL Server, Error: 7302)

I just installed SQL Server 2012 to test differences and make sure it is ok for my Work. I may not be a pro at SQL, but I don't see how to add a Link to Jet database on my server. I have imported Jet Databases, but when going thru the GUI to Link a JET Database I see no Provider for JET. I am running Access 2003 (I don't like the 2008+ GUI)
I searched an found nothing simular to my issue; at least nothing I understood. Nothing mentioned how to add Jet db Provider.
I ran a connection string to the Jet Database thru QA:
sp_addlinkedserver 'USGEScrub', 'Access', 'Microsoft.Jet.OLEDB.4.0',
'D:\Lead$\SupList\USGEScrub.mdb'
The connection string works till I try to access the data and then I get this the errorand of course if I click the links nothing shows up:
TITLE: Microsoft SQL Server Management Studio
Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&LinkId=20476
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch.
Cannot create an instance of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked
server "USGEScrub". (Microsoft SQL Server, Error: 7302)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2100&EvtSrc=MSSQLServer&EvtID=7302&LinkId=20476
download the 2010 Access database engine from Microsoft
Allow "InProcess"
Add linked server using the ACE OLEDB provider.
more details here
I had a similar problem and in my case it turned out to be related to the permissions on the %TEMP% folder for the account under which the SQL Server service was running. For more details see my answer here.
Sometimes this problems occurs in computers x64 with office x84 versions installed. Try this:
Install pasive OleDb Driver x64

Collating Sequence Not supported by operating system

I am moving from SQL 2000 to SQL 2008. The SQL 2000 is on a Server 2003. SQL 2008 is on a Server 2008. I have imported my database successfully. I am able to perform queries and they work fine. I use a VB6 program running in the IDE to update the database.
When my VB6 program runs on a server 2003 the program will connect using the following connection string:
Provider=SQLOLEDB;DATABASE=mydbname;SERVER=my ip;DRIVER={SQL SERVER};UID=myuser;PWD=mypw;
Using the above connection string, I can connect with no errors to either SQL 2000 or the new SQL 2008 database. On the Server 2008, there is no SQLOLEDB driver show, so I have to use the new SQLNCLI10 provider
CCTdbConnectionString = "Provider=SQLNCLI10;Server=myServer\My InstanceName;Database=MyDB;UID=myuser;PWD=mypw;
Here's the problem. When I am running on the Server 2008 I get the error 3228 Selected collating sequence not supported by the operating system. If I hit debug and try again, or stop the program and try again it gets past that error until I reopen the IDE. Then I get a 2nd error encountered is an error 3027 Can Not Update. Database or object is read-only! This never goes away and I'm dead.
After Much research, I have found the answer. SQL 2005 and up apparently require a Unique Key Index exist on every single table that is accessed using ODBC or OLEDB.
This Cures the problem.
Compile the code: don't use the IDE?
Related KS KB article 246167