這個問題是在今天要還原一個新的資料庫的過程中,建立 Login & User 對應的時候出現的問題
使用者、群組或角色 ‘DB_USER’ 在目前的資料庫中已經存在。
在實際要還原的資料庫名稱 DB 內並無 DB_USER 的任何資料,所以不會有已存在 USER 的狀況
在 MSSQL 遇上這樣類似的狀況的時候,我都會習慣用 TSQL 一步一步執行來將問題點切割開來看
在 SSMS 建立 User Login 的這段其實就是在執行以下指令
USE [master] GO CREATE LOGIN [DB_USER] WITH PASSWORD=N'密碼', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO USE [DB] GO CREATE USER [DB_USER] FOR LOGIN [DB_USER] GO USE [DB] GO ALTER USER [DB_USER] WITH DEFAULT_SCHEMA=[dbo] GO
在此範例的過程中是在 CREATE USER 這段出現了錯誤
無法使用資料庫 DB 的記錄檔
檢查 DB 的 ldf 紀錄檔並沒有爆掉或已滿的狀況,判斷可能是在 restore 的過程中有誤,所以造成交易紀錄檔截斷而無法使用。
在這邊就沒有多花時間,直接將這個資料庫離線、再上線即可正常寫入交易紀錄檔 (相對的調整 DB simple mode 也是可以的)
最後給予 DB_USER 權限
EXEC sp_addrolemember N'db_owner',N'DB_USER'
參考資料:
使用 SSMS 建立 Login 的使用者對應時,遇到”使用者群組或角色在【資料庫名稱】的目前資料庫中已經存在”的問題排除(一點通系列 – MVP 撰寫)