MySQLはすべてのテーブルをDROPし、外部キーを無視します


403

MySQLデータベースからすべてのテーブルを削除して、そこにある可能性のある外部キー制約を無視する簡単な方法はありますか?


1
他にたくさんのエンティティがない限り、DROP DATABASEを実行してゼロから始めてみませんか?
StuartLC 2010

161
ユーザー特権を保持するため。
bcmcfc 2010

5
その間、Dion Truterから私の回答よりも完全な回答が得られたので、代わりにそれを受け入れることをお勧めします。(「すべてのテーブルを削除する」の部分は私のものではありません)
チッコドロ

5
たまたまphpMyAdminがインストールされている場合、すべてのテーブルを選択してドロップするのは簡単です。
ユーザー

1
これは当てはまりますが、バージョン4.xのphpMyAdminに対してのみです。すべてのテーブルを選択しDrop、ドロップダウンメニューから選択した場合、チェックForeign key checkボックスをオフにすることができます。
jmarceli 2013

回答:


474

生成された一連のドロップステートメントが有用であることがわかったので、以下の調整をお勧めします。

  1. 次のように、生成されたドロップをデータベースに制限します。
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';

注1:これはDROPステートメントを実行するのではなく、それらのリストを表示するだけです。実行するには、出力をSQLエンジンにカットアンドペーストする必要があります。

注2:VIEWがある場合は、各DROP TABLE `VIEW_NAME`ステートメントをDROP VIEW `VIEW_NAME`手動で修正する必要があります。

  1. http://dev.mysql.com/doc/refman/5.5/en/drop-table.htmlによると、カスケードを使用したドロップは無意味/誤解を招きやすいことに注意してください。

「RESTRICTとCASCADEは移植を容易にするために許可されています。MySQL5.5では何もしません。」

したがって、必要に応じてdropステートメントを機能させるには、次のようにします。

SET FOREIGN_KEY_CHECKS = 0

これにより、参照整合性チェックが無効になります。したがって、必要なドロップの実行が完了したら、次のコマンドでキーチェックをリセットする必要があります。

SET FOREIGN_KEY_CHECKS = 1
  1. 最終的な実行は次のようになります。
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;

注意:SELECTの出力をより簡単に使用するには、mysql -Bオプションが役立ちます。


6
@Timmm:私は私の答えに3滴を書きました-しかし、これもそれらを実行しません。Stackoverflowからそれらをコピーし、MySQL Workbenchまたはどこかに貼り付ける必要があります。上記の選択により、一致するすべてのドロップを「無料」で入手できます。それらをコピーして貼り付けるだけです。
チッコドロ

3
ええ、わかっていますが、スクリプトで使用したかったのです。私が実際にやったのはDROP DATABASE foo; CREATE DATABASE foo;と同じではありませんが、うまくいきました。
Timmmm、

2
数百のテーブルがある場合は不便ですが、データベースの再作成が選択肢にならない場合は何もしないよりはましです。
Nicolas Raoul

2
@Timmmm:これをもう一度見てください-あなたは正しいです、それは質問に完全には答えません。Jeanの答えは有望に見えます。DROPステートメントを自動生成して実行すると同時に、前後にSET FOREIGN_KEY_CHECKSを適切に適用します。
チコドロ2014年

1
LinuxまたはMacを使用していて、mysqlアカウントにログインする場合はターミナルを使用します
。mysql

132

http://www.devdaily.com/blog/post/mysql/drop-mysql-tables-in-any-order-foreign-keysから:

SET FOREIGN_KEY_CHECKS = 0;
drop table if exists customers;
drop table if exists orders;
drop table if exists order_details;
SET FOREIGN_KEY_CHECKS = 1;

(これは、テーブルを任意の順序でドロップできるようにするために、外部キーチェックを無効にする方法に答えるものです。既存のすべてのテーブルのドロップテーブルステートメントを自動的に生成し、単一のスクリプトで実行する方法には答えません。ジーンの答えします。)


