Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I have spent a few days for implementation and testing some SQL-based database management system for my project. It's a small local shop management system, supposed to be sold to many of users and shop owners. It will be an offline system for owners and the staff of the shop, so we need to secure the database from unwanted accesses. I need a SQL database management system that works with .NET Winform (C#) EntityFramework and easy to build an installer package. These are what we have tried:
SQL server Express 2012: SQL database, free, works well with .NET and Entity Framework but pretty hard to build a perfect installer for users without having them to manually install SQL Server System on their computer and it doesn't protect the database from unwanted accesses.
Localdb: portable, free, works well with .NET and EF, easy to deploy, very reliable but again, not secure.
SQL Compact Edition: almost the same as Localdb, has its own password encryption feature for the database but has been deprecated, isn't stable enough and doesn't work really well with EF.
SQLite: just like SQL Compact edition.
SQL server 2016 Developer edition: same as SQL Server Express, plus the database encrytion (TDE), but I haven't figured out how to make a good installer.
There are tons of software like this out there, how did they solve these problems?
Looks like SQLite will suit your bill. Entity Framework does have an SQLite provider and the database itself requires no server software or other infrastructure to be set up, it’s literally just a file.
If you really want to make it secure, you could encrypt the entire database, but that would have certain memory and CPU requirements to work with. If you encrypt individual fields, the schema and individual fields will be visible. Foreign keys could be difficult with such setup.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
I'm trying to configure azure sql database backup to my local server in weekly basis. This backup will be automatically. even its fine its possible togenerate database script through c# code. There have any tools or c# code that I can create schedule task to take back in weekly or daily interval ?
Thanks in advance!
You should use the Azure feature for the automated backups.
If you setup using the azure webapp, be aware that you can find the backups option at the server (and not at the database) level.
For the retention policies and the frequencies you can look into the Microsoft documentation which is well written.
OK, while the ans by #Giovanni Patruno is totally correct, I will share a no-cost and platform-independent solution, that I am using to backup my DBs.
By No-cost I mean, Azure automated backups and retention policies have cost associated with it but if you want to save that bit, you can design your custom backup pipeline using SQLPackage.exe or PowerShell Az module.
By Platform independent I mean, by using Azure automated backups you can only backup your database on Azure servers. What If you want to restore it in your local environment be it windows or Linux? Then you go the following way:
Create .BACPAC file of your Azure SQL database using SQLPackage.exe at the scheduled time and either download and store it locally or store it in Azure storage account. Later you can restore your database on windows or Linux using SQLPackage.exe (!again) or keep this file for as long as you want for LONG TERM RETENTION.
You can do the above processes using PowerShell AZ module as well.
Both of these processes are well documented here.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 3 years ago.
Improve this question
We recently came across an issue when trying to register some custom SQL CLR assemblies we have created on SQL Server 2017 v14.0.3238.1.
First of all, these assemblies require that they have External Access Permission, as they call external APIs. It seems that this issue is only appearing when trying to run them on an MSSQL Server that is hosted on a Linux Environment.
In addition, we have tried creating asymmetric keys (both with SN.exe tool from Microsoft SDKs and through VS 2017) and also signing these CLR assemblies, without any luck. (Followed instructions as found on: https://techcommunity.microsoft.com/t5/SQL-Server-Support/Deploying-SQL-CLR-assembly-using-Asymmetric-key/ba-p/316727)
When trying to register the assemblies, we are receiving the error:
"Assembly 'Sample_CLR' cannot be loaded because this edition of SQL Server only supports SAFE assemblies."
Has anyone stumbled across a similar issue before?
This is documented in Unsupported features & services:
The following features and services are not available SQL Server 2019
on Linux. The support of these features will be increasingly enabled
over time.
Database engine
Merge replication
Stretch DB
Distributed query with 3rd-party connections
Linked Servers to data sources other than SQL Server
System extended stored procedures (XP_CMDSHELL, etc.)
Filetable, FILESTREAM
CLR assemblies with the EXTERNAL_ACCESS or UNSAFE permission set
Buffer Pool Extension
Emphasis mine
You can only use SAFE CLR functions on SQL Server on Linux. There is no work around, as it is a documented unsupported feature.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
We are developing a windows desktop application, that requires local caching (synchronization) of a remote SQL Server Express database. We are accessing this database over WCF.
So, we need to synchronize the remote database with a local, light-weight database, that is supported by Entity Framework, like SQLCE or SQLLite.
We know that Sync Framework does not support SQLCE 4.0 and we wish to avoid Sync Framework (because it looks like a dead technology) and SQLCE 3.5 (because it's old).
Is there any other way to perform the desired synchronization between SQL Server Express and any light-weight database supported by Entity Framework?
Yes, you can use Zumero for SQL Server, supports all your requirements - uses SQLite
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I have been using SQL Server 2008 as the database for an windows desktop application. I am re-engineering the product and I might use SQL Server 2008 or MySQL going forward.
So I am thinking of a general solution for archiving. Is there something similar to SqlDump in SQL Server 2008? Presently I am not using an ORM, I might plan to use Entity Framework in the coming days.
Basically I want to remove the old entries and whenever report has to be generated, I have to recover it as well..
Also I have an issue here: what if the database schema changes? How do we restore the old database?
If there is no common solution i would appreciate the solution specific to SQL Server 2008.
The topic of archiving, in general, is too broad for this forum. But I'm going to put in my two cents. I have found that it is best to archive records (i.e. literally move records from one table to another) and oftentimes in a different database.
This handles the schema issue because you can modify the schema of the archive table and keep it in sync.
It also allows you to write specialized reports that actually include archived data as an option.
It further allows you the ability to setup the server architecture for your archive databases differently than your production databases. They don't even have to be on the same server. They don't even have to be linked. Building a .NET application to move rows from one database to another on regular intervals based on your needs would be pretty trivial.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am planning on writing and commercialising a C# app which will store data in an underlying database
I use MySQL on my environment for my own development and this is what I would have used to write the application for myself (no need to use FK - MyISAM engine would be fine).
I am concerned about how easy it will be to distribute the app together with the database engine.
Would using MySQL allow me for easy packaging of the app for a "one-click" install on the client side? (ie I do not want them to have to install MySQL by themselves) and also is it feasible from a licensing point of view?
Are there other Database systems which would make the process more straight-forward
Take a look at SQL Server Compact 3.5
Sqlite is very simple. You just deploy the DLL with your app. I can't tell how appropriate it is for your situation, given the lack of info.
I think SQLite could do the trick, as it is a filesystem-based database, so no installation required.
Access could also do the trick, and most of businesses have it already installed as part of Microsoft Office, though you wouldn't need it to be installed in order to use the Odbc or OleDb assemblies that are part of the GAC.
The key here is what kind of database you need. Is this database to be shared among several users of the app? If so, than MySQL would be fine.
But it sounds more like you intend to use this database as a private data store, where each installed instance of the application has it's own data local to that machine or profile. In that case, you want an in-process engine like Sql Server Compact Edition, Sqlite, or even Access rather than a server-class engine like MySql or Sql Server Express Edition.
I think, that an embedded DBMS is the best way for yor. For example, you can use Firebird Embedded
SQL Server 2008 Express is available for redistribution by ISVs. You an also deploy this using Microsoft Web Platform Installer.
SQL Server Express is another option. Has excellent integration with .NET, free to install and supports upto 10GB per database (or more if you use the Filestream feature).