データベースダイアグラムサポートオブジェクトをインストールできません…有効な所有者がいません


132

SQL Server 2008でデータベースダイアグラムを作成しようとしましたが、エラーが発生しました。

このデータベースには有効な所有者がいないため、データベースダイアグラムサポートオブジェクトをインストールできません。続行するには、まず[データベースのプロパティ]ダイアログボックスの[ファイル]ページまたはALTER AUTHORIZATIONステートメントを使用してデータベースの所有者を有効なログインに設定し、次にデータベースダイアグラムサポートオブジェクトを追加します。

それから私は以下を試しました:

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

次のエラーがポップアップします:

メッセージ15404、レベル16、状態11、行1 Windows NTグループ/ユーザー 'WIN-NDKPHUPPNFL \ Administrator'、エラーコード0x534に関する情報を取得できませんでした。

問題は、PCの名前が "DevPC"に変わったことです。これも更新スクリプトで変更しましたが、同じエラー15404です。

この迷惑なエラーを修正するにはどうすればよいですか?


4
別のマシンからバックアップを復元するときにもこの問題が発生します。
Tim Abell 2014年

別のマシンからデータベースを復元する場合、2つのコマンドを実行してこのエラーを修正できます。1)alter authorization on database::[db_name] to [sa]と2)同じコマンドを再度実行し[sa]、復元直後にデータベースを所有していたユーザーに置き換えます。
James L.

回答:


182

データベースの所有権については、SQL認証アカウントを検討する必要があります。そうすれば、アカウントが行き来したり、データベースやインスタンスが別のサーバーに移動したり、次のPC名が変わったりすることを心配する必要はありません。私が使用するシステムはいくつかあります。

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

または、所有者をそのローカル管理者アカウントに変更する場合は、次のようにする必要があります。

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

マシンの名前をに変更するとDevPC、以前は名前が付けられていたローカルアカウントが削除されWIN-ND...\Administrator、これによりデータベースの現在の所有者も無効になりました。

SELECT @@SERVERNAME;が正確でない場合(「」と言う必要がありますDevPC)、サーバーの名前変更がSQL Server内で確実に行われるようにするために、次のコマンドを発行することもできます。

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO

それは示しています: "WIN-NDKPHUPPNFL"私はあなたのSQLステートメントを使用し、それは機能します...しかし、この設定は正しいですか、それとも他に何かする必要がありますか?
Rookian、2010年

まあ、それは本当に依存します。データベースをWindowsドメイン/ワークグループユーザーが所有する必要がある場合は、さらに多くの作業が必要になります。個人的には、これが問題だと思います。:たぶん、この最初の読みsqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/...
アーロン・ベルトラン

1
saSQL認証を無効にしている場合、に設定することに問題はありますか?
Tim Abell

@AaronBertrandこんにちは質問があります。デフォルトでは、データベースを作成すると、データベースの所有者が現在のWindowsユーザーに設定され、現在のWindowsユーザーが管理者でもある場合。これをSql Authantication Loginに変更する必要がある理由。実際、私はこのエラーを理解できません。これをsaログインに変更すると機能します。ただし、管理者Windowsログインはシステム管理者でもあります。助けてもらえますか?
UfukSURMEN 2017年

一連のデータベースを復元したところ、各データベースのプロパティに有効なユーザーが表示されていたとしても、OPの質問にすべてのエラーが表示されました。最初のコマンドを使用して変更してから[sa]、それを以前のユーザーであるとユーザーに戻しましたが、ビオラの場合はエラーは発生しません。データベースの復元でデータベース所有者が正しく設定されなかった理由がわからない...
James L.

208

SQL Server Management Studioで、次の手順を実行します。

  1. データベースを右クリックして、プロパティを選択します
  2. オプションページに移動
  3. 「互換性レベル」という右側のドロップダウンで、「SQL Server 2005(90)」を選択します3-1。比較可能性のエラーが発生した場合は、「SQL Server 2008」を選択してください。
  4. ファイルページに移動
  5. 所有者のテキストボックスに「sa」と入力します。5-1または省略記号(...)をクリックして、正当な所有者を選択します。
  6. OKを押します

