SQLite, Firebird or SQL compact

Hi All,
   I'm trying to replace an existing applications use of text and excel files for data storage with an embedded database model.  I've narrowed it down to 3:  Sqlite, Firebird, and Microsofts SQL Compact.  
For simplicity i like sqlite, but i'd like some thread safety, and concurrency.
  My biggest hang up in trying to finalize my decision, is that in the future i'll want to query another database (i.e query a customer's remote database to retrieve employee passwords) or allow another database to insert or query my tables to retrieve operational data.  My google-fu is strong, but I have yet to see examples or read documentation that specifically mentions whether this is possible.  What's the correct terminology?  I've seen discussions about linked databases (pros and cons), as well as cross database queries, but never a definitive "Yes, i did this... and it worked".  It could be so commonly done that noone mentions it, and i'm just retarded. :-/   
If i adopt Firebird, will a customer with SQL Server just be able to use an odbc connection to interact with my database?  It's got to be a simple thing, i'm just missing it.
Please help me put this monkey to rest.

NI has a design pattern solution for SQLLite that even works on their CompactRIO RT controller hardware to use SQLLite from within LabVIEW. And http://www.ch-werner.de/sqliteodbc/ shows an ODBC driver for SQLLite. There are of course problems since the ODC driver contains the actual SQLLite engine and accesses the database file. So remote access through ODBC seems not trivial, though you could of course share the database file over the network and access it through an ODBC driver installed on a different computer. This probably still leaves the difficulty how to deal with concurrent access to the database file if your client tries to query the database file at the same time as your application has it open to write or query data from it.
Firebird also has an ODBC driver: http://www.firebirdsql.org/index.php?op=files&id=o​dbc. Firebird seems to either have a filebased access model that does allow concurrent access to the same database as well as a so called super server mode, where a service process controls access to the database file(s) and access is done through network communication to this service process. Not sure if the ODBC driver supports the super server mode transparently but if it does this would be a very easy solution to have your application use the database to store date and allow your clients to query the database from other computers directly.
Microsoft SQL Compact I'm not sure. If this is what was before the SQL Server Desktop Edition, then it is basically a full featured SQL Server installation with the database size limitation to 2GB. This would certainly work also with remote access through ODBC and/or ADO .Net. But if you have ODBC drivers for your database you can basically access it through ADO ActiveX or ADO .Net as well and it doesn't even have to be slower if the driver and interface are done well.
Message Edited by rolfk on 03-23-2010 09:15 AM
Rolf Kalbermatter
CIT Engineering Netherlands
a division of Test & Measurement Solutions

