ユーザ用ツール

サイト用ツール


サイドバー

Index

はじめてのおつかい




DokuWiki整形記法


PlayGround



serverapps:sqlserver

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

 

  1. データベース→スキーマ→db_owner1)の所有者を確認
  2. 該当ユーザが所有者にになっていたら、ほかの所有者に変更
  3. たぶんこれで削除できるはず

原因

SQL Server 2012以前では、SQL Serverのデータベースエンジンのインスタンス間でデータベースを移行または復旧すると、データベースユーザーに関連付けられたサーバログインは、移行先/復旧先のインスタンスに自動でコピーされない。
そのため、孤立したユーザーが生まれ、移行直後のデータベースは機能しない。

1)
serverapps/sqlserver.txt · 最終更新: 2017/05/08 13:26 by hayashi