Çağlar Orhan

Hi Larry, thank you for your explanatory answer. I have an idea now, but
with my poor English am afraid i did understand wrong or incomplete :(

I am going to try my network layout.
We have an IIS as a server and clients have MS Win7 on their PCs.
But usually we used IIS machine as a clasical static file storage. So i do.
There is one mydb.sqlite file as DB on somewhere at IIS.
IIS not to pay any atention on the file and not to run any application on
itself.
But every client has MS *.hta files and connecting to sqlite over ODBC
driver with vbscript. That means 5-10 or few larger client counts make
connections to that unique sqlite file on the IIS server.
Every client (5-100) all over the network has their own application which
takes aim at mydb.sqlite file as DB target source.
Basically proceses are just read and write to table.

And you wrote
"What Jay and others warn about is that SQLite is not designed for
concurrent DB operations.  Also, have its file store be accessed over a
network from SQLite code running remotely is a formula for database
corruption.  But it looks like you are not doing that."

Is my situation comply with warning :(

From your first post, I understood that the IIS server would be doing all the SQLite operations, (likely from multiple threads, although that could only be surmised).

Now, it appears that you have clients on different machines accessing a SQLite file over the network via their own SQLite code. This is precisely what the warning advises against. The problem is this: Even though the SQLite design anticipates different processes operating on the same database file, it guards against concurrent access issues by using file locking and another file located "beside" the database file to control access and provide journalling. If file access over a network had the same semantics and predictability as machine-local file access, then there would no reason your usage would not work. Unfortunately, file access over a network has known weaknesses with respect to file locking. This means that such access involving running SQLite code and a remote database file is unreliable when multiple clients may perform nearly concurrent operations. Just as network file locking sort of works, your application(s) may sort of work, at least enough for some simple tests to seem successful. You would do well to avoid deploying such a solution.

You might be interested in this "Code Project" article, and perhaps its code:
http://www.codeproject.com/Articles/22416/A-SQLite-Server-Client-Implementation

Thank you,
You're welcome,
--
Larry Brasfield

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to