SQL абсолютно Пустая база данных

Jauco опубликовал хорошее решение в комментарии, поэтому я копирую его здесь:

$(elem)
  .contents()
  .filter(function() {
    return this.nodeType === 3; //Node.TEXT_NODE
  });
8
задан Joel Coehoorn 9 July 2009 в 17:05
поделиться

7 ответов

Похоже на задание для Drop Database :

-- SQL Server Syntax  
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ] [;]
5
ответ дан 5 December 2019 в 12:12
поделиться

Можете ли вы запустить весь сценарий внутри транзакции и затем вызвать откат в случае сбоя?

CREATE TABLE можно откатить так же легко, как INSERT / UPDATE.

7
ответ дан 5 December 2019 в 12:12
поделиться

Совершенно новый, ничего не содержащий? Удалите базу данных и создайте ее заново, если у вас есть на это разрешение.

2
ответ дан 5 December 2019 в 12:12
поделиться

Если у вас есть процесс создания сценариев автоматически для каждого объекта, вы должны иметь возможность обернуть весь процесс в транзакцию и обеспечить обработку ошибок для каждого состояния DDL. Это также хорошо работает при применении обновлений схемы. Обратите внимание: это основано на сценариях обновления, которые генерирует Red-Gate SQL Compare.

Заголовок:

SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors
GO
CREATE TABLE #tmpErrors (Error int)
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
BEGIN TRANSACTION
GO

Нижний колонтитул:

IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
    PRINT 'Script succeeded'
    COMMIT TRANSACTION
END
ELSE BEGIN 
    PRINT 'Script failed'
END
GO
DROP TABLE #tmpErrors

Оболочка (для каждого объекта базы данных):

/* Insert Data Definition here then append with...*/
GO
IF @@ERROR<>0 AND @@TRANCOUNT>0 ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT=0 BEGIN INSERT INTO #tmpErrors (Error) SELECT 1 BEGIN TRANSACTION END
GO
0
ответ дан 5 December 2019 в 12:12
поделиться

Red Gate's SQL Compare will do it for you, it is a great tool.

0
ответ дан 5 December 2019 в 12:12
поделиться

Вы можете запустить весь сценарий за одну транзакцию, поэтому вы сможете откатить его в любой момент.

Второй вариант - перед установкой всегда создавайте резервную копию. В случае сбоя восстановите базу данных из резервной копии

-1
ответ дан 5 December 2019 в 12:12
поделиться

Я не уверен, что это то, что вы ищете, но для каждого объекта вы можете проверить, существует ли он перед его созданием. Затем вы можете снова запустить сценарий, если он не удастся посередине.

IF EXISTS(SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(@Object) AND type = (@Type))

...

0
ответ дан 5 December 2019 в 12:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: