SQLデータベース内のすべてのテーブル(100以上)に2019_というプレフィックスの名前を誤って付けました
今までこれが良い考えではないことに気付きませんでした(2年後にSQLに戻っただけです)
それをサフィックスに一括スワップする方法、またはすべてのテーブルを削除する方法はありますか?開けられないようです。本当にそれらすべてを手動で通過する必要はありません。
これがばかげた質問であり、間違った用語をググる可能性がある場合の謝罪
よろしくお願いします!
あなたの状況では、おそらく次のようなスクリプトを使用して、すべてのsp_rename
コマンドを生成します。
SELECT SCHEMA_NAME(schema_id) as schemaname, name as tablename,
cmd = 'EXEC sp_rename ''' + SCHEMA_NAME(schema_id) + '.' + name + ''', '''
+ SUBSTRING(name, 6, 99) + ''';'
FROM sys.tables
WHERE type = 'U'
AND is_ms_shipped = 0
AND name LIKE '2019[_]%'
これは、sys.tables
システムテーブルから名前を取得し、2019_
で始まる名前のすべてのユーザー作成テーブルを見つけます。 sp_rename
コマンドのリストが生成されます。これを新しいSSMSウィンドウにコピーし、実行前にコマンドが正しく見えることを注意深く確認できます。
これにより、これらのテーブルを参照する他のオブジェクト(ビュー、トリガー、ストアドプロシージャなど)が破壊されることに注意してください。したがって、このデータベースが開発の非常に早い段階にあることを願っています。
もともとコメントとして残された部分回答:
eagle275 :番号で始まるテーブル名は引き続き有効なSQLですが、SQL Serverから「読み取る」には、
[dbo].[table_name]
。strawberry :まず、バックアップを作成します。次に、データベースのスクリプトを生成して、お好みのテキストエディタで簡単に編集できます。
tibor-karaszi :「すべてのテーブルを削除する」と言うので、データベースを削除して新しいテーブルを作成する方が簡単でしょう。もちろん、データベース内に保持したいotherものがあるかどうかによって異なります。
david-spillett :DB内のビュー、ストアドプロシージャ、トリガー、関数なども、テーブル参照の更新が必要になります。更新されていないテーブルのオブジェクト名以外のオブジェクト名がある場合、これは自動化する重要なタスクとfafになる可能性があります。このDBが何らかの方法で稼働している場合、かなりの量のテスト時間の予算がない限り、今のところミスを残しておく方がよいでしょう。