I created a setup with Wix toolset to deploy a Winform application that has an SQLite database. The issue I have is that I cannot write into the database and the inner exception says "Attempt to write to ReadOnly Database".
I have searched Stack Overflow and the problem appears to be with Root folder access. I saw an option that one can include an executable to allow access to the Database as an administrator.
Can anyone show me how this is done?
Thanks in advance.
Related
I have an MVC app with a database that is saved in C:/Users/USERNAME. I want to open it in SSMS via attach. When I browse in that folder location it appears empty because SSMS can't read it.
How can I give SSMS permission to see that folder or how can I make my MVC app read the database from another folder? I know questions about this have been asked before but they are all from 2012 and vaguely explained so I can't make much use of them.
Or, if it's easier is there another way to open a database that works on my MVC app in SSMS?
I have a code-first ASP.NET MVC app that ran smoothly and was able to access the data from SQL Server until I copied the project over to another location and opened it from there.
I get the following errors:
System.Data.DataException
HResult=0x80131501
Message=An exception occurred while initializing the database. See the InnerException for details.
Source=
StackTrace:
Inner Exception 1:
EntityException: The underlying provider failed on Open.
Inner Exception 2:
SqlException: Database 'C:\Users\BICHE\Desktop\FinalCSharpChallenge\FinalCSharpChallenge\App_Data\StudentContextDB.mdf' already exists. Choose a different database name.
Cannot attach the file 'C:\Users\BICHE\Desktop\MY REPOS3\The-Tech-Academy-C-Coding-Project\FinalCSharpChallenge\FinalCSharpChallenge\App_Data\StudentContextDB.mdf' as database 'StudentContextDB'.
My questions are: why does this happen just because I moved the project from my desktop to another location on my computer?
Can this be solved by making an "if" statement that proceeds to use the StudentContextDB if it exists, and creates it if it doesn't? (My instructor suggested this, so I'm thinking I will try this first)
Lastly, if this is the right solution, what would be the syntax for that particular statement? I've seen instructions for Drop and Create, but not Use or Create.
I appreciate any insight people may have on this issue!
SqlException: Database '...' already exists. Choose a different database name.
It looks like your code is trying to recreate the database... If this is a new deployment, you probably want a new database ; you should modify your code to have a database location which is relative to your application home directory.
The other advantage is that, if you give your application to other people, they will have their database created on their computer under the relative path defined by you, so that will play softly as well.
Short version here is that the db server still has a reference to the old location of the database. You moved it and tried to fire up the app and point to a new location of the database with the same name. The db server doesn't know how to handle that. It would be better to detach the database from the db server then move the files.
This is my first time on here. I am having an issue deploying a java application I made on myEclipse. I am using Filezilla to host my Wildfly 9.0.2 test server. I exported my project to a .war file and upon dragging it into the test server I am met with a deployment.failed. Upon viewing the file in Notepad it declares "Services with missing/unavailable dependencies". one such error can be seen below:
[ "jboss.naming.context.java.module.myproject.myproject.env.common.jdbc.database_connection is missing [jboss.naming.context.java.database.connection] "
There are five of these similar errors and all point to a diffferent database connection of some type that I am not using within my project. I understand the issue but I do not know where these dependencies are declared and how I can go about removing them.
Any help will be greatly appreciated.
Kind Regards,
Paul
Creating the WAR file will use the project's deployment assembly (assuming you're using MyEclipse 2013 or later). Right click on the project and select Properties. Then go to the MyEclipse/Deployment Assembly page. This will have all of the files that are added to the deployment (or to the WAR file).
However, the message seems to suggest that a project is using a database connection which can't be found when running on the server. A first thought was that you're using the inbuilt Derby database but don't have that running when you run on Wildfly.But you say that you're not using a database. Also, I'm not familiar with how Filezilla can host a J2EE server - I thought Filezilla was an FTP client and server solution. Perhaps you could give more details, if this answer doesn't help.
I created SSIS packages and used the Integration Services Deployment Wizard to deploy it out to the server. I'm manually going to the Integration Services Catalog access through SQL Server 2012 and right-clicking and executing my package.
However, the package keeps failing and I'm getting the following errors when I check the execution report's messages.
They appear to be failing on data tasks where I have script components.
Assign :Error: CS2001 - Source file 'C:\Windows\TEMP.NETFramework,Version=v4.0.AssemblyAttributes.cs' could not be found, CSC, 0, 0
Assign :Error: Failed to compiled scripts contained in the package. Open the package in SSIS Designer and resolve the compilation errors.
This answer is a more detailed version of UberDoodles answer.
In Windows Explorer.
Navigate to C:\Windows\Temp\
Right click the folder and select properties
Go to tab Security, choose Advanced
On the default tab Permissions, choose Change Permissions
For the relevant Permission entry, choose edit.
By default, I had 'allow' checked for Traverse folder / execute file, Create files / write data and Create folders / append data.
Also check 'allow' for List folder / read data and Take ownership.
Press OK, the window closes
Press Apply and confirm anything you need.
Additionally, the logged in user had already Full control, but when I changed this for the entry 'Users', it worked for me.
(based on microsoft file/folder permissions).
I had the same problem today, just on SQL 2016.
For me it helped to change the target server version in Visual Studio project properties from SQL Server 2012 to SQL Server 2016.
I was investigating the same issue, and I came across a solution here :
https://social.msdn.microsoft.com/Forums/vstudio/en-US/73e67f3a-c575-4c73-a71d-ed7a2aeabb50/csc-error-cs2001-source-file-cwindowstempnetframeworkversionv40assemblyattributescs?forum=msbuild
Basically, the account which the package runs under needs to have full permissions to the C:\Windows\Temp\ folder, so that it can create temporary classes.
It worked for me :)
I had the same problem. I first used Eric G. response and added the List and Read permission to the c:\windows\temp. After I got everything working I went back and removed that permission. I then redeployed my solution from Visual Studio, this time designating the deployment target as SQL Server 2014 (which was the environment I was using) using Martin's solution. I then reran the process, and it worked with the List and Read removed.
I kept it using Martin's solution, as I don't like to have special permissions granted if I don't need them.
Good Luck
[Visual Studio 2017 15.9.16]
I just restarted Visual Studio as Administrator and the issue disappeared, which confirms the permissions idea of the answers above but spared me all work.
It's not a quirk though, as per this question and its answer you need that kind of permission for several tasks, like profiling and debugging under certain conditions.
For the sake of completeness, this blog says you might incur in some security contraindication if run VS as administrator when opening third-party solutions.
I recently developed a winform application with c# and SQL Server 2008 data access. I want to create an "InstallShield express" setup file for it (I don't want to use ClickOnce or Setup And Deployment witch is available in VS). I want to create a db or attach it to SQL server instance after installing SQL Server Express 2008 SP3 (not local db). What is the best way to do this?
Your question is quite vague as you do not explain what kind of “app”, “setup file” or “db” you are using, nor how you “attach it to sql”. In the future, please include these details. However, I can give a general answer.
Create a seed database, that contains the starting data for your application, in your source project.
Add the seed database file to your project/solution file and set its Build Action to “Content”.
Ensure your installer includes project content in the deployment folder (the application folder for WinForms apps).
To open the seed database from your app, use a connection string like Data Source=|DataDirectory|seed.sdf. Do not try to search for your seed file or to set DataDirectory yourself; the installer will set DataDirectory to the directory your content was installed to.
Do not try to write to DataDirectory; it may not be writable by the user who installed it. Repairing the app will overwrite DataDirectory, destroying anything you saved there, as well.
If you need to save data in the database, copy |DataDirectory|seed.sdf to Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), then read and write all data to the copy.
For more information, read my answer to a poster who wrote to |DataDirectory| and therefore kept destroying his user's data.