10
MySQL Workbenchを使用する場合、左側の列ですべてのテーブルを選択して右クリックし、[テーブルの削除]オプションを選択することで、すべてのテーブル名を入力する必要を回避できます。ITは、SET FOREGIN_KEY_CHECKSステートメント間でコピーして貼り付けることができるSQLを生成します-おそらく他のGUIでも同様です。
クリス

ありがとう、そして@chrisは非常に役に立ち、回答を追加する必要があります
Andrew

97

以下は、外部キーが無視されるように変更されたSurlyDreのストアドプロシージャです。

DROP PROCEDURE IF EXISTS `drop_all_tables`;

DELIMITER $$
CREATE PROCEDURE `drop_all_tables`()
BEGIN
    DECLARE _done INT DEFAULT FALSE;
    DECLARE _tableName VARCHAR(255);
    DECLARE _cursor CURSOR FOR
        SELECT table_name 
        FROM information_schema.TABLES
        WHERE table_schema = SCHEMA();
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;

    SET FOREIGN_KEY_CHECKS = 0;

    OPEN _cursor;

    REPEAT FETCH _cursor INTO _tableName;

    IF NOT _done THEN
        SET @stmt_sql = CONCAT('DROP TABLE ', _tableName);
        PREPARE stmt1 FROM @stmt_sql;
        EXECUTE stmt1;
        DEALLOCATE PREPARE stmt1;
    END IF;

    UNTIL _done END REPEAT;

    CLOSE _cursor;
    SET FOREIGN_KEY_CHECKS = 1;
END$$

DELIMITER ;

call drop_all_tables(); 

DROP PROCEDURE IF EXISTS `drop_all_tables`;

2
テーブルで機能し、ビューの削除に失敗します。それでも私のタイピングを大幅に減らしました:) thx。
chrisinmtown

7年後_tableName、逆引用符でラップする必要があると思います。そうしないと、groupや他のキーワードなどの一部のテーブルで失敗します。
sashaaero

ビューを大事にしてください!SELECT table_name FROM information_schema.TABLES WHERE table_schema = SCHEMA()AND table_type = "BASE TABLE";
laurent belloeil

42

上記のすべてのアプローチには、このAFAICTよりもはるかに多くの作業が含まれています...

( mysqldump --add-drop-table --no-data -u root -p database | grep 'DROP TABLE' ) > ./drop_all_tables.sql
mysql -u root -p database < ./drop_all_tables.sql

2
ファイルを経由せずmysqldumpmysql、単ににパイプしないのはなぜですか?
ロルフ、

2
@Rolf特に理由はありません。自分をノックアウトします。
SkyLeach、2018年

2
おかげで、私は既に行い、括弧を削除してにパイプmysqldumpgrepましたmysql、それは動作します。解決策をありがとう、それは良いことです。
ロルフ

5
これには外部キーの制約がありません。私はあなたの答えに基づいてbashスクリプトをここに追加しました:gist.github.com/cweinberger/c3f2882f42db8bef9e605f094392468f
cweinberger

sooooooooooooo smart!
zx1986

25

この答えから、

実行:

  use `dbName`; --your db name here
  SET FOREIGN_KEY_CHECKS = 0; 
  SET @tables = NULL;
  SET GROUP_CONCAT_MAX_LEN=32768;

  SELECT GROUP_CONCAT('`', table_schema, '`.`', table_name, '`') INTO @tables
  FROM   information_schema.tables 
  WHERE  table_schema = (SELECT DATABASE());
  SELECT IFNULL(@tables, '') INTO @tables;

  SET        @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
  PREPARE    stmt FROM @tables;
  EXECUTE    stmt;
  DEALLOCATE PREPARE stmt;
  SET        FOREIGN_KEY_CHECKS = 1;

これにより、現在使用中のデータベースからテーブルが削除されます。を使用して、現在のデータベースを設定できますuse


それ以外の場合は、最初にクエリを取得するために2回実行し、次にクエリを実行するために2回実行する必要があることを除いて、Dionが受け入れた回答はより単純です。データベース名とテーブル名の特殊文字をエスケープするために、愚かなバックティックをいくつか提供しました。

  SELECT CONCAT('DROP TABLE IF EXISTS `', table_schema, '`.`', table_name, '`;')
  FROM   information_schema.tables
  WHERE  table_schema = 'dbName'; --your db name here

短くてきれいなソリューション。代替手順よりもはるかに優れています。
Rafael Renan Pacheco

16

これがカーソルベースのソリューションです。ちょっと長いですが、単一のSQLバッチとして機能します:

DROP PROCEDURE IF EXISTS `drop_all_tables`;

DELIMITER $$
CREATE PROCEDURE `drop_all_tables`()
BEGIN
    DECLARE _done INT DEFAULT FALSE;
    DECLARE _tableName VARCHAR(255);
    DECLARE _cursor CURSOR FOR
        SELECT table_name 
        FROM information_schema.TABLES
        WHERE table_schema = SCHEMA();
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;

    OPEN _cursor;

    REPEAT FETCH _cursor INTO _tableName;

    IF NOT _done THEN
        SET @stmt_sql = CONCAT('DROP TABLE ', _tableName);
        PREPARE stmt1 FROM @stmt_sql;
        EXECUTE stmt1;
        DEALLOCATE PREPARE stmt1;
    END IF;

    UNTIL _done END REPEAT;

    CLOSE _cursor;

END$$

DELIMITER ;

call drop_all_tables(); 

DROP PROCEDURE IF EXISTS `drop_all_tables`;

2
いいですが、残念ながら外部キーを処理しません。
Timmmm

11

できるよ:

select concat('drop table if exists ', table_name, ' cascade;')
  from information_schema.tables;

次に、生成されたクエリを実行します。現在のデータベースのすべてのテーブルを削除します。

ここにいくつかのdrop tableコマンドのヘルプがあります。


上記の回答は、||が連結演算子として設定されていることを前提としています。より具体的には、MySQL SQLモードにはが含まれますPIPES_AS_CONCAT。参考:dev.mysql.com/doc/refman/5.0/en/...
はIonut G.スタン

@Ionut:かっこいい!それを指摘してくれてありがとう。concat代わりに使用するコードサンプルを修正しました||
Pablo Santa Cruz、

9

多くのテーブルで簡単にするために、Dion Truterの回答にこの変更を加えました。

SET GROUP_CONCAT_MAX_LEN = 10000000;
SELECT CONCAT('SET FOREIGN_KEY_CHECKS=0;\n', 
              GROUP_CONCAT(CONCAT('DROP TABLE IF EXISTS `', table_name, '`')
                           SEPARATOR ';\n'),
              ';\nSET FOREIGN_KEY_CHECKS=1;')
FROM information_schema.tables
WHERE table_schema = 'SchemaName';

これにより1つのフィールドにすべてが返されるので、一度コピーしてすべてのテーブルを削除できます(Copy Field Content (unquoted)Workbenchで使用)。テーブルがたくさんある場合、の制限に達する可能性がありますGROUP_CONCAT()。その場合は、max len変数を増やします(max_allowed_packet必要に応じて、)。


SET GROUP_CONCAT_MAX_LENは私が必要としたトリックでした。スクリプトは機能していましたが、最初は常に一部の切り捨てられたテーブル名で失敗し、2回目に実行すると正常に終了しました。ありがとう!
デュアルモン2014年

8

特定のデータベースからすべてのテーブルを削除するためのワンライナー:

echo "DATABASE_NAME"| xargs -I{} sh -c "mysql -Nse 'show tables' {}| xargs -I[] mysql -e 'SET FOREIGN_KEY_CHECKS=0; drop table []' {}"

これを実行すると、データベースDATABASE_NAMEからすべてのテーブルが削除されます。

また、これについての良い点は、データベース名が明示的に一度だけ書き込まれることです。


1
これは私にとってはうまくいきましたが、macOS High Sierraで-iを-Iに置き換える必要がありました
Ali Selcuk

1
@AliSelcukに感謝します。Ubuntuでは-iと-Iの両方が機能するので、macOSでも機能するように-Iに変更します。
mgershen 2018年

