• This is precisely what I was needing. I imagine that was a lot of work, so thanks. The script at http://connectsql.blogspot.com looked familiar. I'll add drop code here with tildes sprinkled throughout to prevent accidental deletion.

    ~ William

    -- Script to Generate Drop to go with the adds in the post

    -- From web resource: http://connectsql.blogspot.com/2009/07/script-to-create-all-primary-and.html

    -- For TSQL Syntax see http://msdn.microsoft.com/en-us/library/ms190273.aspx

    /*

    EXEC sp_Opti_PKConstraints_DROP

    @TableName = 'Widget'

    */

    ALTER PROC sp_Opti_PKConstraints_DROP

    @TableName VARCHAR(128) = NULL

    AS

    DECLARE @DoPrimaryOnly BIT

    SET @DoPrimaryOnly = 1

    DECLARE cPK CURSOR FOR

    SELECT DISTINCT C.TABLE_NAME, C.CONSTRAINT_NAME , F.NAME

    FROM SYS.INDEXES I

    INNER JOIN SYS.FILEGROUPS F

    ON I.DATA_SPACE_ID = F.DATA_SPACE_ID

    INNER JOIN SYS.ALL_OBJECTS O

    ON I.[OBJECT_ID] = O.[OBJECT_ID]

    INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS C

    ON O.NAME = C.TABLE_NAME

    WHERE (1=1)

    ANDC.CONSTRAINT_TYPE = 'PRIMARY KEY'

    AND C.Table_Name = @TableName

    ORDER BY C.TABLE_NAME

    DECLARE @PkTable SYSNAME

    DECLARE @PkName SYSNAME

    DECLARE @FileName SYSNAME

    DECLARE @IfExists VARCHAR(2000)

    -- Loop through all the primary keys

    OPEN cPK

    FETCH NEXT FROM cPK INTO @PkTable, @PkName , @FileName

    WHILE (@@FETCH_STATUS = 0)

    BEGIN

    DECLARE @PKSQL NVARCHAR(4000) SET @PKSQL = ''

    SET @IfExists =

    '' + CHAR(13)

    --########################## DROP ##############################

    SET @PKSQL = @IfExists + CHAR(13) + CHAR(13) + '-- ' + @PkTable+ CHAR(13) +

    'IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = '+ CHAR(13) +

    'OBJECT_ID(N''[dbo].[' + @PkTable + ']'' ' + ' '+ CHAR(13) +

    'AND name = N''' + @PkName + ''')' + ' '+ CHAR(13) +

    'BEGIN'+ CHAR(13) +

    '~~CautionALTER TABLE [dbo].' + @PkTable + ' '+ CHAR(13) +

    '~~DROP CONSTRAINT ' + @PkName+ CHAR(13) +

    'END' + ' '+ CHAR(13)

    --########################## / DROP ############################

    -- For the drop, we're skipping the columns

    SET @PKSQL = ~~@PKSQL + ')' + CHAR(13) +

    ' ON '+@FileName

    -- Print the primary key statement

    PRINT @PKSQL

    FETCH NEXT FROM cPK INTO @PkTable, @PkName, @FileName

    END

    CLOSE cPK

    DEALLOCATE cPK

    EndProcessing: