初心者のDBAです。私の最初のDBAの仕事に落ち着き、教室環境以外でどのように機能するかを理解しようとしています。お待ちいただきますようお願いいたします。
私はすべてのデータベースの図を作成しようとしています。ここでどのようにレイアウトされているかを理解できるようにしています。私が直面している問題は、特に1つのデータベースの図を作成しようとすると、 m次のエラーが発生します:
プリンシパル「dbo」が存在しない、このタイプのプリンシパルが偽装できない、または権限がないため、データベースプリンシパルとして実行できません。 (Microsoft SQL Server、エラー:15517)
この問題の詳細を検索してみましたが、通常はデータベースの所有者が削除されたことが原因であるようですが、このデータベースには[〜#〜] sa [〜#〜 ]をオーナーにして、問題にはなりません。 sa...としてサインインすると、図を作成することさえできません...
これが何か関係があるかどうかはわかりませんが、この特定のデータベースが数か月前に新しいサーバーに移行されたため、それが行われたときに何かが壊れた可能性があります(データベースは稼働中で使用されているため完全に壊れていません) )。
多分それは古いサーバーからのsaアカウントを探しており、現在のサーバーでsaアカウントを使用するように更新する必要があるだけですか?
編集:結局のところ、このDBには実際には所有者がいない可能性があります。データベースで右クリック> [プロパティ]> [ファイル]を実行すると、一般の所有者フィールドには表示されますが、データベースの所有者は表示されません。
GUIを使用して変更しようとしたところ、次のエラーでセットの所有者が失敗したことが通知されました。
ロック要求のタイムアウト期間を超えました。 (Microsoft SQL Server、エラー:1222)
alter authorization ...
ステートメントも試してみましたが、完了しませんでした(または、正確にするために数分後にキャンセルしました)。私はその発言に焦りを感じているのでしょうか、それともここで何か他のことが起こっていますか?
これはあなたの質問を少し再構成していますが、実際にはデータベースダイアグラム機能の使用は避けます。次のバージョンのSSMS(v18)から 非推奨および削除 になりました。
次の機能はSSMSで使用できなくなりました。
- ...
- データベース図
このブログ投稿 のスクリーンショットで、機能が利用できないことに注意してください(そのため、この機能は非推奨/非推奨ではなく、実際には製品から削除されています)。
ただし、質問に答えるために、そのGUIアクションはALTER AUTHORIZATION
コマンドが舞台裏で動いているので、あなたは正しい方向に進んでいました。 SSMSは永遠に待機することはないため、タイムアウトエラーが発生するとエラーが発生します。
所有者を変更するには、データベースへの排他的アクセスが必要になる可能性があります。したがって、 データベースをシングルユーザーモードに設定 して、コマンドを実行する必要があります。
このすべてに慣れていないとのことですので、計画的なダウンタイム中にのみこれを行うようにしてください。他のすべてのユーザー、アプリケーション、スケジュールされたジョブなどを切断するため。
これを試して、データベースの所有者を確認します。
SELECT name AS DB, SUSER_SNAME(owner_sid) AS owner FROM sys.databases
所有者がsaでない場合は、ALTER AUTHORIZATIONを実行するか、非推奨のコマンドsp_changedbownerを使用できます。
USE [*db*]
GO
EXEC sp_changedbowner 'sa'
GO
廃止予定ですが、この手順は後のバージョンでも使用できます。データベースをシングルユーザーモードにしないようにするために、このコマンドを使用して運が良かったです。