SQL Server database recovery - sql

I simply copied my .mdf/.ldf files to another file and suddenly my Microsoft SQL 2008 database dies. I can't open these files on another system either. Can anyone explain what's happened? Any way to recover this application's database now?

Did you stop the service or detach the files first?

You are not supposed to copy files when the server is online.
if you want to copy when the server is online, you can right click on management studio , -> detach->
then copy the files to another instance , and choose attach on new server. remember you need to know the location of the files, before you detach, also you should be knowing, also the logins need to transfer.

Have you tried moving the database files back to where they were? (Specifically, stop SQL server, move files, start SQL Server).
Whenever I do this kind of work, I make copies of the files, and rename the original ones (from, say, MyData.mdf to xMyData.mdf). Makes it easier to back out when my fatfingers take over.

Related

How to unlock a Database.mdf file so can share with friends?

Does anyone know how to unlock a SQL Server .mdf file so can share with friends?
Because the file that my friend share with me for our group assignment happen to be locked up and that I can't use the data within and only can view it.
Actually I want to share my database with my partner in this group assignment. We use a similar database. However, due to reason of time meet up with our instructor, we both need to have our own holding of a database for presentation at different time.
Also the reason, I want to learn to unlock it is because, we may need to try in on different hardware as well. Is in by Exporting? Like what is shown in this link video? https://www.youtube.com/watch?v=c2XmaCFk-kk
Firstly, to be able to use .mdf/.ldf files in common operations like Copy/Paste you need:
1. Under Sql Server Management Studio right click on the DB:
2. Then under Detach window check 'Delete Connexions' and click Ok:
You're free to do whatever you want with your .mdf/.ldf files
You probably shouldn't be sharing the MDF files, but if that's what you want to do you will indeed have to detach the database and transfer MDF and LDF files before attaching it on the other side.
It's not completely clear what you want to accomplish, but I think your best option is to take a backup on your machine, transfer the backup to the other machine and restore it there, that way the database doesn't have to go offline.
See this link for a how-to on the backup/restore method.
See this link for instructions on the detach/attach method
Share SQL connection, not the MDF file. Use SQL Surface to enable network access to your DB and define user logins.

"Logical file 'Movies' is not part of database"

First and foremost, I am very brand new to databases so please keep instructions simple for me. thanks!
Usually when I need to make a manual change I just back up my SQL Server Management Studio 2012 database called Movies, then upload it to my host, then use their restore feature to implement it.
I am still in a testing phase so data does not need to be kept that is acquired online, however I wanted to try keeping the data today so I used the host's backup option which created a DB_76779_test_backup.bak file for me.
I then download this and "attempted" to updated it's information into the SQL database on my machine (Movie) which I believe is where I messed everything up.
From what I remember I right-clicked my database "Movies" and selected "Tasks -> Restore -> Database", I kept everything as is, but for Source I selected Device then chose the DB_76779_test_backup.bak file and and below that selected "Movies" as the Database and hit OK.
This seemed to work fine, so I opened and edited the tables values that needed to be changed. Then as usual, I just backed it up, ftp'ed it to the host, and restored my database.
I got an error however when trying to restore and my support told me the following.
"Logical file 'Movies' is not part of database 'DB_76779_test'. Use
RESTORE FILELISTONLY to list the logical file names."
I'm afraid we only support restores of databases that contain only 1
.mdf file and 1 .ldf file with no extra partitions.
I am assuming that since the only different thing I did this time was restore my database on my computer is that somehow I broke it, or created more than 1 mdf and ldf file (no clue what those even are). All I was trying to do was keep the actual data from online, so I am not even sure if that was correct way to go about this, but regardless I am unable to restore the database on my host now..
I am hoping someone here has instantly realized what idiotic mistake I made, because I only know a basic level of databasing and not much of the "under the hood" mechanics.
Let me know if you need further details.
That SSMS dialog is a little difficult to work with some times. It looks like you want to rename your database to Movies. The problem is when you change the name field it does not update the logical names it is using for the files. IIRC simply switching to the Files "tab" on the left will update it and then you can restore fine. That or do your restore with the "old" name and then name the database after restore.

VB.NET - Local database (SQL Server Compact 3.5 database) data gone after update?