1
とても便利です、ありがとう!両方のmysqlコマンドに-pPASSWORD(-pとPASSWORDの間にスペースなし)を使用してパスワードを渡す必要がありました
Mike

8

トピックをグーグルで検索すると、常にこのSOの質問が表示されるので、テーブルとビューの両方を削除するmysqlコードを使用します。

DROP PROCEDURE IF EXISTS `drop_all_tables`;

DELIMITER $$
CREATE PROCEDURE `drop_all_tables`()
BEGIN
    DECLARE _done INT DEFAULT FALSE;
    DECLARE _tableName VARCHAR(255);
    DECLARE _cursor CURSOR FOR
        SELECT table_name
        FROM information_schema.TABLES
        WHERE table_schema = SCHEMA();
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;

    SET FOREIGN_KEY_CHECKS = 0;

    OPEN _cursor;

    REPEAT FETCH _cursor INTO _tableName;

    IF NOT _done THEN
        SET @stmt_sql1 = CONCAT('DROP TABLE IF EXISTS ', _tableName);
        SET @stmt_sql2 = CONCAT('DROP VIEW IF EXISTS ', _tableName);

        PREPARE stmt1 FROM @stmt_sql1;
        PREPARE stmt2 FROM @stmt_sql2;

        EXECUTE stmt1;
        EXECUTE stmt2;

        DEALLOCATE PREPARE stmt1;
        DEALLOCATE PREPARE stmt2;
    END IF;

    UNTIL _done END REPEAT;

    CLOSE _cursor;
    SET FOREIGN_KEY_CHECKS = 1;
END$$

DELIMITER ;

call drop_all_tables();

DROP PROCEDURE IF EXISTS `drop_all_tables`;

6

これは、bashスクリプトを使用してこれを自動化する方法です。

host=$1
dbName=$2
user=$3
password=$4

if [ -z "$1" ]
then
    host="localhost"
fi

# drop all the tables in the database
for i in `mysql -h$host -u$user -p$password $dbName -e "show tables" | grep -v Tables_in` ; do  echo $i && mysql -h$host -u$user -p$password $dbName -e "SET FOREIGN_KEY_CHECKS = 0; drop table $i ; SET FOREIGN_KEY_CHECKS = 1" ; done

このソリューションは本当に好きですが、ホスト変数がどのように使用されているのかわかりません。forループのmysql呼び出しでは使用されていないようです。
Matthew Zackschewski

1
コマンドに入力できなかったため、更新しました。
kfox

5

Linux(またはパイピング、エコー、grepをサポートするその他のシステム)の場合は、1行で実行できます。

echo "SET FOREIGN_KEY_CHECKS = 0;" > temp.txt; \
mysqldump -u[USER] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP >> temp.txt; \
echo "SET FOREIGN_KEY_CHECKS = 1;" >> temp.txt; \
mysql -u[USER] -p[PASSWORD] [DATABASE] < temp.txt;

これは古い質問であることは知っていますが、この方法は高速でシンプルだと思います。


2

PHPでは、次のように簡単です。

$pdo = new PDO('mysql:dbname=YOURDB', 'root', 'root');

$pdo->exec('SET FOREIGN_KEY_CHECKS = 0');

$query = "SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
          FROM information_schema.tables
          WHERE table_schema = 'YOURDB'";

foreach($pdo->query($query) as $row) {
    $pdo->exec($row[0]);
}

$pdo->exec('SET FOREIGN_KEY_CHECKS = 1');

YOURDBをデータベースの名前に変更することを忘れないでください。明らかにユーザー/パスです。


2

bash / zshのようなLinuxシェルでは:

DATABASE_TO_EMPTY="your_db_name";
{ echo "SET FOREIGN_KEY_CHECKS = 0;" ; \
  mysql "$DATABASE_TO_EMPTY" --skip-column-names -e \
  "SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') \
   FROM information_schema.tables WHERE table_schema = '$DATABASE_TO_EMPTY';";\
  } | mysql "$DATABASE_TO_EMPTY"

