• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 433
  • Last Modified:

How to clear/delete data from a SQL 2005 database

I need to create several new databases from the backups of existing production databases. This I have done. Now I need to clear/delete the data from these newly created databases.

How can I use Management Studio to perform this task?
2 Solutions
Steve WalesSenior Database AdministratorCommented:
I have a database with close to 2000 tables.  Sometimes (for testing) we want to do something similar.

Because this database has no foreign key constraints (third party vendor provides it that way) I can just truncate all the tables and then reload a demo dataset we have.

To generate the script to do that, I run this:

select 'truncate table '+name+';' from systables order by name;

I send the output from that query to text instead of a grid and then copy and paste the output to a new query window and run it.

I am VERY careful that I am in the database I want to clear and not the source production database when doing this.

If you've got referential integrity constraints, you could do a similar thing to disable them first.

I'm sure that you could do something very similar a lot faster using the undocumented procedure sp_msforeachtable but I like to see what's going to happen when doing something very destructive like that - I like to see what I'm running and have zero surprises.
Olaf DoschkeSoftware DeveloperCommented:
As you want the database without data you could use Visual studio, start a new solution based on the template for SQL Server Database Projects.

Then Import the database, which means importing all database objects. You can choose what exactly is imported, eg with Logins/Users or just tables, with or without indexes, with or without triggers, etc. In the end you have a solution with sql scripts for each database object.

You could also copy the structure via the generation of a single script, simply in the Management Studio, the context menu of databases has an item "Tasks", which has a sub menu item "Generate Scripts". From there it's a few choices about the objects you want, again.

Bye, Olaf.
Brian CroweDatabase AdministratorCommented:
Instead of deleting the data from the database, create an empty database to begin with.

Right-click on the database name -> Tasks -> Generate Scripts...
choose "Select specific database objects"
check the "Tables" box
click [Advanced]
make sure "Types of data to script" is set to "Schema only"
click [OK]
Save to file

Open and run that script from a new empty database.

Insert your demo dataset.
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

DBAduck - Ben MillerPrincipal ConsultantCommented:
To ensure that the database is completely in tact I would go with the first one offered and truncate the tables, this is barring that you have any Foreign Keys.
Anthony PerkinsCommented:
If you do have Foreign Keys or you prefer a simpler life, I would suggest you use a tool such as SQ Compare to deploy all the empty tables.  You could even save the script and run it multiple times in empty databases.
dowhatyoudo22Author Commented:
I should have prefaced this question with the fact that I am not a DBA and have very little experience with managing SQL databases.

Looking into this further: I have four databases. Each database only has three tables. And after running a 'select * from <table name> for each database it appears that there is only data in one of the tables and that is no more than 200 rows worth.

What is a simple way to clear the data from these tables?
Steve WalesSenior Database AdministratorCommented:
If you're talking that level of volume, you're probably best just to delete the data from teh 3 or 4 tables you're talking about.

delete tablename;


truncate table tablename;

will do the trick.
Olaf DoschkeSoftware DeveloperCommented:
It's still very simple to generate a database script and run it.

First of all I assume you have SQL Server Management Studio and did restore the database backups with it, then you're already familiar with it a little.

You can use the wizard to generate a database script and specify the result script should be put into a new query window. Then you simply run it, and it's done. You may only change one of the first lines with USE 'databasename' to use a different database name. The script is intended to be used on a new, empty database.

So what you need to know additionally is how to create a new, empty database, that's simply CREATE DATABASE mynewdatabase and would be ok with any small database you will start with.

Be aware there are tutorials and demo databases available, like AdventureWorks. Google it.

Bye, Olaf.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now