Ask the Expert

Copying SQL Server database tables

I am executing a stored procedure, 'test', in a database called db1. Within this stored procedure, I want to check if db2 database exists. If it does not exist, I want to create the db2 and then copy tables from db1 into db2.

Code: --in db1 context IF EXISTS (SELECT name FROM sysobjects WHERE name = 'test' AND type = 'P') DROP PROCEDURE dbo.test GO

CREATE PROCEDURE dbo.test AS --to create db if not existing IF NOT EXISTS (select name from [master].dbo.sysdatabases where name = 'db2') CREATE DATABASE db2 /* if tabl1 exists in db1 then it is copied into db2 and dropped frm db1 */ IF EXISTS (SELECT name FROM sysobjects WHERE name = 'tabl1' and xtype='U') BEGIN SELECT * INTO [db2].dbo.tabl1 FROM tabl1 DROP TABLE tabl1 print 'dropped table' END

When I try to execute this, I get the following error msg:

Server: Msg 2702, Level 16, State 2, Procedure test, Line 10 Database 'db2' does not exist.

How do I get this working?

    Requires Free Membership to View

You'll need to restructure this so one procedure creates the database if necessary and the next procedure called does the real work.

View questions and answers from all of our SQL Server experts here.

This was first published in March 2006

There are Comments. Add yours.

 
TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: