Ciao ragazzi

Ho la necessità di creare uno script di sql che elimini in automatico tutte le relazioni, i vincoli e le chiavi delle tabelle di un dato database.
Questo perchè ho poi la necessità di effettuare delle modifiche alle colonne di alcune tabelle.
Lo so, sarebbe più facile farlo a mano, ma purtroppo devo creare un tool di manutenzione dei database e quindi necessito di procedure.
Al momento ho scritto questo:
codice:
USE 'Sitt2_Sud_ConfigurationDB'

-- creare array con elenco tabelle
--	creare array con elenco indice tabella
--		cancellare ogni elemento del precedente array


-- creo l'array e lo riempio con i nomi delle tabelle

DECLARE @table_name VARCHAR(50) = ''
DECLARE @index_name VARCHAR(255) = ''

DECLARE table_cursor CURSOR LOCAL FAST_FORWARD FOR
	--legge i nomi delle tabelle
	SELECT TABLE_NAME 
	FROM INFORMATION_SCHEMA.TABLES 
	WHERE (TABLE_TYPE not like 'view%') AND 
	      (TABLE_NAME NOT IN(select TABLE_NAME FROM 
               INFORMATION_SCHEMA.TABLE_PRIVILEGES))FOR READ ONLY

	OPEN table_cursor
	FETCH table_cursor INTO @table_name
		WHILE (@@fetch_status <> -1)
		BEGIN
		     -- creo ed eseguo il ciclo sugli indici
		     DECLARE index_cursor CURSOR FOR
			    EXEC sp_helpindex '@table_name'
			
			    OPEN index_cursor
			    FETCH table_cursor INTO @index_name
				WHILE (@@fetch_status <> -1)
				BEGIN
				  DROP INDEX @table_name.@index_name
				END
			
		     -- mi sposto sulla tabella successiva
		     FETCH table_cursor INTO @table_name

		    CLOSE index_cursor
		    DEALLOCATE index_cursor

		END

	CLOSE table_cursor
	DEALLOCATE table_cursor
Ho in particolare 2 problemi.

Effettuo una select per caricare un cursore contenente l'elenco di tutte le tabelle presenti nel database.
Avvio il ciclo su questo cursore e ad ogni giro carico un nuovo cursore contenente l'elenco degli indici relativi alla suddetta tabella.

- Primo problema: l'istruzione che utilizzo per leggere l'elenco degli indici è: sp_helpindex '@table_name' (in rosso nel codice postato)
Il problema è che ovviamente non è possibile eseguire una stored procedure così come l'ho scritta io; anzi, non so nemmeno se sia possibile farlo all'interno di un ciclo.
Qualora però sbagliassi non conosco la sintassi, quindi la mia prima domanda è: esiste una sintassi corretta x eseguire questa istruzione o un'altra istruzione equivalente?

- Secondo problema che mi si pone è l'eliminazione dell'indice trovato.
L'istruzione che utilizzo è la DROP INDEX alla quale passo le variabili contenenti il nome della tabella e il nome dell'indice: DROP INDEX @table_name.@index_name (in rosso nel codice postato).
Chiaramente non funziona, e non so perchè. Anche qui, sbaglio a scrivere qualcosa o il problema è altrove?


Grazie a tutti
lady