Jauco опубликовал хорошее решение в комментарии, поэтому я копирую его здесь:
$(elem)
.contents()
.filter(function() {
return this.nodeType === 3; //Node.TEXT_NODE
});
Похоже на задание для Drop Database :
-- SQL Server Syntax
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ] [;]
Можете ли вы запустить весь сценарий внутри транзакции и затем вызвать откат в случае сбоя?
CREATE TABLE можно откатить так же легко, как INSERT / UPDATE.
Совершенно новый, ничего не содержащий? Удалите базу данных и создайте ее заново, если у вас есть на это разрешение.
Если у вас есть процесс создания сценариев автоматически для каждого объекта, вы должны иметь возможность обернуть весь процесс в транзакцию и обеспечить обработку ошибок для каждого состояния 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
Red Gate's SQL Compare will do it for you, it is a great tool.
Вы можете запустить весь сценарий за одну транзакцию, поэтому вы сможете откатить его в любой момент.
Второй вариант - перед установкой всегда создавайте резервную копию. В случае сбоя восстановите базу данных из резервной копии
Я не уверен, что это то, что вы ищете, но для каждого объекта вы можете проверить, существует ли он перед его созданием. Затем вы можете снова запустить сценарий, если он не удастся посередине.
IF EXISTS(SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(@Object) AND type = (@Type))
...