web-dev-qa-db-ja.com

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

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です。

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

128
Rookian

データベースの所有権については、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
176
Aaron Bertrand

SQL Server Management Studioで次を実行します。

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

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

enter image description here

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

できます。

7
RafiO

所有者テキストボックスに「sa」ではなく「SA」と入力します。これは私のために働いた。

5
Adarsh V C

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

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

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

5
PhpLou

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

ページの左側でファイルを選択します

OWNERボックスで、3つのドット(…)があるボタンを選択します

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

3
Anil Rana

これは私のためにそれを修正しました。データベースプロパティウィンドウの「ファイル」セクションにある所有者を設定し、管理スタジオによってスクリプト化されます。

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

sp_changedbowner documentation によると、これは現在廃止されています。

イスラエルの答えに基づきます。アーロンの答えは、これの非推奨ではないバリエーションです。

3
Tim Abell

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

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

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

0

管理者として入力し、Microsoft SQL Server Management Studioを右クリックして、管理者として実行する必要があります

0

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

0
Lebone Mcdonald

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

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

悲しいことに、これは何が間違っていたのかわからないので、他のことを共有できないことを意味します。

0
Dave

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

0
Nui San