1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| Set NoCount ON
Declare @schemaName varchar(200)
set @schemaName=''
Declare @constraintName varchar(200)
set @constraintName=''
Declare @tableName varchar(200)
set @tableName=''
Declare @Message nvarchar(max)
Declare @Requete nvarchar(max)
Declare @ListeDesTablesAGérer nvarchar(max)
set @ListeDesTablesAGérer=''
set @ListeDesTablesAGérer=@ListeDesTablesAGérer+'''Table1'','
set @ListeDesTablesAGérer=@ListeDesTablesAGérer+'''Table2'','
set @ListeDesTablesAGérer=@ListeDesTablesAGérer+'''Table3'''
print @ListeDesTablesAGérer
While exists
(
SELECT c.name
FROM sys.objects AS c
INNER JOIN sys.tables AS t
ON c.parent_object_id = t.[object_id]
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE c.[type] IN ('D','C','F','PK','UQ','FK')
/*
Je ne comprends pas pourquoi la variable @ListeDesTablesAGérer n'est pas prise en compte !!!
*/
--and t.name in(@ListeDesTablesAGérer)
and t.name in('Table1','Table2','Table3')
and c.name > @constraintName
)
Begin
SELECT
@constraintName=min(c.name)
FROM sys.objects AS c
INNER JOIN sys.tables AS t
ON c.parent_object_id = t.[object_id]
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE c.[type] IN ('D','C','F','PK','UQ','FK')
/*
Je ne comprends pas pourquoi la variable @ListeDesTablesAGérer n'est pas prise en compte !!!
*/
-- and t.name in(@ListeDesTablesAGérer)
and t.name in('Table1','Table2','Table3')
and c.name > @constraintName
SELECT
@tableName = t.name,
@schemaName = s.name
FROM sys.objects AS c
INNER JOIN sys.tables AS t
ON c.parent_object_id = t.[object_id]
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE c.name = @constraintName
set @Message='Suppression de la contrainte ' + @constraintName + ' de la table '+ @tableName +' ...'
set @Requete= 'ALTER TABLE [' + @schemaName + N'].[' + @tableName + N'] DROP CONSTRAINT [' + @constraintName + ']'
--exec sc_Admin.ps_ExecuteRequeteSQL @Requete,@Message
print @message
print @requete
End
Set NoCount OFF |
Partager