====== MS SQLServer ====== ===== バックアップ セットは、既存のデータベース ‘%ls’ 以外のデータベースのバックアップを保持しています ===== バックアップからリストアするときに表示される\\ webなどでは * 「既存のデータベースを上書きする」チェックを入れる * mdf,ldfファイルのパスが間違ってる などがあるが、それでも解消できなかった場合、以下のSQLでリストアできた RESTORE DATABASE kingdb -- 復元対象DB FROM DISK = 'D:/DATA/kingdb.bak' with replace, MOVE 'test1' TO 'D:/DATA/test1.mdf', -- 復元対象DB名を変更する可能性がある MOVE 'test1_log' TO 'D:/DATA/test1_log.ldf' -- 復元対象DB名を変更する可能性がある ===== SQL Server のデータベースユーザーを削除しようとしたら「スキーマを所有しているので削除できません」 ===== これは、いずれかのスキーマを所有しているため削除できませんという意味です。 * そのユーザでテーブルを作成した * そのユーザでViewを作成した * 権限スキーマの所有者になってる 等の原因が考えられます。解決法としては以下のようなものになります ----   -- いったん、ユーザーと、そのユーザー名と同名のスキーマを明示的に関連付け、 ALTER USER ユーザ名 WITH DEFAULT_SCHEMA = ユーザ名 -- そのスキーマを明示的に削除してから、 DROP SCHEMA ユーザ名 -- ユーザーを削除。 DROP USER ユーザ名 GO ----   - データベース→スキーマ→db_owner((等))の所有者を確認 - 該当ユーザが所有者にになっていたら、ほかの所有者に変更 - たぶんこれで削除できるはず ==== 原因 ==== SQL Server 2012以前では、SQL Serverのデータベースエンジンのインスタンス間でデータベースを移行または復旧すると、データベースユーザーに関連付けられたサーバログインは、移行先/復旧先のインスタンスに自動でコピーされない。\\ そのため、孤立したユーザーが生まれ、移行直後のデータベースは機能しない。