Drop all table

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Sabrina

    Drop all table

    Hi everybody,

    I need some help in SQL Server. I am looking for a command that will "Drop
    all user table" in a
    user database.

    Can anyone help me?

    Thank you very much
    Sabrina




  • Dan Guzman

    #2
    Re: Drop all table

    To add to Erland's response, below is a script developed for SQL 2000
    that will drop schema bound views and functions as sell as foreign keys
    beforehand. This will still need to be run iteratively in the case of
    nested schema bound objects.

    IF DB_NAME() IN ('master', 'msdb', 'model', 'distribution')
    BEGIN
    RAISERROR('Not for use on system databases', 16, 1)
    GOTO Done
    END

    SET NOCOUNT ON

    DECLARE @DropStatement nvarchar(4000)
    DECLARE @SequenceNumber int
    DECLARE @LastError int
    DECLARE @TablesDropped int

    DECLARE DropStatements CURSOR LOCAL FAST_FORWARD READ_ONLY FOR
    --views
    SELECT
    1 AS SequenceNumber,
    N'DROP VIEW ' +
    QUOTENAME(TABLE _SCHEMA) +
    N'.' +
    QUOTENAME(TABLE _NAME) AS DropStatement
    FROM
    INFORMATION_SCH EMA.TABLES
    WHERE
    TABLE_TYPE = N'VIEW' AND
    OBJECTPROPERTY(
    OBJECT_ID(QUOTE NAME(TABLE_SCHE MA) +
    N'.' +
    QUOTENAME(TABLE _NAME)),
    'IsSchemaBound' ) = 1 AND
    OBJECTPROPERTY(
    OBJECT_ID(QUOTE NAME(TABLE_SCHE MA) +
    N'.' +
    QUOTENAME(TABLE _NAME)),
    'IsMSShipped') = 0
    UNION ALL
    --procedures and functions
    SELECT
    2 AS SequenceNumber,
    N'DROP PROCEDURE ' +
    QUOTENAME(ROUTI NE_SCHEMA) +
    N'.' +
    QUOTENAME(ROUTI NE_NAME) AS DropStatement
    FROM
    INFORMATION_SCH EMA.ROUTINES
    WHERE
    ROUTINE_TYPE = N'FUNCTION' AND
    OBJECTPROPERTY(
    OBJECT_ID(QUOTE NAME(ROUTINE_SC HEMA) +
    N'.' +
    QUOTENAME(ROUTI NE_NAME)),
    'IsSchemaBound' ) = 1 AND
    OBJECTPROPERTY(
    OBJECT_ID(QUOTE NAME(ROUTINE_SC HEMA) +
    N'.' +
    QUOTENAME(ROUTI NE_NAME)),
    'IsMSShipped') = 0
    UNION ALL
    --foreign keys
    SELECT
    3 AS SequenceNumber,
    N'ALTER TABLE ' +
    QUOTENAME(TABLE _SCHEMA) +
    N'.' +
    QUOTENAME(TABLE _NAME) +
    N' DROP CONSTRAINT ' +
    CONSTRAINT_NAME AS DropStatement
    FROM
    INFORMATION_SCH EMA.TABLE_CONST RAINTS
    WHERE
    CONSTRAINT_TYPE = N'FOREIGN KEY'
    UNION ALL
    --tables
    SELECT
    4 AS SequenceNumber,
    N'DROP TABLE ' +
    QUOTENAME(TABLE _SCHEMA) +
    N'.' +
    QUOTENAME(TABLE _NAME) AS DropStatement
    FROM
    INFORMATION_SCH EMA.TABLES
    WHERE
    TABLE_TYPE = N'BASE TABLE' AND
    OBJECTPROPERTY(
    OBJECT_ID(QUOTE NAME(TABLE_SCHE MA) +
    N'.' +
    QUOTENAME(TABLE _NAME)),
    'IsMSShipped') = 0
    ORDER BY SequenceNumber

    OPEN DropStatements
    WHILE 1 = 1
    BEGIN
    FETCH NEXT FROM DropStatements INTO @SequenceNumber , @DropStatement
    IF @@FETCH_STATUS = -1 BREAK
    BEGIN
    RAISERROR('%s', 0, 1, @DropStatement) WITH NOWAIT
    --EXECUTE sp_ExecuteSQL @DropStatement
    SET @LastError = @@ERROR
    IF @LastError > 0
    BEGIN
    RAISERROR('Scri pt terminated due to unexpected error', 16, 1)
    GOTO Done
    END
    END
    END
    CLOSE DropStatements
    DEALLOCATE DropStatements

    Done:

    GO

    --
    Hope this helps.

    Dan Guzman
    SQL Server MVP

    -----------------------
    SQL FAQ links (courtesy Neil Pike):




    -----------------------

    "Sabrina" <missy2bfw@aol. com> wrote in message
    news:3f4a15d6$0 $249$4d4ebb8e@r ead.news.de.uu. net...[color=blue]
    > Hi everybody,
    >
    > I need some help in SQL Server. I am looking for a command that will[/color]
    "Drop[color=blue]
    > all user table" in a
    > user database.
    >
    > Can anyone help me?
    >
    > Thank you very much
    > Sabrina
    >
    >
    >
    >[/color]


    Comment

    Working...