কীভাবে একটি এসকিউএল সার্ভার ডাটাবেসে সমস্ত টেবিলগুলি ড্রপ করবেন?


195

আমি এমন একটি স্ক্রিপ্ট লেখার চেষ্টা করছি যা কোনও এসকিউএল সার্ভার ডাটাবেসকে পুরোপুরি খালি করে দেবে। আমার এ পর্যন্ত যা আছে:

USE [dbname]
GO
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
EXEC sp_msforeachtable 'DELETE ?'

আমি যখন এটি পরিচালনা স্টুডিওতে চালিত করি তখন আমি পাই:

কমান্ড (গুলি) সফলভাবে সম্পন্ন হয়েছে।

তবে আমি যখন টেবিলের তালিকাটি রিফ্রেশ করি তখন সেগুলি এখনও রয়েছে। আমি কি ভুল করছি?


যদি এই পৃষ্ঠার কোনও সমাধানই কাজ না করে, সম্ভবত আপনি ভুলে গেছেন: ইউএসই [
ডাটাবেসনাম

2
মুছে ফেলা ? সারণী থেকে রেকর্ড মুছে ফেলবে। আপনার ড্রপ ট্যাবলেট ব্যবহার করা উচিত? তবে এটি অন্যান্য কারণে কাজ করবে না।
ডেটাগোড

উত্তর:


306

একাধিক বিদেশী কী টেবিল থাকলে তা আমার পক্ষে কার্যকর হয় না।
আমি খুঁজে পেয়েছি যে কোডটি আপনার চেষ্টা করে যা কিছু করে কাজ করে এবং করে (আপনার ডাটাবেস থেকে সমস্ত টেবিল মুছুন):

DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR

SET @Cursor = CURSOR FAST_FORWARD FOR
SELECT DISTINCT sql = 'ALTER TABLE [' + tc2.TABLE_SCHEMA + '].[' +  tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + '];'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME

OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql

WHILE (@@FETCH_STATUS = 0)
BEGIN
Exec sp_executesql @Sql
FETCH NEXT FROM @Cursor INTO @Sql
END

CLOSE @Cursor DEALLOCATE @Cursor
GO

EXEC sp_MSforeachtable 'DROP TABLE ?'
GO

আপনি পোস্টটি এখানে পেতে পারেন । এটি গ্রোকারের পোস্ট।


আপনি যখন কোনও BEGIN-END ব্লক ব্যবহার করে কোনও বিবরণে সেই সম্পূর্ণ ব্লকটি কোডটি মোড়ানোর চেষ্টা করেন কেন এটি কার্সর সম্পর্কে অভিযোগ করে?
আদম

11
আমি ত্রুটি Could not find stored procedure 'sp_MSForEachTable'.
পাচ্ছি

2
এই উত্তরটি তোমার চেয়ে একটি ভিন্ন স্কিমা মধ্যে (সীমাবদ্ধতা সহ) টেবিল আছে যদি কাজ না করে dbo। আপনার যদি কাস্টম স্কিমা থাকে তবে আপনার sqlSELECT DISTINCT sql = 'ALTER TABLE [' + tc2.CONSTRAINT_SCHEMA + '].[' + tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + ']'
এটিকে

5
sp_MSforeachtableAzure পাওয়া যায় না। পরিবর্তে @ কাউন্টজারির উত্তরটি ব্যবহার করুন।
ওগ্লাস

3
ওয়েবে এই রেফারেন্সটি পাওয়া গেছে (আমার নয়): এসপি_এমএসফের্যাচটেবল স্টোরার্ড প্রসেসার অ্যাজুরির একটি অনুলিপি, এসপি_মাসফোচার_কর্মী ব্যবহার করে: gist.github.com/metaskills/893599
জোও ভাইয়েরা

330

আপনি কেবল এমএসএসএমএস ইউআই সরঞ্জাম (এসকিউএল স্ক্রিপ্ট ব্যবহার না করে) ব্যবহার করে ডাটাবেস থেকে সমস্ত সারণী মুছতে পারেন। কখনও কখনও এই উপায়ে আরও আরামদায়ক হতে পারে (বিশেষত যদি এটি মাঝেমধ্যে সঞ্চালিত হয়)

আমি এই পদক্ষেপটি নিম্নলিখিত ধাপে করছি:

  1. ডাটাবেস ট্রিতে 'টেবিল' নির্বাচন করুন (অবজেক্ট এক্সপ্লোরার)
  2. অবজেক্ট এক্সপ্লোরার বিবরণ ভিউ খুলতে F7 টিপুন
  3. এই দৃশ্যে সারণী নির্বাচন করুন যা মুছতে হবে (এই ক্ষেত্রে সমস্ত)
  4. সমস্ত টেবিল মুছে ফেলা না হওয়া অবধি মুছে ফেলতে টিপুন (আপনি কী কী সীমাবদ্ধতা / নির্ভরতার কারণে ত্রুটির পরিমাণ হিসাবে এটি বহুগুণ পুনরাবৃত্তি করবেন)

5
আমি একটি আজুর স্কিল ডিবিতে কাজ করতে sp_msforeachtable পেতে পারি না। আমি অনুমান করছি তারা এটি অ্যাজুরের জন্য অন্তর্ভুক্ত করবেন না। এই সমাধানটি দুর্দান্ত কাজ করে এবং ইএফ মাইগ্রেশনের সাথে প্রচুর পরিবর্তন (শুরু করে) ঠাট্টা করা বা করার সময় এটি উপযুক্ত।
ট্রেভরেক

এফকে / অর্ডার বিবেচনা করে না।
জোশ

1
এটি খুব সহজ পদ্ধতি যদি আপনার এখানে এবং সেখানে এটি করার দরকার হয়, আপনি এটি প্রায়শই করতে থাকেন তবে স্ক্রিপ্টটি আরও ভাল হতে পারে।
ডিলান হেইস

2
@ জোশ অর্ডার বিবেচনা করা হয় না তবে আপনি মুছে ফেলুন ডায়ালগটিতে ওকে টিপতে থাকুন এটি যে সমস্ত সারণী করতে পারে তা মুছতে থাকবে যা শেষ পর্যন্ত সমস্ত সারণী মুছে ফেলবে।
মাটিররে

ডিজাইনার ব্যবহার করে নিখুঁত সমাধান
জহির

49

এসএসএমএসে:

  • ডাটাবেসটিতে রাইট ক্লিক করুন
  • "কার্য" এ যান
  • "স্ক্রিপ্ট তৈরি করুন" ক্লিক করুন
  • "অবজেক্টস চয়ন করুন" বিভাগে, "সম্পূর্ণ ডাটাবেস এবং সমস্ত ডাটাবেস অবজেক্টগুলি স্ক্রিপ্ট করুন" নির্বাচন করুন
  • "স্ক্রিপ্টিং বিকল্প সেট করুন" বিভাগে, "উন্নত" বোতামটি ক্লিক করুন
  • "স্ক্রিপ্ট ড্রপ এবং ক্রিয়েট করুন" "স্ক্রিপ্ট ড্রপ" এ "স্ক্রিপ্ট তৈরি করুন" এবং ঠিক আছে চাপুন
  • তারপরে, হয় ফাইল, ক্লিপবোর্ড বা নতুন কোয়েরি উইন্ডোতে সংরক্ষণ করুন।
  • স্ক্রিপ্ট চালান।

এখন, এটি ডাটাবেস সহ সমস্ত কিছু ফেলে দেবে। আপনি যে আইটেমগুলি বাদ দিতে চান না তার কোড সরিয়ে দেওয়ার বিষয়টি নিশ্চিত করুন। বিকল্পভাবে, "অবজেক্টগুলি চয়ন করুন" বিভাগে, পুরো ডাটাবেস স্ক্রিপ্টে না গিয়ে কেবল আপনি যে আইটেমগুলি সরাতে চান তা নির্বাচন করুন।


3
আপনি যদি ডাটাবেসটি ফেলে দিতে না চান (যা আমার ক্ষেত্রে এটি তৈরি করার জন্য আমার পক্ষে সমর্থন কল করার প্রয়োজন নেই) তবে 'নির্দিষ্ট ডাটাবেস অবজেক্ট নির্বাচন করুন' ব্যবহার করুন এবং সমস্ত বস্তুর প্রকার নির্বাচন করুন যা আপনি বাদ দিতে চান না।
d219

3
এই সবচেয়ে সহজ উপায়।
অসিরি ডিসানায়াকা

2
এটি নিশ্চিতভাবে উত্তর হওয়া উচিত!
জ্যাক টেলর

34

deleteএকটি টেবিল থেকে সারি মুছে ফেলার জন্য ব্যবহৃত হয়। drop tableপরিবর্তে আপনার ব্যবহার করা উচিত ।

EXEC sp_msforeachtable 'drop table [?]'

এটি দেখে মনে হয়েছে যে কোনও ত্রুটি না হওয়ার সমস্যাটি স্থির হয়ে গেছে তবে এখন আমি সীমাবদ্ধ ত্রুটিতে চলেছি। আমার NOCHECK CONSTRAINTলাইনের বাক্য গঠন কি ভুল?
ডিক্সুজি

1
আমি এফকে এর সাথে দ্রুত 2 টেবিলগুলিতে এটি ব্যবহার করেছি এবং এটি কার্যকর হয়েছে। এক্সেক এসপি_মাস্পোচেচটেবল 'অলটার টেবিলে? সমস্ত কিছুই কন্ট্রাক্ট করুন '
ডেভশ্যা

12
বর্গাকার বন্ধনীগুলি সরানোর পরে এটি কেবলমাত্র আমার জন্য কাজ করেছিল: EXEC sp_msforeachtable 'ড্রপ টেবিল?'।
এলপেইনস

এসকিউএল সার্ভারে আপনার যদি কোনও টেবিলের নামের কোনও বিজোড় অক্ষর বা স্পেস থাকে তবে বন্ধনীগুলির দরকার need আমি এসকিউএল সার্ভারের এমন কোনও সংস্করণ জানি না যা অবজেক্টের নামের আশেপাশে বন্ধনী সমর্থন করে না।
ডেভাশো

এসকিউএল সার্ভারে (১১.x) আমাকে স্কোয়ার বন্ধনীগুলিও সরিয়ে ফেলতে হয়েছিল।
ফ্রাইডার

30

গৃহীত উত্তর আজুর সমর্থন করে না। এটি একটি অননুমোদিত স্টোরেজ পদ্ধতি "sp_MSforeachtable" ব্যবহার করে। যদি আপনি কোনও "অ্যাজুর পেয়ে থাকেন তবে চলমান চলাকালীন 'sp_msforeachtable" ত্রুটিটি খুঁজে না পেয়ে বা অননুমোদিত বৈশিষ্ট্যগুলির উপর নির্ভর করা এড়াতে চান (যা মুছে ফেলা যায় বা কোনও কার্যক্রমে তাদের কার্যকারিতা পরিবর্তিত হতে পারে) তবে নীচের চেষ্টা করুন।

এই সংস্করণটি সত্তা কাঠামোর স্থানান্তর ইতিহাস সারণী "__MigrationHistory" এবং "ডাটাবেস_ফায়ারওয়াল_রুলেস" উপেক্ষা করে যা একটি অ্যাজুরি টেবিল যা আপনি মুছার অনুমতি পাবেন না।

হালকাভাবে Azure পরীক্ষা করা হয়েছে। এটি আপনার পরিবেশে কোন অনাকাঙ্ক্ষিত প্রভাব আছে তা করতে পরীক্ষা করে দেখুন।

DECLARE @sql NVARCHAR(2000)

WHILE(EXISTS(SELECT 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE='FOREIGN KEY'))
BEGIN
    SELECT TOP 1 @sql=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']')
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'
    EXEC(@sql)
    PRINT @sql
