Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error deleting all tables "DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'"

I have a script to delete all tables in my database that looks like this:

-- 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

When it hits the DELETE line I get this error for a few of the tables:

DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

I don't have any indexed views, all foreign keys and triggers are disabled, so I don't know what is causing this error. Any ideas?

like image 384
Jeff Stock Avatar asked Dec 05 '11 16:12

Jeff Stock


1 Answers

Add the SET options to the delete call.

These still apply to the other items mentioned in the error, even though you disabled FKs.

This will work around any saved or environment settings

Edit, after comment

EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
like image 80
gbn Avatar answered Oct 28 '22 21:10

gbn