これを実行すると、データベースダイアグラムにアクセスできるようになります。

ここに画像の説明を入力してください


2
データベースに所有者がいない理由はありますか?私は他の誰かの製品データベースに入りますが、所有者セットがありません。これは意図的なものでしたか?(クライアントには誰も知りません)。
Jason Kleban

データベースには所有者が必要です。正当な所有者の代わりに「sa」を選択することは、上記のエラーを修正するための簡単な選択です。しかし、正当な所有者を選択することも問題を修正しました。
Lesly Revenge 2014

3
これらの手順で互換性レベルを変更する目的を誰かが説明できますか?ファイルの下の所有者を 'sa'に設定するだけで十分です(奇妙なことに、SQL認証を有効にしていない場合でも)。
Tim Abell

これでうまくいきました。ただし、データベース名>セキュリティからユーザーを削除する必要がありました。
Gezim、2015

これは、SQL Server 2017で、Management Studio 17.9を使用して、ステップ1を必要とせずに機能しました
Giorgio Barchiesi

7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

できます。


5

所有者のテキストボックスに「sa」の代わりに「SA」と入力します。これでうまくいきました。


5

私も同じ問題を抱えていました。
仕事で同じ日に作成した図を自宅で見たかった。しかし、このメッセージのために私はできませんでした。
予想通り、データベースの所有者が私のコンピューターのユーザーであることがわかりました。しかし、コンピューターが会社のドメインにあり、会社のネットワークに接続していないため、データベースは所有者を解決できませんでした。

だから私がしたことは所有者をローカルユーザーに変更してそれがうまくいったことです!!
これが誰かを助けることを願っています。

データベース、プロパティ、ファイル、所有者を右クリックしてユーザーを変更します


3

これで解決しました。これは、データベースプロパティウィンドウの「ファイル」セクションにある所有者を設定し、Management Studioによってスクリプト化されます。

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

sp_changedbownerのドキュメントによると、これは現在非推奨です。

イスラエルの回答に基づく。アーロンの答えは、これの廃止されていないバリエーションです。


3

データベースを選択-右クリック-プロパティを選択

ページの左側でFILEを選択します

所有者ボックスで、3つのドット(…)が含まれているボタンを選択します。

次に、ユーザー 'saを選択し、[OK]をクリックします


0

私はこれを経験しました。私はこのページの提案、およびSQL Authorityの提案(これは同じことです)を読んでいて、上記のどれも機能しませんでした。

最後に、アカウントを削除して再作成しました(同じユーザー名/パスワードで)。そのように、すべての問題が解消されました。

悲しいことに、これは何が悪かったのかわからないので、他のことは共有できません。


0

1.データベースを右クリックし、2.プロパティを選択します。3.Microsoft sql 2008を使用している場合は、互換性レベルでオプションを選択し、sql 2008 [100]を選択します。

4.次に、ファイルを選択し、所有者のテキストボックスに(sa)と書き込みます。

100%は私のために働きます。


0

この問題を解決する簡単な方法は、データベースの名前を右クリックして[新しいクエリ]を選択し、「exec sp_changedbowner 'sa'」と入力してクエリを実行することです。その後、あなたは行ってもいいでしょう。



0

クエリエディターでのみ実行する必要があるALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [domain \ account];


-3

実際の問題は、デフォルトの所有者(dbo)にログインがマップされていないことです。saログインをデータベースの所有者にマップしようとすると、「ユーザー、グループ、またはロール 'dbo'を示す別のエラーが表示されましたすでに存在します... "。ただし、このコードを試しても実際には機能します。

EXEC sp_dbcmptlevel 'yourDB'、 '90';

行く

DATABASE :: yourDBのAUTHORIZATIONを "yourLogin"に変更する

行く

[yourDB]を使用

行く

ユーザーとして実行= N'dbo 'REVERT

行く


-3

データベースを右クリックして、プロパティを選択します。Microsoft SQL 2008を使用している場合は、互換性レベルでオプションを選択し、2008ではなくsql 2005 [90]を選択します。次に、ファイルを選択し、所有者のテキストボックスに(sa)を書き込みます。それはおそらく動作します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.