I have developed C# application that stores and retrieves data from SQL database.
But when my client had to deploy the application he needed to install sql server express 2008 ,that is its requirement.Now he wants that software to install with no extra installing add-on.so i except for dot net framework there should not be anything extra to install.
i have seen some databases like SQL compact,SQL lite ,SQL CE and blackfishSQL but i really donot know that do they require extra install and what effort do i have to make to change my whole code according to selected database
I looked at this
Please help me
I suggest going with SQLite or Server Compact (SQL CE). They don't require extra install.
Another option is to include SQL Server Express in your setup project, so it will be installed automatically if needed.
SQLite has a reputation of being fast and robust.
However, if you like Microsoft products and you already have everything working in SQL Express, then SQL CE might be a better choice from development tools support point of view.
SQLite is by far the most popular option usually considered for such scenarios. It does not require any extra installation..the DB interface itself is available in a dll and all u need to interact with your database is the interface dll. As to the extent of efforts that would be required to port your application, it would depend on the extent to which you have used Sql Server specific SQL constructs..the closer your code is to ANSI SQL, the easier it would be to port it to any other ANSI SQL compliant database like SQLite. Usually the task becomes much easier if you have used ORM technologies in your application, since they provide an additional layer of abstraction between you client code and the database
I'm sure the original poster no longer needs this information anymore - but for the sake of others googling the same issue - let me add a bit of my own.
I'm only recently in the process of converting a C# program from using SQL Express to SQL Compact - and its relatively easy when compared to converting to a SQLite project. The code is extremely simple. Where in SQL Express you might use SqlCommand, this simply becomes SqlCeCommand. Very easy to convert from one to the other.
Related
I have inherited a legacy system written in PowerBuilder which connects to an SQL Anywhere 5.5 database via ODBC. The Sybase drivers are not 64-Bit compatible so this system is throwing errors and there are no updated drivers available. I do not currently have the budget to update the database to a current version of SQL Anywhere (which requires a /seat license) and I'm under the gun to get the system working on a 64-Bit PC.
Advice, please! Is MS SQL Express a good option?
Thanks in advance.
PowerBuilder is a 32-bit application even when run on a 64-bit OS. You will need the 32-bit version of whatever DBMS you decide on. I think that SQL Anywhere might be 16-bit, it is that old.
I think you'll find MS SQL Express very similar. One main issue is the default database owner. SQL Anywhere is normally dba while SQL Express is dbo.
SQL Server Express is a reasonable choice for what I can get from your described needs. IMHO, any RDBMS supporting 64-bit might be a reasonable choice as long as you take over the data migration toward this RDBMS.
The most crucial part, according to me, is the migration from a RDBMS to another. You'll have to make sure to replicate every exact details (tables, views, stored procedures, functions, etc.)
Another fact that makes me believe that SQL Server Express is a good choice is that they both are TSQL. A historic fact is that Microsoft has bought Sybase ASE to start their own RDBMS now known as SQL Server.
PowerBuilder shall see no difference between the RDBMS since it accesses the underlying database through ODBC. All you need is make sure your workstation has ODBC supporting 64-bit.
I have looked through many pages trying to find this information but all I get is the backbone structure and how the SQL server runs. What I would like to know is the difference of commands. Which commands can you use in 2008 but are not supported in 2005 with or without adjusting the compatibility level. I design different queries and my clients differ in their database versions. So when I create something, I would like to know if it will work before I put the time in or start actually breaking my head over why the code doesn't work on the clients computer but it does on mine. An example would be Pivot where I have to change the compatibility.
So what commands have changed? Either a link to a page or if it's not much to type out, it would be greatly appreciated.
This technet article has a list of the new commands in SQL 2008 T-SQL
There is some info here but it's not a whole lot so I am suspect that it's complete listing
http://msdn.microsoft.com/en-us/library/ms143179(v=sql.100).aspx
Version control!
Usually lower version's commands are available and work well in higher versions. But not quite the other way around. Take a look at the following post.
Advantages of SQL Server 2008 over SQL Server 2005?
For each major version Microsoft does release improvements done or changes made under product info.
The dev tools for SQL in Visual Studio are great.
Is it possible to develop an app for Microsoft SQL Server, and then deploy a MySQL-compatible database instead?
The dev tools for Microsoft SQL Server are really nice (i.e. LINQ support), but a MySQL-compatible column database has better performance for huge datasets.
You would need to use MySql .net connector
http://dev.mysql.com/doc/refman/5.1/en/connector-net.html
With this, you get some of the functionality that you have with SQL server (entity framework, designer, etc) there are still a bunch of things that are not supported, but it's a good start
It's possible, but a number of specifics might tend to prevent a full implementation on SQL Server, particularly with respect to stored procedures.
However, if the intent is to build a scaffolding on VisStudio and finish the development using the MySQL tools, it would work okay. You'll have to learn both SQLs quite thoroughly. The sooner you do that, the less grief there will be in the conversion.
One method for doing this would be to abstract away the database itself. That be done at least a couple of ways; the first way, you could use classes to build the SQL that your application requires, and then just use that; then all that has to happen is that it has to know how to generate the right SQL for the right server. One of the drawbacks of doing it that way, though, is that if you depend on functionality that exists on only one DBMS, you'll have to emulate it in that abstraction layer.
The other method that you could use is to create two versions of your classes that talk to the RDBMS, one for MySQL and one for Microsoft's SQL Server. Use an interface and derive from it in order to do the actual implementation. Of course, you'll want to make sure that the only responsibility of the class is to interact with the database, so if you're doing this for business layer objects, you'll be implementing those sorts of things with two classes: a low-level one for the database API, and a high-level one for actually providing the API that your application is going to consume.
Perhaps not a direct answer to your question, but the dblinq project may be of use to you.
It may be worth a look just to see the MySQL implementations within the project in order to determine what the real differences between SQL Server and MySQL are going to be and how they're going to affect you. The more you can abstract out those differences behind a dependency implementation, the easier it'll be to swap out one implementation for another.
You can write your code for SQL Server and then switch to Devart LinqConnect.
For example, you can create a LINQ to SQL model using Entity Developer (in VS integration mode or in standalone mode), then change the connection to the MySQL-specific one and run Update Database from Model wizard (don't forget to select the Regenerate Storage check box).
As a result, you will obtain a MySQL database, having structure identical to the SQL Server one.
is there a windows xp utility to make a database such that its support by sql server, oracle, and other db management systems.
the database schema is very huge so i would like to know what to use to make it so its protable from sql server to oracle if future demands that change?
In short, what you seek is nearly impossible to do successfully. Every database product has enough quirks that building such database would not perform well and would be too limiting in terms of the features you were able to use. I.e, you have to play the game of lowest common denominator with respect to features that all products implement you want to support. A far better solution is to abstract the data layer into its own library accessed via interfaces so that you can swap out your data layer. ORMs, as Rafael E. Belliard suggested, makes this simpler but it can also be done manually.
I would recommend building your database using an ORM like Hibernate for Java (or NHibernate for .NET). This would allow you to seamlessly transition from one database type to the other with little to no issues. They would allow you to logically create the database schema without a specific database in mind, which you could then move from one database to the other.
I have created applications which change from SQL Server to MySQL to Oracle to MS Access to SQLite easily (clients love that flexibility).
However, you would need to know your way around programming...
For smaller websites which are view-only or require light online-editing, SQL Server 2008, Oracle, and MySQL are overkill.
In the PHP world, I used SQLite quite a bit which is a e.g. 100K file holding hundreds of records which you speak to with standard SQL.
In the .NET world, what options do we have, I've seen:
SQL Server 2008 Express (free but the files are bloated 2-10MB with just a couple records)
SQL Server Compact 3.5 (seems interesting)
Vista.db (not free?)
What about SQLite with .NET, have any of you had success with that?
Any other small, no-nonsense, SQL databases for .NET there?
I would particularly be interested in something like SQLite but that supports CLR type system and LINQ.
Maybe this Wikipedia RDBMS comparison might help you in making your choice.
SQLite works just fine with .NET.
I second Edoode's suggestion of Firebird - that works great for me.
Be very careful when using SQL Server CE in multi-threaded applications.
I had to use Interbase at work, so I came to Firebird.
First I had to use it, now I love it.
There's a .NET Data Provider (ADO, DDEX).
U can even use it without setting up a server, like you do with SQLite (direct access to the database file).
It's actively developed and "open source".
I don't think there is any database that supports the CLR type system, even SQL server uses their own types.
Besides the already mentioned alternatives there is also Firebird
You can also have a look at db4o which is not SQL but a fully managed object store for java and .NET.