Solved

How to clear/delete data from a SQL 2005 database

Posted on 2014-02-25
8
417 Views
Last Modified: 2014-02-27
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?
0
Comment
Question by:dowhatyoudo22
8 Comments
 
LVL 22

Expert Comment

by:Steve Wales
ID: 39887231
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.
0
 
LVL 29

Expert Comment

by:Olaf Doschke
ID: 39887337
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.
0
 
LVL 34

Expert Comment

by:Brian Crowe
ID: 39887341
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
Next
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.
0
Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

 
LVL 24

Expert Comment

by:DBAduck - Ben Miller
ID: 39887436
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.
0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 39887720
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.
0
 

Author Comment

by:dowhatyoudo22
ID: 39889398
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?
0
 
LVL 22

Accepted Solution

by:
Steve Wales earned 250 total points
ID: 39889406
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;

or

truncate table tablename;

will do the trick.
0
 
LVL 29

Assisted Solution

by:Olaf Doschke
Olaf Doschke earned 250 total points
ID: 39889862
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.
0

Featured Post

NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
I have a large data set and a SSIS package. How can I load this file in multi threading?
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question