END

WHILE(EXISTS(SELECT * from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME != '__MigrationHistory' AND TABLE_NAME != 'database_firewall_rules'))
BEGIN
    SELECT TOP 1 @sql=('DROP TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + ']')
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME != '__MigrationHistory' AND TABLE_NAME != 'database_firewall_rules'
    EXEC(@sql)
    PRINT @sql
END

থেকে নেওয়া:

https://edspencer.me.uk/2013/02/25/drop-all-tables-in-a-sql-server-database-azure-friendly/

http://www.sqlservercentral.com/blogs/sqlservertips/2011/10/11/remove-all-foreign-keys/


3
অ্যাজুরে ম্যাজিক হিসাবে কাজ করেছেন। ভিএস এর ইউআই এর মাধ্যমে সরিয়ে নেওয়া অনেক দ্রুত
সাইমন

27
/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)

WHILE @name IS NOT NULL
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint is not null
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
        EXEC (@SQL)
        PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO

/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Table: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

1
এসকিউএল অ্যাজুরেতে কাজ করে :) এসপিএসএমএসফরোচেটেবল সেখানে কাজ করে না
পাভেল বিরিয়ুকভ

একটি দ্রষ্টব্য হিসাবে, আপনার যদি নন-ডিবিও স্কিমার (যেমন আপনি হ্যাংফায়ার ব্যবহার করছেন) থাকে তবে এটি ব্যর্থ হবে
লিয়াম ডসন