これはコマンドを生成し、すぐにそれらをテーブルを削除する2番目のクライアントインスタンスにパイプします。

もちろん、ここでは他の回答から巧妙な部分をコピーしています。実際にコピーして貼り付け可能なワンライナー(よう)を作成したかっただけです。、OPが望む仕事することを望んでいました。

もちろん、あなたが非常に低いセキュリティを設定している場合を除き、あまりにも、これらのmysqlコマンドで(2回)で資格情報を配置する必要があります。(または、mysqlコマンドにエイリアスを設定して、クレデンシャルを含めることができます。)


2

すべてのテーブルを削除するために、Jonathan Wattによって作成された便利なコメントをここに入力してください

MYSQL="mysql -h HOST -u USERNAME -pPASSWORD DB_NAME"
$MYSQL -BNe "show tables" | awk '{print "set foreign_key_checks=0; drop table `" $1 "`;"}' | $MYSQL
unset MYSQL

それは私を助け、私はそれが役に立つことを願っています


2

コマンドラインから1行で、データベースからすべてのテーブルを削除します。

mysqldump -u [user_name] -p[password] -h [host_name] --add-drop-table --no-data [database_name] | grep ^DROP | mysql -u [user_name] -p[password] -h [host_name] [database_name]

[user_name]、[password]、[host_name]および[database_name]は、実際のデータ(ユーザー、パスワード、ホスト名、データベース名)に置き換える必要があります。


1

これはかなり古い投稿ですが、ここでの回答はどれも私の意見では実際に質問に答えたものではないので、私の投稿が人々の役に立つことを願っています!

私はこの解決策を私にとって本当にうまくいく別の質問で見つけました:

mysql -Nse 'show tables' DB_NAME | while read table; do mysql -e "SET FOREIGN_KEY_CHECKS=0; truncate table \`$table\`" DB_NAME; done

これにより、データベース内のすべてのテーブルが実際に空DB_NAMEになり、TRUNCATEコマンドラインが。

お役に立てれば!


便利ですが、実際には質問の答えにはなりません。
jrosell 2016

1

次のシェルスクリプトは、@ Dion Truterと@Wade Williamsの回答に基づいて、最初に何を実行するかを示し、Ctrl-Cを使用して中止する機会を与えた後、すべてのテーブルを削除します。

#!/bin/bash

DB_HOST=xxx
DB_USERNAME=xxx
DB_PASSWORD=xxx
DB_NAME=xxx

CMD="mysql -sN -h ${DB_HOST} -u ${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME}"

# Generate the drop statements
TMPFILE=/tmp/drop-${RANDOM}.sql
echo 'SET FOREIGN_KEY_CHECKS = 0;' > ${TMPFILE}
${CMD} $@ >> ${TMPFILE} << ENDD
    SELECT concat('DROP TABLE IF EXISTS \`', table_name, '\`;')
    FROM information_schema.tables
    WHERE table_schema = '${DB_NAME}';
ENDD
echo 'SET FOREIGN_KEY_CHECKS = 1;' >> ${TMPFILE}

# Warn what we are about to do
echo
cat ${TMPFILE}
echo
echo "Press ENTER to proceed (or Ctrl-C to abort)."
read

# Run the SQL
echo "Dropping tables..."
${CMD} $@ < ${TMPFILE}
echo "Exit status is ${?}."
rm ${TMPFILE}

0

このソリューションは@SkyLeachの回答に基づいていますが、外部キーを持つテーブルの削除をサポートしています。

echo "SET FOREIGN_KEY_CHECKS = 0;" > ./drop_all_tables.sql
mysqldump --add-drop-table --no-data -u user -p dbname | grep 'DROP TABLE' >> ./drop_all_tables.sql
echo "SET FOREIGN_KEY_CHECKS = 1;" >> ./drop_all_tables.sql
mysql -u user -p dbname < ./drop_all_tables.sql

0
DB="your database name" \
    && mysql $DB < "SET FOREIGN_KEY_CHECKS=0" \
    && mysqldump --add-drop-table --no-data $DB | grep 'DROP TABLE' | grep -Ev "^$" | mysql $DB \
    && mysql $DB < "SET FOREIGN_KEY_CHECKS=1"

