यह इस बात पर निर्भर करता है कि आप टेबल को कैसे छोड़ना चाहते हैं। यदि तालिकाओं की सूची आपके डीबी के तहत लगभग 20% तालिकाओं को कवर करने की आवश्यकता है।
फिर मैं अपनी स्क्रिप्ट के नीचे उस डीबी में सभी बाधाओं को अक्षम कर दूंगा और तालिकाओं को छोड़ दूंगा और उसी स्क्रिप्ट के नीचे बाधाओं को सक्षम कर दूंगा।
--To Disable a Constraint at DB level
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
--Write the code to DROP tables
DROP TABLE TABLENAME
DROP TABLE TABLENAME
DROP TABLE TABLENAME
--To Enable a Constraint at DB level
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
अंत में आपकी बाधाओं की स्थिति की जांच करने के लिए इस क्वेरी को आग लगाना।
--Checks the Status of Constraints
SELECT (CASE
WHEN OBJECTPROPERTY(CONSTID, 'CNSTISDISABLED') = 0 THEN 'ENABLED'
ELSE 'DISABLED'
END) AS STATUS,
OBJECT_NAME(CONSTID) AS CONSTRAINT_NAME,
OBJECT_NAME(FKEYID) AS TABLE_NAME,
COL_NAME(FKEYID, FKEY) AS COLUMN_NAME,
OBJECT_NAME(RKEYID) AS REFERENCED_TABLE_NAME,
COL_NAME(RKEYID, RKEY) AS REFERENCED_COLUMN_NAME
FROM SYSFOREIGNKEYS
ORDER BY TABLE_NAME, CONSTRAINT_NAME,REFERENCED_TABLE_NAME, KEYNO
आप तो टेबल जो आप ड्रॉप करना चाहते हैं की एक सूची बनाने डाटाबेस स्तर पर बाधाओं को निष्क्रिय करना चाहते न तो।
Step1: thos तालिकाओं
SELECT *
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Tablename')
के साथ जुड़े प्रतिबन्ध की जाँच करें चरण 2: प्रतिबन्ध जो इन तालिकाओं के साथ जुड़े रहे अक्षम करें।
ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint
चरण 3: टेबल
DROP TABLE TABLENAME
स्रोत
2013-01-17 12:39:29
धन्यवाद, लेकिन मेरी समस्या यह है कि ठीक से उत्पन्न एफके के भार हैं। –