21

আপনি প্রায় সঠিক, পরিবর্তে ব্যবহার করুন:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
EXEC sp_msforeachtable 'DROP TABLE ?'

তবে দ্বিতীয় লাইনে আপনার ত্রুটি হওয়া বন্ধ না হওয়া পর্যন্ত একবারে আরও কার্যকর করতে হবে:

Could not drop object 'dbo.table' because it is referenced by a FOREIGN KEY constraint.

বার্তা:

Command(s) completed successfully.

মানে সমস্ত টেবিল সফলভাবে মোছা হয়েছে।


17

স্বল্প ও মধুর:

USE YOUR_DATABASE_NAME
-- Disable all referential integrity constraints
EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO

-- Drop all PKs and FKs
declare @sql nvarchar(max)
SELECT @sql = STUFF((SELECT '; ' + 'ALTER TABLE ' + Table_Name  +'  drop constraint ' + Constraint_Name  from Information_Schema.CONSTRAINT_TABLE_USAGE ORDER BY Constraint_Name FOR XML PATH('')),1,1,'')
EXECUTE (@sql)
GO

-- Drop all tables
EXEC sp_MSforeachtable 'DROP TABLE ?'
GO

2
আমার sp_msforeachtableদ্বারা প্রতিস্থাপন করতে হয়েছিল sp_MSforeachtableএবং use yourdatabaseপ্রথম লাইন হিসাবে একটি যুক্ত করার জন্য অত্যন্ত সুপারিশ করব । কবজির মতো কাজ করেছেন।
সাইমন সোবিশ 15

