Connecting to a database server through a proxy.

I normally connect to a SQL server from a C# or VB app using a connection string such as:
Data Source=<ServerIP,Port>;TRUSTED_CONNECTION=no;Persist Security Info=False;Initial Catalog=DBName;User ID=john;password=1234

This does not work when there is a proxy at the client side that blocks access through to the Internet.

All solutions I have found suggest that the client side IT staff open the proxy firewall for the required ports. In practice, people are often reluctant to open additional ports on the firewall. It is possible to go through the firewall using an HTTP tunnel, however I cannot get this to work to open a SQL connection. There are other methods available, for example Proxifier ( www.proxifier.com ) does this. Does anyone know how to do this in code, as I would prefer to avoid clients having to install an additional application on their machines.

Thanks,
Rob
RobboRedAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

giltjrCommented:
Unfortunately the bad part of using a proxy is not all IP based applications support using proxy.

proxifier works by "hooking" into the IP stack and intercepting the IP packets and transparently sending them to the proxy server.  Something you really can't do in code.

What I would suggest is that instead of the clients talking directly to the database server, that you write a HTTP front end to your application and have them talk to a web server and have the web server talk to the database.
0
RobboRedAuthor Commented:
Thanks for your response. A web interface is a possibility, but it is difficult to get the functionality of a Windows application so I'm still hoping there is an alternative solution.
0
giltjrCommented:
Well not really.  If you go back and read by statement, I never said you had to use a web interface.  I said you can use HTTP talking to a web server.

You still have a custom C++ (or whatever language you wish to write in) and it uses HTTP to communicate the requests back to a web server.  In fact it does not even need to be a web server, it can be a custom written server application that processes HTTP, its just a web server based application gets you out of the business of handling some of the more mundane processes of being a HTTP server.

0
Powerful Yet Easy-to-Use Network Monitoring

Identify excessive bandwidth utilization or unexpected application traffic with SolarWinds Bandwidth Analyzer Pack.

RobboRedAuthor Commented:
I don't really understand where HTTP comes in. Does a connect command to a database use HTTP?
0
giltjrCommented:
No, you would  use HTTP to communicate the clients request and response to and from the server application.  The server application would then do the query against the database and then return the results to the client.

In one sense it would look like a web based application, the difference is instead of a web browser the client would be your custom program.

This way you don't have to have to have the customer install special software in order to get through their proxy server or for them to install/setup a socks server.

Otherwise they have to configure their firewall to allow direct access to your data base server without going through their proxy.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
RobboRedAuthor Commented:
Yes, that would work, thanks.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Networking Protocols

From novice to tech pro — start learning today.