データベースを接続し、所有者を有効なログインに変更してみました。
次のステートメントを使用しました:ALTER AUTHORIZATION ON database :: my_db_name TO "sa"。データベースプロパティは、新しい所有者が 'sa'であることを示しましたが、アセンブリの信頼の問題について、無制限のCLRアセンブリ(0x80FC80F1、0x8013150A)に対するアクセス許可エラーが引き続き発生しました。
代わりに次のステートメントを使用して問題を解決しました:EXEC sp_changedbowner 'sa';データベース所有者を変更します。
私の質問は、データベース所有者を変更するこれらの2つの方法の違いは何ですか。それらは同等ですか? sp_changedbownerが、alter Authorizationステートメントが実行していないことよりも多く/正しいことを実行していることは、私には明らかです。
興味があれば... sp_changedbownerで修正する前に、次のことを試しました。
あなたのリストでは、データベースを信頼できるものとして設定しているようには見えないので、このステップを忘れたと思います。
ALTER DATABASE my_db_name SET TRUSTWORTHY ON;
しかし、多分そうではない...
この記事で確認: http://support.Microsoft.com/kb/91804 実際には、ALTER AUTHORIZATIONの代わりにsp_changedbownerを使用することをお勧めします。しかし、実際には、それはまったく同じことを行います(sp_changedbownerは内部でALTER AUTHORIZATIONを呼び出します)。違いは、dboユーザーの「エイリアス」も削除され(とにかく非推奨の機能)、データベースのチェックポイントが強制されることです。その最後の部分はあなたが探しているものかもしれません。
私は信じている ALTER_AUTHORIZATION
およびsp_changedbowner
はどちらもデータベースオブジェクトの所有権を変更できます。もちろん、コマンドの違いはALTER_AUTHORIZATION
は他のこと(テーブルの所有権など)を変更できますが、sp_changedbowner
は、データベースの所有者を変更するためのものです。
ただし、指定した動作は非常に奇妙に聞こえます。再現できますか?