PDA

View Full Version : حرفه ای: حذف تمام relation های یک دیتابیس



goli_database
سه شنبه 07 دی 1389, 08:49 صبح
یک دیتابیس با 500 تاجدول دارم که می خواهم تمام relationship های آن حذف شود و فقط جدول هایم را داشته باشم؟فوری فوری فوری کمکم کنید؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟

AminSobati
سه شنبه 07 دی 1389, 16:45 عصر
DECLARE @TableName nvarchar(257),
@ForeignKeyConstraintName sysname,
@SQLStatement nvarchar(4000)

DECLARE TableList CURSOR
LOCAL FAST_FORWARD READ_ONLY FOR
SELECT
QUOTENAME(TABLE_SCHEMA) +
N'.' +
QUOTENAME(TABLE_NAME) AS TableName,
QUOTENAME(CONSTRAINT_NAME) AS ForeignKeyConstraintName
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY' AND
OBJECTPROPERTY
(
OBJECT_ID
(
QUOTENAME(TABLE_SCHEMA) +
N'.' +
QUOTENAME(TABLE_NAME)
),
'IsMSShipped') = 0

OPEN TableList
WHILE 1 = 1
BEGIN
FETCH NEXT FROM TableList INTO
@TableName,
@ForeignKeyConstraintName
IF @@FETCH_STATUS = -1 BREAK
SET @SQLStatement =
N'ALTER TABLE ' +
@TableName +
N' DROP CONSTRAINT ' +
@ForeignKeyConstraintName
RAISERROR (@SQLStatement, 0, 1) WITH NOWAIT
EXEC sp_executesql @SQLStatement
END
CLOSE TableList
DEALLOCATE TableList
GO

Reza_Yarahmadi
سه شنبه 07 دی 1389, 17:20 عصر
نيازي به استفاده از كرسر نيست ، با يك كد ساده تر هم ميشه اين كار رو انجام داد

Declare @Str varchar(max)
Set @Str = ''
SELECT @Str = @Str +'
ALTER TABLE ' + QUOTENAME(TABLE_SCHEMA) + N'.' + QUOTENAME(TABLE_NAME) +
' DROP CONSTRAINT ' + QUOTENAME(CONSTRAINT_NAME)
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY'
AND
OBJECTPROPERTY
(OBJECT_ID
(QUOTENAME(TABLE_SCHEMA) + N'.' + QUOTENAME(TABLE_NAME)
), 'IsMSShipped') = 0

exec SP_SQLExec @Str