স্বল্প ও মধুর! Thnx।
সপ্তােলব্যাপস

7

দ্রুততম উপায়:

  1. নতুন ডাটাবেস ডায়াগ্রাম
  2. সমস্ত টেবিল যোগ করুন
  3. সমস্ত নির্বাচন করতে Ctrl + A
  4. "ডাটাবেস থেকে সরান" রাইট ক্লিক করুন
  5. সংরক্ষণ করতে Ctrl + S
  6. উপভোগ করুন

এটি করার পক্ষে এটি এখন পর্যন্ত দ্রুততম, কম ত্রুটি-প্রবণ। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
ডার্কগুই

6

মনে হচ্ছে কমান্ডটি স্কোয়ার কম্বল ছাড়াই হওয়া উচিত

EXEC sp_msforeachtable 'drop table ?'

6

আমার জন্য, সবচেয়ে সহজ উপায়:

--First delete all constraints

DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';

SELECT @sql = @sql + N'
ALTER TABLE ' + QUOTENAME(s.name) + N'.'
+ QUOTENAME(t.name) + N' DROP CONSTRAINT '
+ QUOTENAME(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')
ORDER BY c.[type];

EXEC sys.sp_executesql @sql;

-- Then drop all tables

exec sp_MSforeachtable 'DROP TABLE ?'

2

চিহ্নিত করা!!

আপনি ডাটাবেস থেকে সমস্ত সারণী সরাতে নীচের ক্যোয়ারীটি ব্যবহার করতে পারেন

EXEC sp_MSforeachtable @ কমান্ড 1 = "টেবিল ড্রপ?"

শুভ কোডিং!


1

কীভাবে পুরো ডাটাবেসটি ফেলে রেখে আবার এটি তৈরি করবেন? এটি আমার পক্ষে কাজ করে।

DROP DATABASE mydb;
CREATE DATABASE mydb;

এর মধ্যে আপনার কি এমডিএফ এবং এলডিএফ ফাইলগুলি ব্লাস্ট করার দরকার নেই?
ruffin

আমি একটি ওয়েব হোস্ট সরবরাহকারী ব্যবহার করছি এবং আমি সে সম্পর্কে খুব বেশি নিশ্চিত নই। আমি মনে করি আপনি অফলাইনে না থাকলে আপনি কোনও ডাটাবেস ছাড়লে এই ফাইলগুলি স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে।
চং ঠোঁট ফ্যাং

2
এটি সত্যিই পরিস্থিতির উপর নির্ভর করে। আমার ক্ষেত্রে, আমার কাছে সঞ্চয় পদ্ধতি নেই এবং এই পদ্ধতিটি আমার পক্ষে ভাল কাজ করে। আমি এমন জটিল কোড লিখতে যাচ্ছি না যা কয়েক লাইনে বিস্তৃত হবে যখন দুটি লাইন করবে। আমি মনে করি না যে আমার উত্তরটি একটি ডাউনভোটকে ন্যায্যতা দেয় কারণ আমি ব্যবহারকারীদের একটি নির্দিষ্ট গ্রুপকে একটি পরামর্শ দিচ্ছি।
চং ঠোঁট ফ্যাং

0

আমি জানি এটি এখন একটি পুরাতন পোস্ট কিন্তু আমি এখানে অনেকগুলি ডাটাবেসের উপর সমস্ত উত্তর চেষ্টা করেছি এবং আমি পেয়েছি যে সেগুলি সবসময় কাজ করে তবে এসকিউএল সার্ভারের বিভিন্ন (আমি কেবল ধরে নিতে পারি) কুইর্কসের জন্য সব সময় কাজ করি না।

অবশেষে আমি এটি নিয়ে এসেছি। আমি এটি যেখানেই করতে পারি (সাধারণভাবে বলতে পারি) এটি পরীক্ষা করেছি এবং এটি (কোনও লুকানো স্টোর প্রক্রিয়া ছাড়াই) কাজ করে।

বেশিরভাগ এসকিউএল সার্ভারে নোটের জন্য 2014. (তবে অন্যান্য সংস্করণগুলির বেশিরভাগ ক্ষেত্রে আমি এটি চেষ্টা করেছি তবে এটি বেশ ভাল কাজ করেছে)।

লুপস এবং নালস ইত্যাদি ইত্যাদি, কার্সার এবং অন্যান্য বিভিন্ন ফর্মগুলি চেষ্টা করার চেষ্টা করেছি তবে তারা কোনও ডেটাবেসে সর্বদা ব্যর্থ বলে মনে হয় তবে স্পষ্ট কারণ ছাড়াই অন্যেরা নয়।

একটি গণনা পাওয়া এবং এটি পুনরাবৃত্তি করতে ব্যবহার করা সর্বদা Ive পরীক্ষা করা সমস্ত কিছুতে কাজ করে বলে মনে হয়।

USE [****YOUR_DATABASE****]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- Drop all referential integrity constraints --
-- Drop all Primary Key constraints.          --

DECLARE @sql  NVARCHAR(296)
DECLARE @table_name VARCHAR(128)

DECLARE @constraint_name VARCHAR(128)
SET @constraint_name = ''

DECLARE @row_number INT

SELECT @row_number = Count(*) FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME = rc1.CONSTRAINT_NAME

WHILE @row_number > 0
BEGIN
    BEGIN
        SELECT TOP 1 @table_name = tc2.TABLE_NAME, @constraint_name = rc1.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
        LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME = rc1.CONSTRAINT_NAME
        AND rc1.CONSTRAINT_NAME > @constraint_name
        ORDER BY rc1.CONSTRAINT_NAME
        SELECT @sql = 'ALTER TABLE [dbo].[' + RTRIM(@table_name) +'] DROP CONSTRAINT [' + RTRIM(@constraint_name)+']'
        EXEC (@sql)
        PRINT 'Dropped Constraint: ' + @constraint_name + ' on ' + @table_name
        SET @row_number = @row_number - 1
    END
END
GO

-- Drop all tables --

DECLARE @sql  NVARCHAR(156)
DECLARE @name VARCHAR(128)
SET @name = ''

DECLARE @row_number INT

SELECT @row_number = Count(*) FROM sysobjects WHERE [type] = 'U' AND category = 0

WHILE @row_number > 0
BEGIN
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
    SELECT @sql = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@sql)
    PRINT 'Dropped Table: ' + @name
    SET @row_number = @row_number - 1
END
GO

0

টেম্পোরাল টেবিলগুলির জন্য কিছু বিদেশী কী এবং ব্যতিক্রমও থাকতে পারে বলে এটি কিছুটা জটিল:

Drop table operation failed on table XXX because it is not a supported operation on system-versioned temporal tables

আপনি যা ব্যবহার করতে পারেন তা হ'ল:

-- Disable constraints (foreign keys)
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO

-- Disable system versioning (temporial tables)
EXEC sp_MSForEachTable '
 IF OBJECTPROPERTY(object_id(''?''), ''TableTemporalType'') = 2
  ALTER TABLE ? SET (SYSTEM_VERSIONING = OFF)
'
GO

-- Removing tables
EXEC sp_MSForEachTable 'DROP TABLE ?'
GO
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.