SQL Server Driver

As part of the Server work group, new focus thread, the following was mentioned:

However, I know that since at least May of 2018 - someone has been asking for Vapor to support Microsoft's SQL Server.

I was wondering how many people feel this is a priority over any of the ones listed above - given that there's been some questioning of how to increase the adoption of Swift, with discussion moving towards Windows support as a vector for that.

As SQL Server is used largely in enterprise environments, that might affect opinions on the priority of this library.

8 Likes

For me, postgres is the most important of the ones listed.

1 Like

I worded my intention incorrectly: What are people's thoughts on the priority of this library?
Just as high (meaning it joins the list) or lower.

Postgres has already been identified as coming up first among the database drivers.

4 Likes

@Mordil, very excited to see this thread. As you pointed - "SQL Server is used largely in enterprise environments" and currently there is no way to start experiments with Vapor/ Kitura to proof value/benefits for a business/engineers. IMHO support of Microsoft's SQL Server is very important for server-side Swift. I don't know much about driver development but would love to learn or help with by following the process of development.

5 Likes

Im probably gonna create a simple net core CRUD service to interact with a Microsoft SQL server for an application I’m developing right now with Vapor, a native support for it would definitely be better. In my experience is common to interact with mssql either for legacy data or project management software interaction. I don’t mind to use Postgres or MySQL or whatever when I can choose, but more often than not I need to also interact with mssql so that would definitely have an higher priority for me.

1 Like

I am all for SQL Server. Since it is so widely used in the enterprise, Vapor support would open up a tremendous amount of opportunity.

2 Likes

Microsoft SQL Server would be amazing. So many enterprise apps. would just be uplifted by this.

Please make this happen.

I have been researching ODBC connectivity from Swift and this might be a great option for Linux and OSX support.

1 Like

I'm glad to hear the enthusiasm for seeing this done - I'll get started on an implementation and proposal as soon as I can.

3 Likes

I've started. Please have a look at my efforts at http://www.binaryrefinery.com

Please feel free to help me tidy up my own code :-)

I would also like to add. My pitch rightly/wrongly was for ODBC support from Swift. This would maybe more generic than a straight SQL Server implementation.

That's fine - from what I've seen in my preliminary research is that there is a shared wire protocol with SQL Server and at least Oracle: Tabular Data Stream.

I think it'd be a great goal to have a module that handles the wire protocol itself - and then another that consumes the TDS to provide specific SQL Server capabilities.

1 Like

I was looking at UNIXODBC as my start point.

Richard Jones

Actually I think you might be onto something.

The Tabular Data Stream, is the lowest level implementation practically possible. The wire protocol would have the benefit of no external dependencies, which I guess would be very much in the Swifty spirit.

I like

I've made some good progress. Please have a look at my blog at http://binaryrefinery.com

Using the Tabular Data Stream and creating packages with support for SQL Server and Oracle wire protocols would be a big step toward supporting large enterprise customers.

1 Like

I totally agree.

Where to start ....?

While my experience is limited, I studied the TDS protocol about a year back in hopes of creating an implementation in Swift. I didn't end up going anywhere with this, but I am still very interested. The protocol is heavily documented and I second this approach.

Above you mentioned you would be starting an implementation. Is this something that you have already started on?

No, I have not started any implementation towards an SQL Driver.

The Redis driver has been my primary focus, and the Fall season has severely cramped my ability to invest in anything other than Redis.

The only progress towards this effort that I've been aware of is that from @spender

@spender I would be curious to see what sort of progress you've made up to this point, if any. I've begun an implementation myself and am hoping to get a proof of concept w/ simple connection and query capabilities up and running within a week or so.