Any progress on this? I would love to test it out
CC @ajedwards who made fantastic progress there recently.
With plenty of help from @johannesweiss, Iāve made some good progress and have a successful PRELOGIN handshake completing. While it may not sound like a lot, the way the TDS protocol wraps an SSL handshake is pretty tricky to handle. My progress has been slowed a bunch due to the day job and holidays, but will pick up here soon and hopefully I will have more to share and something for others to test soon.
@ajedwards I'm probably needing a driver like yours in a month or two and I'm willing to put my back underneath this one to get TDS working. Is your source code public and/or are you willing to collaborate?
@Joannis_Orlandos currently my repo is private, but yes I would be interested in collaborating. I'd be happy to discuss my goals for the project and get an idea of how we could collaborate. I am on the Vapor discord server and will probably reach out to you there for more detailed discussion.
There has been some decent progress made and while the repo doesnāt have a roadmap/progress indicator of any kind yet, I plan on getting something up soon. Thanks to @Joannis_Orlandos and @johannesweiss for contributions so far.
As an update, the latest status of the protocol implementation can be tracked here:
https://github.com/aaronjedwards/swift-tds/issues/12
There is a simple test/example in the repo showing raw SQL Batch executions (creating a database, creating a table, seeding the table, and reading from the table).
While I haven't been particularly active on the implementation in the last few weeks (given the current pandemic and its effect on my daily schedule), I hope to continue the progress soon and move things closer to a "complete" implementation of the protocol!
looking forward!
Is there any updates / progress for this? Would love to create a POC for using this at my work but can't until there is SQL Server Driver support.
At this point I believe an SQL Server driver or support of some kind should be a priority.
SQL Server is a major database, especially at the enterprise level. With no support for this DB, server side swift will just simply be ignored for any enterprise or adjacent use cases.
Here at work I would love to use Swift for all of the server side apps and deployment (we have a few internal apps and services), but without the ability to connect to the database its simply a non-starter.
Iāve recently picked this back up again and have made decent progress, though it is slow moving. I will post here once I have meaningful progress to share. Would love to have something out in time to be able to play nicely with the next release of Fluent/Vapor.
This thread is very old ... I haven't read the whole thread and I'm not 100% sure what everyone means by a "SQL driver" (a driver to support the SQL dialect across all different SQL-based databases?) but we already have a bunch of database-specific drivers like PostgresNIO or MySQLNIO or SQLiteNIO.
There are also some higher-level packages like SQLKit which is more database-agnostic, and ORMs like Fluent.
SQL Server AKA Microsoft SQL Server AKA MSSQL is its own dialect/wire protocol of sql.
Ah now that I think I've heard discussions like this in other places as well, around support for MSSQL
Yeah, as @dannflor mentioned, this is in specific relation to SQL Server, Microsoft's proprietary SQL database which happens to be one of the largest and most widely used database systems around.
Probably the most frustrating aspect is that it's unlikely Microsoft will provide official support anytime soon (if ever) like they do for PHP, Python, Ruby, Node, and GO, so it's up to the community to make a driver or framework for it. Which is by no means an easy task, especially for SQL Server.
The underlying network protocol for MSSQL is well documented and while I agree it is not a small feat to implement, the Postgres and Oracle driver implementations using NIO serve as excellent references. Despite their differences, even the implementation of those two protocols using NIO have a very similar underlying code structure, and Iāve found I can leverage a big portion of it for the TDS protocol (for MSSQL).
Any progress on this topic? I'm very interested.