ti-enxame.com

Erro ao excluir todas as tabelas "DELETE falhou porque as seguintes opções SET têm configurações incorretas: 'QUOTED_IDENTIFIER'"

Eu tenho um script para excluir todas as tabelas no meu banco de dados que se parece com isso:

-- Disable all constraints
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

-- Disable all triggers 
EXEC EnableAllTriggers @Enable = 0

-- Delete data in all tables
EXEC sp_MSForEachTable 'DELETE FROM ?'

-- Dnable all constraints
EXEC sp_MSForEachTable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'

-- Reseed identity columns
EXEC sp_MSForEachTable 'DBCC CHECKIDENT (''?'', RESEED, 0)'

-- Enable all triggers
EXEC EnableAllTriggers @Enable = 1

Quando atinge a linha DELETE, recebo este erro em algumas das tabelas:

DELETE falhou porque as seguintes opções SET têm configurações incorretas: 'QUOTED_IDENTIFIER'. Verifique se as opções SET estão corretas para uso com visualizações indexadas e/ou índices em colunas computadas e/ou índices filtrados e/ou notificações de consulta e/ou métodos de tipo de dados XML e/ou operações de índice espacial.

Não tenho exibições indexadas, todas as chaves estrangeiras e gatilhos estão desabilitados; portanto, não sei o que está causando esse erro. Alguma ideia?

32
Jeff Stock

Adicione as opções SET à chamada de exclusão.

Eles ainda se aplicam aos outros itens mencionados no erro, mesmo que você tenha desativado os FKs.

Isso resolverá as configurações salvas ou do ambiente

Editar depois do comentário

EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
55
gbn