I have created an application in VB.NET (using Microsoft Visual Basic 2010 Express) with a local database (SQL Server Compact 3.5 database) to store data.
I have installed this on the users computer, and added a "search online for updates" functionallity (which can be selected when publishing)
Now i have noticed, that sometimes when i upload a new version, the data from the database gets cleared. (possibly when i opened the dtb while developing)
This is offcourse not how i want the system to behave, and the data should always remain on the users computer.
In 'Application Files' the database file (*.sdf) is currently set to 'Data File (Auto)', but i'm unsure of the exact way this works.
Could anyone help me to understand how all of this works, and tell me how i can be sure that the data in the users database will remain, even after an update?
If there is no solution to ensure this, is there a way to safely backup the data and reload it?
Thanks in advance!!
Basically, the click one install overwrites everything in the program folder that is included in your publish. So if you include the .sdf then it will overwrite it when the installer is executed. What you need to do is select "exclude" on the sdf instead. This will keep the database in its previous state.
So my recommendation would be to have 2 different publishes. One that you create that contains the .sdf which is only used on first time installation, and then in all the update ones you exclude it.
To perform updates on your tables you would have to write the SQL for it in your software. Basically do a check on all tables to see that they have the proper setup on startup. If they don't then you add the missing columns.
Hope this helps.

backup sql database from .bak file from another server

I am working with this error for sometime now.
"Failed with the operaring System Error 21 (The device is not ready.)"
I scourged the internet but could not find the solution. Here are the links that look at
I am using this tutorial for importing the database (.bak) while which was exported from another machine and copied to mine.
On this page the very last paragraph is very helpful but it did not work for me.
I looked for other links and tried their solution, those did not work either.
I changed directory permission and allowed full access to everyone, that did not work. I also copy that .bak files to the other back databases that I have (and which imports fine), that still did not work.
Am I missing something simple, permission etc?
I am using SQL Server 2005 with SQL Server Management Studio.
I assume this was a security feature.
I could not restore the database into a name other than its original name which I was trying to do. But I could restore back on the same system into a different name. What I did is back my current database and restored them in different names that I wanted.
Right click on the original database and click restore. In this case do not change the name of the database or any parameters, it should now work.
I would also be caution to allow everyone in the directy where the backups are copied and give *everyone" object full control of the folder.
Hope it helps.
This error is a warning that you're saving the file(s) into a location that doesn't exist on that particular SQL Server workstation. For instance, if you backup a database on one machine containing an "E:\SQL_Databases" folder, and then transfer the .bak file to a machine containing only one hard drive designated as "C:\". SQL Server "remembers" where the .mdf, .ldf. and .ndf files resided on the first machine and tries to restore them to the same place. So make sure the location to which you are restoring the .mdf, etc. actually exists on the new machine. If everything doesn't match exacty, you receive this error.

SQL Server MDF file

I am working on a website that has access data from a database (sql server). It will also be adding, updating deleting records in the database. It seems like there is an MDF file that gets created containing the database schema and all the records I guess? Once development is complete and I want to move this database to a real server then all I need to do is move this MDF file to the real server and that is it? is it that simple? or not really?
Also, I hope the MDF file is not a read-only file and can be updated/modified or is it?
Yes, the MDF data file (and the associated *.LDF transaction log file) contains all the database objects that make up your system.
And yes, you can definitely detach a database (an .MDF/.LDF file pair) from your (dev) SQL Server, copy it onto another "real" Production SQL Server, and re-attach it there, without loss of data or information.
Yes, the MDF file is modifyable - through the SQL Server commands and methods. You should never tamper with the file yourself, directly (flipping bits). Use SQL Server and its official interfaces (T-SQL, ADO.NET etc.) to work with your data.
Yes you can do that. Right click the database and click "detach". Make sure you click the drop connections box and click ok (if you don't do this some errors could occur). You can now move the mdf and ldf files.
However, there is a better way imho. Instead, create a full backup of the database, copy the backup file, and restore from the backup on the new server. Now you have two copies of the database, a development version and a production version.
You will need to take .MDF file as well as .LDF file which will have your logs. You have to take both mdf and ldf files and attach on the real server.