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