Similar Messages

  • Upgrading from Access 2000 to MS SQL Compact 3.5

    Post Author: AllenF
    CA Forum: Data Connectivity and SQL
    I am using Crystal Reports Basic for Visual Studio 2008.  I was wondering if anyone knows how I can upgrade my current Access 2000 based reports to use MS SQL Compact 3.5.  I'm mostly finished upgrading by application, other than the reports.  Any help is appreciated.

    Post Author: AllenF
    CA Forum: Data Connectivity and SQL
    I am using Crystal Reports Basic for Visual Studio 2008.  I was wondering if anyone knows how I can upgrade my current Access 2000 based reports to use MS SQL Compact 3.5.  I'm mostly finished upgrading by application, other than the reports.  Any help is appreciated.

  • Error installing SQL Compact 3.5 sp2 on 2012 64-bit server.

    Sql Compact 3.5 sp2 will not install on 2012 64-bit server.  I'm getting an error that the replication components need to be installed for Sql 2008.  My Sql Server is at sp1 (11.0.3393) and is replicating currently to another Sql Server. 
    Both 64 and 32 bit installs gives me this error.

    First, you need the latest tools, build 8089, download links here:
    http://erikej.blogspot.dk/2010/08/sql-server-compact-35-sp2-downloadable.html
    And secondly (I assume this is a 2 server configration, with separate IIS and SQL Server?) - you need to install the 2012 database engine as well, to get the replicaation components installed (just stop and disable the SQL Server service after install, so
    it does not consume any unneccesary resources)
    And thirdly, SQL 2012 SP1 is not enough, you must install the latest CU, both on the IIS server and on the database server.
    Let me know if that was unclear.
    Please mark as answer, if this was it. Visit my SQL Server Compact blog http://erikej.blogspot.com

  • CorrectFilePaths & SQL Compact Edition problems

    Hello,
    I've got some problems using Application Compatibility Tool and the CorrectFilePaths fix for one of our Applications that use MS SQL Compact Edition 3.5 SP2 for storing users settings.
    We are using redirected AppData Roaming (points to P:\Profiles\AppData, P:\ is a network drive), the issue originated with some users having trouble running 2 or more instances of the application. SQL CE only allows ONE process to write to the .sdf file
    if it's on a network drive. This is not the case if the .sdf is on a local drive, ex. in C:\Users\%username%\AppData\Local, so I thought I'd try to use CorrectFilePaths to redirect that .sdf to the local appdata folder.
    After many tries to redirect just the .sdf and no luck I decided to try to redirect the whole application folder in Roaming AppData to the Local AppData, this seems to work for everything except the SQL CE .sdf file.. D'oh!
    The command I've used with CorrectFilePaths: "%userappdata%\Infor;%userprofile%\AppData\Local\Infor"
    Some info from Process Monitor:
    14:07:18,6760837    MangoClient.exe    4452    CreateFile    C:\Users\xxx\AppData\Local\Infor\Infor Smart Office\S0\U0\Local\DB\Mango.sdf    PATH NOT FOUND    Desired
    Access: Read Attributes, Dis, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
    14:07:18,7130720    MangoClient.exe    4452    CreateFile    C:\Users\xxx\AppData\Roaming\Infor\Infor Smart Office\S0\U0\Local\DB\Mango.sdf    PATH NOT FOUND    Desired
    Access: Read Attributes, Synchronize, Dis, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: None, AllocationSize: n/a
    Error in the applications log file:
    27.08.2014 14:07:18 ERROR Mango.Core.Persistance.DataBase.CreateDatabase COR0001  The SQL CE database could not be created from the connection string Data Source="C:\Users\xxx\AppData\Roaming\Infor\Infor Smart Office\S0\U0\Local\DB\Mango.sdf";LCID=1033.
    Functions depending on database will not be available.
    The path is not valid. Check the directory for the database. [ Path = C:\Users\xxx\AppData\Roaming\Infor\Infor Smart Office\S0\U0\Local\DB\Mango.sdf ]
    Anyone know how I can get this to work? :)

    14:07:18,6760837    MangoClient.exe    4452    CreateFile    C:\Users\xxx\AppData\Local\Infor\Infor Smart Office\S0\U0\Local\DB\Mango.sdf    PATH NOT FOUND    Desired
    Access: Read Attributes, Dis, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
    14:07:18,7130720    MangoClient.exe    4452    CreateFile    C:\Users\xxx\AppData\Roaming\Infor\Infor Smart Office\S0\U0\Local\DB\Mango.sdf    PATH NOT FOUND    Desired
    Access: Read Attributes, Synchronize, Dis, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: None, AllocationSize: n/a
    Hi,
    According to the Process Monitor information, the path you  try to create file is not exit. Please confirm the path or file name correct.
    According to the error message:
    Functions depending on database will not be available.
    The path is not valid. Check the directory for the database. [ Path = C:\Users\xxx\AppData\Roaming\Infor\Infor Smart Office\S0\U0\Local\DB\Mango.sdf ]
    It's functions problem, please check it. If so, I think maybe it would be better to provide this question at SQL forum.
    Contact SQL Server:http://social.technet.microsoft.com/Forums/en-US/home?category=sqlserver
    Roger Lu
    TechNet Community Support

  • Encryption algorithms used in SQL Compact Edition 3.5

    Hi,
    In the info for SQL Compact Edition 3.5 it states that one of the features is:
    Support for newer and more secure encryption algorithms.
    I can't seem to find details of exactly what these new, more secure algorithms are. It appears 3.1 used 128-bit RSA. Is this the same in 3.5, or has this changed?
    Thanks

    The official word is now out here: http://209.34.241.67/laxmi/archive/2008/04/15/sql-server-compact-database-file-security.aspx

  • SQL compact 3.5 on windows ce 6.0

    Hi all,
    I am using sql compact 3.5 sp2 on windows ce 6.0 and I noticed that every aprox. 13 seconds something happens which increases insert time significantly (larger the db bigger the increase).
    I have a table whit cca 70 columns and I insert one line per second. When the db is empty the insert takes few ms (8) and up to 50ms every 13 sec.
    But when the db is getting bigger 500 000  inserts this time increases to aprox. 30 ms and goes over 500ms every 13s.
    Has anyone noticed this. Is there something I can do about this?
    Thanks in advance,
    best regards,
    Greg

    Hi Eric,
    I tried table direct. And the result is more or less the same. Now I have around 4.5M rows and every 13-15 seconds one insert takes aprox 1.5 second.
    Is there anything I can do. Or is this just something DB has to do and only better computer would speed things up?
    Best regards,
    Grega
    Dim rs As SqlCeResultSet
    Dim rec As SqlCeUpdatableRecord
    Public Sub PrepareTableDirectToData()
    Dim sqlCommand As SqlCeCommand = sqlConn.CreateCommand
    sqlCommand.CommandType = System.Data.CommandType.TableDirect
    sqlCommand.CommandText = "Data"
    rs = sqlCommand.ExecuteResultSet(ResultSetOptions.Updatable)
    rec = rs.CreateRecord
    End Sub
    Public subInsertTableDirectToData()
    rec.SetSqlDateTime(1, Now.AddSeconds(-1))
    rec.SetSqlDateTime(2, Now)
    rec.SetSqlInt32(3, 2)
    rec.SetSqlDateTime(4, Now)
    rec.SetSqlInt32(5, 100000)
    rec.SetSqlInt32(6, 200000)
    rec.SetSqlInt32(7, 300000)
    rec.SetSqlInt32(8, 400000)
    rec.SetSqlInt32(9, 500000)
    rec.SetSqlInt32(10, 600000)
    rec.SetSqlInt32(11, 700000)
    rec.SetSqlInt32(12, 800000)
    rec.SetSqlInt32(13, 900000)
    rec.SetSqlInt32(14, 100001)
    rec.SetSqlInt32(15, 100002)
    rec.SetSqlInt32(16, 100003)
    rec.SetSqlInt32(17, 100004)
    rec.SetSqlInt32(18, 100005)
    rec.SetSqlInt32(19, 100006)
    rec.SetSqlInt32(20, 100007)
    rec.SetSqlInt32(21, 100008)
    rec.SetSqlInt32(22, 100009)
    rec.SetSqlInt32(23, 100010)
    rec.SetSqlInt32(24, 100011)
    rec.SetSqlInt32(25, 100012)
    rec.SetSqlInt32(26, 8000)
    rec.SetSqlInt32(27, 8000)
    rec.SetSqlInt32(28, 8000)
    rec.SetSqlInt32(29, 8000)
    rec.SetSqlInt32(30, 8000)
    rec.SetSqlInt32(31, 8000)
    rec.SetSqlInt32(32, 8000)
    rec.SetSqlInt32(33, 8000)
    rec.SetSqlInt32(34, 8000)
    rec.SetSqlInt32(35, 8000)
    rec.SetSqlInt32(36, 8000)
    rec.SetSqlInt32(37, 8000)
    rec.SetSqlInt32(38, 8000)
    rec.SetSqlInt32(39, 8000)
    rec.SetSqlInt32(40, 8000)
    rec.SetSqlInt32(41, 8000)
    rec.SetSqlInt32(42, 8000)
    rec.SetSqlInt32(43, 8000)
    rec.SetSqlInt32(44, 8000)
    rec.SetSqlInt32(45, 8000)
    rec.SetSqlInt32(46, 8000)
    rec.SetSqlSingle(47, 0.001)
    rec.SetSqlSingle(48, 0.001)
    rec.SetSqlSingle(49, 0.001)
    rec.SetSqlSingle(50, 0.001)
    rec.SetSqlSingle(51, 0.001)
    rec.SetSqlSingle(52, 0.001)
    rec.SetSqlSingle(53, 0.001)
    rec.SetSqlSingle(54, 15)
    rec.SetSqlDecimal(55, 101325)
    rec.SetSqlDecimal(56, 21.1)
    rec.SetSqlInt16(57, 1500)
    rec.SetSqlInt16(58, 2500)
    rec.SetSqlInt16(59, 4000)
    rec.SetSqlDecimal(60, 24)
    rec.SetSqlDecimal(61, 23.5)
    rec.SetSqlDecimal(62, 22.5)
    rec.SetSqlInt16(63, 100)
    rec.SetSqlInt16(64, 40)
    rec.SetSqlInt16(65, 20)
    rec.SetSqlInt16(66, 0)
    rec.SetSqlInt16(67, 3)
    rec.SetSqlInt32(68, 5)
    rec.SetSqlInt16(69, 50)
    rec.SetSqlByte(70, 40)
    rec.SetSqlInt32(71, 5200)
    rec.SetSqlInt16(72, 5)
    rs.Insert(rec)
    End sub

  • Change report tables from Access 2000 to SQL Compact 3.5

    Post Author: AllenF
    CA Forum: General
    I'm using CR10 that ships with Visual Studio 2008.  I want to upgrade several reasonably complicated reports to use SQL Server Compact 3.5 data.  The reports are currently using Access 2000 data.  Is there a simple way to go about this?  I REALLY don't want to have to recreate these reports.

    Post Author: AllenF
    CA Forum: General
    I'm using CR10 that ships with Visual Studio 2008.  I want to upgrade several reasonably complicated reports to use SQL Server Compact 3.5 data.  The reports are currently using Access 2000 data.  Is there a simple way to go about this?  I REALLY don't want to have to recreate these reports.

  • Sub query sql compact 3.5

    I have the following query in sql server compact that returns me the following error token number = 3, Token line offset = 28, Token in error = select] can someone help me with this problem? follows my query
    created:
    SELECT lm.cod_local, lm.des_local, es.cod_material, mat.des_material, mat.ni_material, es.qtde_estoque_atual, es.qtde_estoque_maximo, 
    es.qtde_estoque_minimo, CASE WHEN
    (SELECT MAX(dth_alteracao)
    FROM lig_movimentacao
    WHERE num_turno = 1 AND cod_tipo_movimento = 2 AND dth_movimento = GETDATE() AND cod_local_origem = es.cod_local AND 
    cod_material = es.cod_material) IS NOT NULL THEN 'S' ELSE 'N' END AS 'conferido'
    FROM lig_estocagem AS es INNER JOIN
    lig_material AS mat ON mat.cod_material = es.cod_material INNER JOIN
    lig_local_material AS lm ON lm.cod_local = es.cod_local
    WHERE (lm.des_local = 'Galpão 29')
    ORDER BY des_material

    SQL Compact does not support this kind of nested SQL and does not support CASE WHEN.
    You will have to split into several queries, and the pass the result from the first one as a parameter to the next one.
    Please mark as answer, if this was it. Visit my SQL Server Compact blog http://erikej.blogspot.com

  • Northwind sample and SQL Compact 3.5 (PROBLEMS)

    using vb express
    I'm totaly new to the VB and SQL
    Using the Learn VB and getting to the part about "Displaying Related Data"
    When I try to add a connection
    Using SQL Server Compact 3.5 as a Data Source
    Using (C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf) as Database
    no password
    hit ok
    and I get the error access to the database is not allowed. [file name = C:\Program files\microsoft SQL Server Compact
    Edition \v3.5\Samples\Northwind.sdf]
    What Am I doing wrong.  It can't be that hard, IS IT?

    For diagnostic purposes, try the following.
    Create a new project; a VB Windows Forms project.
    In the Data Sources view, create a data source for:
    C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf
    If you do not understand that, then ask for clarification. If the wizard says that the database is not part of the project, then answer the question by saying no, that you do not want a copy made. However note that that (let the wizard make a copy) is probably what you actually want to do for development purposes, but for now, we want to test the situation where you read from the original copy.
    In the "Choose Your Database Objects" page, choose (put a check in a checkbox) a table and only one table; any table. The important thing is to select at least one table; it will likely work if you select all tables.
    Now, be sure that the form is being viewed in design view. If you have just now created the project, then the form is being viewed in design view. In the Data Sources view, click on the table (a table) and there will be a drop-down box; select DataGridView. Then drag the table and drop onto the form. Adjust the size and position to your preferences. Compile and test that. Note that you do not need to add or modify any code yourself, but you can put the following in the
    Form1_Load event to verify that the datasource is what you think it is:
    Code SnippetMessageBox.Show(Me.CategoriesTableAdapter.Connection.ConnectionString)
    Note that this program is only reading; it is not updating but I think that the connection is capable of updates. The important thing is to determine if you can do this much; I can and I do not remember if I made any modifications to allow it to happen. I might have modified the security on the file to allow update access; I am not sure.

  • Labview connection to SQL compact

    Dear friends,
    I am developing an application using LV touch panel module in order to run in a Windows CE 5.0 controller.
    On the same controller I have SQL server compact 3.5 and I was planning to use it in order to store the necessary data. The problem is that I cannot find a way to connect to it from labview and run the queries I need.
    Please advise.

    The DB Tools Open Connection VI is a polymorphic VI which can take a string as an input.  You just use the connection string as the input.  You don't have to setup anything in ODBC to have this work.
    Message Edited by Matthew Kelton on 07-23-2009 09:12 AM

  • SQL Compact 4 on Terminal Servers possible?

    We want to use a SQL Server Compact 4 database for a local cached database.
    We need this to work on Terminal Servers. It works fine but only for the first session which starts to use it. All newer session gets error messages like:
    Error: There is a file sharing violation. A different process might be using the file.
    We've tried all the available connection modes (like read or Shared Read) but nothing works. Does this sound familiair and is there a solution or good fast alternative?

    Only the service has exclusive access to it.
    If the database is open with "exclusive Access", then no other app can open the database file, even not for read-only.
    Olaf Helper
    [ Blog] [ Xing] [ MVP]

  • SQLite Linq to SQL novice question

    Hello!
    I have a simple question about SQLite.
    I have small sample DB.
    CREATE TABLE table1 (
    name VARCHAR,
    surname VARCHAR
    I inserted 3 records via SQLite manager to this DB.
    Now I'd like to read and this DB in c#.
    public class SampleDB : DataContext
    public Table<Peoples> peoples;
    public SampleDB(string connection) : base(connection) { }
    [Table(Name = "table1")]
    public class Peoples
    [Column(Name = "Name")]
    public string Name { get; set; }
    [Column(Name = "Surname")]
    public string Surname { get; set; }
    class Program
    static void Main(string[] args)
    var connection = new SQLiteConnection(@"Data Source=d:\via\simple.sqlite");
    var context = new DataContext(connection);
    var peoples = context.GetTable<Peoples>();
    SampleDB db = new SampleDB(@"Data Source=d:\via\simple.sqlite");
    var query = from q in db.peoples
    where q.Name == "Alex"
    select q;
    Variable "Peoples" is working good. But "query" is not working. What's wrong with this code?
    Thanks.

    I think you're supposed to use a regular SQL query with SQLite.  I'm not a SQLite expert so I'm not sure. 
    Matt Small - Microsoft Escalation Engineer - Forum Moderator
    If my reply answers your question, please mark this post as answered.
    NOTE: If I ask for code, please provide something that I can drop directly into a project and run (including XAML), or an actual application project. I'm trying to help a lot of people, so I don't have time to figure out weird snippets with undefined
    objects and unknown namespaces.

  • SQL Server Compact Visual C++

    Is SQL Server Compact a viable platform for future development?  I'm using VS 2010, Native C/C++ and need a good tutorial to walk me through the process of creating a simple db application.  Any suggestions?
    If SQL Compact is not a viable platform, I would appreciate some direction.  My application is very well suited for the 'Compact' single file database with a small number of users.  I'm not interested in .NET.
    Thanks,
    Bob Nichols
    Bob Nichols

    AFAIK, Microsoft stopped SQL Server Compact development and today SQLite is most used on devices.
    It seems that for new application it could be the best choice also portable on other platforms.
    Paolo.
    Paolo Patierno

  • How to get Cumulative Update packages for SQL Server Compact v3.5 SP2 for use on a Windows Mobile device

    There are links on the pages for various Cummulative Updates for SQL Compact v3.5 SP2 which look to relate to the desktop version, but are these also available for Windows Mobile devices?  If so, what is the process to get hold of them?
    We are seeing intermittent problems with corrupted databases on devices which are using SQL Compact v3.5 SP2 and have seen that some of the Cumulative Updates do relate to corruption and would like to see if these can help to solve the issue.

    Just select the KB article, at the top of each there is a link to request a hotfix, you will then get a email with a download link. The 8088 and 8109 hotfixes also apply to Windows Mobile.
    http://erikej.blogspot.dk/2010/08/sql-server-compact-35-sp2-downloadable.html
    Please mark as answer, if this was it. Visit my SQL Server Compact blog http://erikej.blogspot.com

  • Can TS work with sql server compact or express?

    I'm don't have much experience with the underpinning of database systems.  I know conceptually how they work and can hack my way through sql queries.  Is there something fundamentally different about a Sql Server Compact itnstall versus Sql Server versus Sql Server Express?  Can TS work with any of them with a proper connection string?
    My problem is at our local site a previous employee set us up on Sql Server and wrote a web app (.asp) to do the query for presentation on a web page.  At an offsite location they can't install Sql Server and I'm trying to figure out the best path for them to be able to use the same .asp tool we have.  My gut feeling is the .asp tool is probably set up such that it wouldn't take much to make it work with MySql but because I don't have the luxury of time I'm hoping someone can point me in what they think might be the easiest direction (whether that is sql compact if possible or MySql for them).

    Hi,
    TestStand works with SQL server express. (not sure about SQL server compact).
    Ravi

Maybe you are looking for

  • Error about retrieving dependency MStudioCommon.2012

    I am developing applcaiton based on visual basic .net and I would like to build installation package by installation shield. However, when I built the setup project, I am getting an error , so i can't build install package. When I was building setup

  • Correlation set based on Human task - receive activity

    Hello everybody, is it possible to define a correlation set based on a receive activity of an human task? Thanks, Chris

  • Uploading and attaching files problem

    Dear all, Since a couple of weeks,  I can not attach anything to a mail nor upload any image or file on any website (facebook, fileshare etc.). The finder always freezes (no matter if it's Mail, Safari, Chrome or etc.) and I have to start the app aga

  • Ios7 crash while using bluetooth keyboard

    A lot people complained a few months now, do not hear back from Apple support. Start new post, everyone jump in to alert apple support please!

  • Bitmap Data

    Hi,      I would like to know how to copy a portion of an image in an irregular shape using bitmap data or any other function. Kindly let me know if you need further explanation in this. Regards, Kameshwaran A.