SQLserverでDBを異なるスキーマ名に変更する手順
復元したDBを異なるスキーマ名のDBとする
通常、復元したDBを異なるDB名にした場合、スキーマ名は元々のスキーマ名を保持しているので、
全TBLのスキーマ名の変更が必要になってくる。
1件、1件やるのは効率が悪いので、SELECT文にて、一括変更用のSQLを作成する。
変更方法
- 下記SQLを実行する。
※afterschemaは、変更後のスキーマ名を設定
beforeschemaは変更前のスキーマ名を設定
SELECT
'alter schema afterschema transfer beforeschema.' + RTRIM(A.name) + ';' AS TableName
FROM
sys.objects AS A
JOIN
sys.sysindexes AS B
ON A.object_id = B.id
AND B.indid < 2
WHERE
A.type = 'U'
ORDER BY
A.name
実行結果
2. 実行結果に表示されたSQL文を実行する。
2.1. 実行結果を全選択
2.2. 「alter schema afterschema transfer beforeschema.dtproperties;」は実行するSQLから除く事。
→スキーマ名を変えてはいけないテーブルです(> <)
2.3. 2.2.で除いたSQL以外を実行する。
※DBを復元した状態だと、ユーザーID等が紐づいてない可能性有。
上記手順を行う前に、ユーザーの紐づき直しを行わないといけない可能性有。
参考 DBを復元した場合のユーザー紐づけ方法
Author And Source
この問題について(SQLserverでDBを異なるスキーマ名に変更する手順), 我々は、より多くの情報をここで見つけました https://qiita.com/peke_seto/items/349e944e5d34b669fbab著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .