2015-08-13 3 views
0

Чрезвычайно нубийский вопрос, но я действительно начинаю кровоточить, когда речь идет о базах данных и SQL Server в частности.Как удалить содержимое базы данных в SQL Server Management Studio?

Я создал базу данных, в которой я заполнил ее некоторыми тестовыми данными, и теперь пришло время освободить место для реальных данных. Кроме того, я не могу найти простой способ удалить старые тестовые данные из таблиц. И к моему удивлению, Google не поможет мне.

Я нашел множество сообщений о том, как удалить таблицы, но мне они все еще нужны. Мне нужны только данные.

Хотя использование моего (очень ограниченного) опыта работы с базами данных, удаление таблиц и их повторное создание, похоже, являются распространенным методом, за исключением того, что я не нашел ничего о том, как воссоздать таблицу в SQL Server Managment Studio. Помимо очевидного метода «вручную», по крайней мере.

Как бы то ни было, я просматриваю таблицы в правильном порядке, удаляя строки вручную, но это вряд ли является экономичным способом сделать это в будущем. Итак, как я могу избавиться от всех данных в таблице (или в каждой таблице, если на то пошло), но с последующей структурой таблицы?

ответ

1

Try :

этап1> генерировать скрипт базы данных и пр его в файле (.sql) (без данных)

step2> удалить текущую базу данных

step3> запустить скрипт (.sql) в области управления Sql Server Studio

теперь вы получите пустой база данных.

см Generate a Script (SQL Server Management Studio)

+0

Принято, потому что он отвечает на оба вопроса в то же время является MS SQL Server Managment студии специфичны. Всем спасибо! – UncleBob

0

Это будет DELETE все строки из таблицы и RESEED ваши IDENTITY колонки:

DECLARE @sql NVARCHAR(MAX); 

SET @sql = N'SET NOCOUNT ON;'; 

WITH Cte(tableName, hasIdentity) AS(
    SELECT t.name, CAST(ISNULL(ic.object_id, 0) AS BIT) 
    FROM sys.tables t 
    LEFT JOIN sys.identity_columns ic 
     ON t.object_id = ic.object_id 
    WHERE t.type = 'U' 
) 
SELECT @sql = @sql + CHAR(10) + 
    N'ALTER TABLE ' + QUOTENAME(tableName) + ' NOCHECK CONSTRAINT ALL;' + CHAR(10) + 
    N'DELETE ' + QUOTENAME(tableName) + ';' + CHAR(10) + 
    CASE 
     WHEN hasIdentity = 1 THEN 
      N'DBCC CHECKIDENT(''' + QUOTENAME(tableName) + ''', RESEED, 0) WITH NO_INFOMSGS;' + CHAR(10) 
     ELSE '' 
    END + 
    N'ALTER TABLE ' + QUOTENAME(tableName) + ' WITH CHECK CHECK CONSTRAINT ALL;' 
FROM Cte 

PRINT @sql; 
EXEC sp_executesql @sql; 
3

Вы можете усечь таблицу (опорожняет содержимое/данные, но сохраняет структуру таблицы)

TRUNCATE TABLE MyTable 
Смежные вопросы