ฉันทำงานกับ SQL Server 2012 ฉันต้องการตรวจสอบว่ามีผู้ใช้อยู่ก่อนที่จะเพิ่มลงในฐานข้อมูลหรือไม่
นี่คือสิ่งที่ฉันได้ทดสอบ:
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
แต่รหัสนี้จะไม่กลับมาหากผู้ใช้ที่มีอยู่ในSELECT name FROM [sys].[server_principals]
MyDatabase
ฉันจะตรวจสอบว่ามีผู้ใช้อยู่ในได้MyDatabase
อย่างไร?
1
โปรดทราบว่า sys.database_principals มีบทบาทและผู้ใช้ร่วมกันดังนั้นจึงต้องไม่ลืมที่จะกรองผู้ใช้ ฉันกำลังอัปเดตคำถามสุดท้ายกับคำตอบที่ทำเครื่องหมายไว้ในปัจจุบันเพื่อให้อ้างอิงได้ง่าย
—
Moiz Tankiwala