2009-07-29 36 views

Trả lời

58
SELECT DATABASE_PRINCIPAL_ID('role') 
--or 
IF DATABASE_PRINCIPAL_ID('role') IS NULL 

USER_ID không được dùng nữa và có thể bị hỏng. CREATE ROLE cho biết SQL 2005+ sao cho OK

+0

@Klaus: thử và tạo vai trò + người dùng có cùng tên. Nó sẽ thất bại. https://msdn.microsoft.com/en-us/library/ms187328.aspx "name" colun là duy nhất – gbn

+1

Điểm tốt. Có, tên phải là duy nhất trên người dùng, nhóm và vai trò. Tôi đã xóa nhận xét trước đó của mình. Cảm ơn. –

23
if not exists (select 1 from sys.database_principals where name='role' and Type = 'R') 
begin 
CREATE ROLE role 
    AUTHORIZATION MyUser; 
end 
+3

Điều này không thành công nếu bạn có người dùng có cùng tên "vai trò". Rất tiếc, nhưng bạn phải xóa "= 'R'" để làm việc 100% – gbn

+0

@Klaus tôi phải làm gì với điều này? – gbn

Các vấn đề liên quan