2012年5月31日 星期四

使用 SSMS 建立 Login 的使用者對應時,遇到"使用者群組或角色在【資料庫名稱】的目前資料庫中已經存在"的問題排除

引用來源
--
 當您將資料庫伺服器 A 中的資料庫於資料庫伺服器 B 還原後,嘗試建立 Login(以下稱登入)DB與 User(以下稱使用者)對應時,可能遇到使用者群組或角色在[資料庫名稱]的目前資料庫中已經存在的錯誤訊息。

這是因為當使用 SQL Server Management Studio(以下簡稱 SSMS)為名稱為 NWUser 的登入建立對應至 Northwind 資料庫名稱為 NWUser 的使用者時(如下圖),SSMS 其實幫您執行了以下的 T-SQL 敘述。
USE [master]
GO
CREATE LOGIN [NWUser] WITH PASSWORD=N'密碼', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [Northwind]
GO
CREATE USER [NWUser] FOR LOGIN [NWUser]
GO
USE [Northwind]
GO
ALTER USER [NWUser] WITH DEFAULT_SCHEMA=[dbo]
GO
所以, 因為NWUser早就存在,當然就發生錯誤了。
解決方式就是下指令:

一、使用ALTER USER敘述

使用下列 T-SQL 敘述來建立資料庫使用者與登入的對應,首先必須先將作用中的資料庫切換至要建立對應的資料庫,接著使用 ALTER USER 敘述來指定使用者所要對應的登入。
USE Northwind
GO
ALTER USER NWUser WITH LOGIN = NWUser
GO
二、使用 sp_change_users_login 系統預存程序

使用下列 T-SQL 敘述來建立資料庫使用者與登入的對應。

USE [Northwind]
GO
EXEC sp_change_users_login 'Update_One','NWUser','NWUser'
GO

沒有留言:

張貼留言