Tôi đang làm việc với SQL Server 2012. Tôi muốn kiểm tra xem người dùng có tồn tại hay không trước khi thêm nó vào cơ sở dữ liệu.
Đây là những gì tôi đã thử nghiệm:
USE [MyDatabase]
GO
IF NOT EXISTS (SELECT name
FROM [sys].[server_principals]
WHERE name = N'IIS APPPOOL\MyWebApi AppPool')
Begin
CREATE USER [IIS APPPOOL\MyWebApi AppPool]
FOR LOGIN [IIS APPPOOL\MyWebApi AppPool] WITH DEFAULT_SCHEMA=[dbo]
end
ALTER ROLE [db_owner] ADD MEMBER [IIS APPPOOL\MyWebApi AppPool]
GO
Nhưng, mã SELECT name FROM [sys].[server_principals]
này không trả về nếu người dùng đó tồn tại MyDatabase
.
Làm cách nào để kiểm tra xem người dùng có tồn tại MyDatabase
không?
1
Hãy nhớ rằng sys.database_principals chứa các vai trò và người dùng với nhau, vì vậy người ta không được quên để lọc người dùng. Tôi đang cập nhật truy vấn cuối cùng với câu trả lời hiện được đánh dấu để dễ tham khảo.
—
Moiz Tankiwala