We are looking at creating a custom ASP.NET application for a client, however they are a nonprofit and thus budget is limited.
We typically develop ASP.NET web and desktop apps to connect to a central SQl Server 200X database, ie with a full version of SQL Server, running on networked Windows Server. In this case we won't have a full version available.
Are there any issues with using SQL Server Express in this sort of arrangement? IIS and SQL Server Express would be running on the same physical server, serving up pages over the local Intranet to users.
Any real differences to be aware of in regards to development of the app itself or deployment? This will be a fairly standard app, with SQL mainly being used for a datastore with tables and SPs, nothing really SQL Server specific beyond that.
SQL Server Express edition should be fine for this scenario. It has all the core features of the full product, but as you said you are only really using it for data storage and some SPs, then you will not need any of the additional functionality available in the other versions (ie. reporting and analysis services). There are some limitations to the express version (the biggest being that the maximum database size is 4GB), but they should not really affect you unless your are building a very busy ASP.Net application.
Some public-facing websites use SQL Server Express as the database server (DotNetKicks being the only one I can remember at the moment) without issue.
The exact list of unsuported features in Express is at SQL Server Express Features:
Database mirroring
SQL Mail
Online restore
Fail-over clustering
Database snapshot
Distributed partitioned views
Parallel index operations
VIA protocol support
Mirrored media sets
Log shipping
Partitioning
Parallel DBCC
Address Windowing Extensions (AWE)
Parallel Create Index
Hot-add memory
Enhanced Read Ahead and Scan
Native HTTP SOAP access
Indexed views (materialized views)
SQL Mail and Database Mail
Partitioned views
Online Index Operations
SQL Server Agent and SQL Server Agent Service
SSIS, SSAS, OLAP/Data Mining
The SQL Server Express with Advanced Services Features supports a "subset of Reporting Services features".
In addtion there are the operational restrictions:
Express will use onyl one CPU core
Express will not grow the buffer pool over 1 GB no matter how much RAM you have
Express will not allow any database to grow over 4GB and will not put online (restore, attach) databases that are already over 4 GB.
The key problems you may run into are the operational restrictions (one core, 1 GB ram, 4GB each database) and the lack of SQL Agent, preventing any sort of job scheduling.
You should not really run into anything, its actually a full featured product that MS SQL Express
Here's a really basic comparison from Microsoft.
Related
I have transaction scope in my code which move transaction to MSDTC. But when I run this code into AWS cloud where RDS is SQL server. It is not supporting MSDTC please how can I make this supportable or what will be alternative way for this. I need MSDTC in my code.
Well, there isn't much that you can do since AWS does not support it (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html).
Features Not Supported and Features with Limited Support
The following Microsoft SQL Server features are not supported on Amazon RDS:
Stretch database
Backing up to Microsoft Azure Blob Storage
Buffer pool extension
Data Quality Services
Database Log Shipping
Database Mail
Distribution Transaction Coordinator (MSDTC)
File tables
FILESTREAM support
Maintenance Plans
Performance Data Collector
...
...
The alternative is to deploy/host/manage your own MSSQL server on AWS.
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.MSDTC.html
Looks like this is now supported by AWS.
I just bought a WD my cloud ex2.
The reason I bought this over the white original my cloud is that this machine can produce a public IP for FTP transfer, becoming a true cloud based storage. But i also want to free myself from the chains of expensive web-hosting and it makes me feel even more pathetic because I have a storage device and I'm still buying storage for my websites. I build asp.net websites using WebMatrix, and have a SQL Server Database. Can my storage device run ASP.NET? I don't know much about Windows Server, but does that have to be installed in the myCloud? Would there be any way to do so?
Thank you.
No. Not an MS box. But you can use MySQL and recode your asp.net to php. Another great choice would be to get a free (for 1 year) Amazon Web Services EC2 instance. You can run a small MS Server there and keep your stuff in ASP.net
I am using a c program to write/delete 1-2MB of data periodically (10min) to sqlite3 database. The program also act as a read only database for my node.js web server to output Restful APIs. (I can not use node.js modules because node.js web server is on different machine)
In documentation its mentioned that in client/server architechture RDBMS might be good but that point is not put strongly
I am using a c program to act as a server to answer web servers request as well as other processes on different machine. The system require small data (~2-5Mb) frequently (every 5min).
If it is not good to use sqlite as client server database How can I convince my manager?
If its okay then why do they not have a standard server plugin?
When the SQLite documentation speaks about a client/server architecture, it says:
If you have many client programs accessing a common database over a network
This applies to whatever program(s) that access the database directly. (In the case of SQLite, this would imply that you have a networked file server, and that multiple clients access the database file directly over the network.)
If you have a single process that accesses the database file, then you do not have a client/server architecture as far as the database is concerned.
If there are other clients that access your server program, this has no effect on your database.
We are currently using SQL Server 2008 Express Edition, but would like to upgrade to Standard Edition. Does it mean that we need a license with 20 seats, if we have 20 Active Directory users that are using the DB from a C# application?
If yes, does it make sense to switch from Windows Forms to Web Applications in order to decrease the amount of licenses needed?
Switching to a web app won't change the licensing needs of your application. If you have 20 users connecting to your SQL Server then you need 20 CALs for Standard Edition as whilst you may have a single "user" connecting to the DB you're still servicing 20 users. The MS license docs cover this in some detail.
The alternative approach for to go with per processor licenses. You obviously need to do the maths to work out which option is more cost effective for your user growth estimates.
Given that you're starting at 20 users the per user (CAL) route will probably be the cheapest option.
You have two types of licenses available to you, each with their own set of rules and scenarios where they make sense.
Per Processor License. Here you license each physical (or virtual if you are using virtualization and depending on the Sql Server Edition) processors.
Server/CAL license. Here you would buy a license for each server running Sql Server and Client Access Licenses (CAL) for each user or device. Note that a CAL would allow that user or device to connect to any number of SQL Servers without the need to buy additional CALs if you add additional servers. Also, any type of software or hardware that reduces the number of devices or users that directly access SQL Server (an example would be the use of a web application to reduce the number of users that connect to the database directly through connection pooling) would NOT reduce the number of CALs you get. You will still need to get them for each user using the web application.
The following microsoft link provides pricing points for Sql Server 2008 and also includes a Sql Server 2008 R2 Quick Reference, which includes all the information that you might need. We can see that based on the above link:
Per Processor would cost you $7,171.00
Server/CAL would end up being $4,178.00 based on the bellow calculations
Server $898.00
CAL $164.00 x 20 = $3,280
Total $898.00 + $3,280 = $4,178.00
Of course this is an estimate that doesn't include tax, discounts, or software assurance.
If you want more information I would recommend asking on serverfault
I have a client who is interested in hiring my company to do a small, custom, multi-user contact database/crm. They don't care about the technology I use, as long as the product is hosted inside their organization (no "cloud" hosting). Now the problem is that their IT department refuses to host any application developed by an outside company on their servers, additionally they will not allow any server not serviced by them inside of their network.
The only means of sharing data that IT would allow is a windows network share...
I was thinking to do the application as a fat client in Adobe Air, and let all users access a shared sqlite database, but then I read a lot of negative things about this approach.
So I'm asking you - Are there people out there who have actually tried this ?
What are your experiences ?
You can use an MS-Access 2007+ (accdb) file.
Of course there are many database engines with much more features and much better SQL syntax, but if you are looking for a file-based database system that can be accessed simultaneously by multiple processes on a shared Windows drive, then an accdb file is as good as you're going to get I think.
Also note that another popular embedded database, SQL Server Compact Edition, cannot be used on shared drives (at least not by multiple processes from different machines).
References:
Share Access Database on a Network Drive:
http://office.microsoft.com/en-us/access-help/ways-to-share-an-access-database-HA010279159.aspx#BM3
SQL Server CE Cannot be used on a shared drive:
SQLCE 4 - EF4.1 Internal error: Cannot open the shared memory region
The ways sqlite locks databases means you have to be careful if there's a chance you'll have multiple sources trying to access the database. You either have to develop a waiting method, or a timeout, or something