Attach或Retore SQL資料庫到別台,必須要先Drop User才能重設User權限,這個我很早就有經驗

這次的問題有點不一樣,在Drop User時出現以下訊息:

The database principal owns an assembly and cannot be dropped

用SQL Server Management Studio檢查,果然有一個SQLCLR Stored Procedure的Owner不是dbo,而是這個我要Drop的User。我想起來,之前在Deploy SQLCLR Procedure時,連線字串用了這個User帳號而沒用sa,但Assembly似乎不能用sp_changeobjectowner更換Owner,MSDN文件上也闡明了未來將不再支援sp_changeobjectowner這個老SP,將以ALTER AUTHORIZATION、ALTER SCHEMA取代之,所以就要寫成:

ALTER AUTHORIZATION ON Assembly::MyAsembly TO dbo;

將Owner改掉後,就可以Drop User囉!


Comments

Be the first to post a comment

Post a comment