0

シンプルで明確(多分)。

派手な解決策ではないかもしれませんが、これは私に役立ち、私の一日を救いました。

サーバーバージョンで動作:5.6.38 MySQL Community Server(GPL)

私が従った手順:

 1. generate drop query using concat and group_concat.
 2. use database
 3. disable key constraint check
 4. copy the query generated from step 1
 5. enable key constraint check
 6. run show table

MySQLシェル

mysql> SYSTEM CLEAR;
mysql> SELECT CONCAT('DROP TABLE IF EXISTS `', GROUP_CONCAT(table_name SEPARATOR '`, `'), '`;') AS dropquery FROM information_schema.tables WHERE table_schema = 'emall_duplicate';
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dropquery                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DROP TABLE IF EXISTS `admin`, `app`, `app_meta_settings`, `commission`, `commission_history`, `coupon`, `email_templates`, `infopages`, `invoice`, `m_pc_xref`, `member`, `merchant`, `message_templates`, `mnotification`, `mshipping_address`, `notification`, `order`, `orderdetail`, `pattributes`, `pbrand`, `pcategory`, `permissions`, `pfeatures`, `pimage`, `preport`, `product`, `product_review`, `pspecification`, `ptechnical_specification`, `pwishlist`, `role_perms`, `roles`, `settings`, `test`, `testanother`, `user_perms`, `user_roles`, `users`, `wishlist`; |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> USE emall_duplicate;
Database changed
mysql> SET FOREIGN_KEY_CHECKS = 0;                                                                                                                                                   Query OK, 0 rows affected (0.00 sec)

// copy and paste generated query from step 1
mysql> DROP TABLE IF EXISTS `admin`, `app`, `app_meta_settings`, `commission`, `commission_history`, `coupon`, `email_templates`, `infopages`, `invoice`, `m_pc_xref`, `member`, `merchant`, `message_templates`, `mnotification`, `mshipping_address`, `notification`, `order`, `orderdetail`, `pattributes`, `pbrand`, `pcategory`, `permissions`, `pfeatures`, `pimage`, `preport`, `product`, `product_review`, `pspecification`, `ptechnical_specification`, `pwishlist`, `role_perms`, `roles`, `settings`, `test`, `testanother`, `user_perms`, `user_roles`, `users`, `wishlist`;
Query OK, 0 rows affected (0.18 sec)

mysql> SET FOREIGN_KEY_CHECKS = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW tables;
Empty set (0.01 sec)

mysql> 

ここに画像の説明を入力してください


-1

MSSQLサーバーで以下を使用します。

if (DB_NAME() = 'YOUR_DATABASE') 
begin
    while(exists(select 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE='FOREIGN KEY'))
    begin
         declare @sql nvarchar(2000)
         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 1 from INFORMATION_SCHEMA.TABLES))
    begin
         declare @sql2 nvarchar(2000)
         SELECT TOP 1 @sql2=('DROP TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + ']')
         FROM INFORMATION_SCHEMA.TABLES
        exec (@sql2)
        PRINT @sql2
    end
end
else
    print('Only run this script on the development server!!!!')

YOUR_DATABASEをデータベースの名前に置き換えるか、IFステートメント全体を削除します(追加された安全が好きです)。


-7

最適なソリューションこれまでのところ、私にとって

[ データベース]-> [右クリック]-> [タスク]-> [スクリプトの生成]を選択すると、スクリプトを生成するためのウィザードが開きます。[スクリプトの設定]オプションでオブジェクトを選択した後、[ 詳細ボタン ]をクリックします。下の「スクリプトDROPとCREATE」を選択スクリプトDROPを

スクリプトを実行します。


ほとんど機能しましたが、青いボタンの前に緑のボタンをクリックし、左側にボックスが表示され、[キャンセル]をクリックしましたが、コーヒーを飲んで忘れていました。
Rolf

どこをクリックしたか説明してもらえますか?これに関係するツールはありますか?
Nico Haase
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.