您的位置:首页 > 数据库

MSSQL 数据库:如何验证数据库中角色、用户名、登录名已存在

2009-07-29 16:24 531 查看
1. 判断 “登录名”

在每一个MSSQL的数据库总都存在 【系统视图】,这些视图在的Logins内容是没有区别的,无论是master还是自己项目的数据库都是如此。所以执行下列SQL得到的结果都是一样

use master

select * from sys.syslogins ;

use yourdb

select * from sys.syslogins ;

所以就可以使用

if existes ( select name from sys.syslogings where name ='your login name' )

print 'right [your login name ] exist '

else

print 'wrong [your login name] does not exist '

来判断,某一个登录名是否存在

2. 判断 “用户名”是否存在

与Logins 不同 users 在不同的数据库中是不一样的。所以在判断某一用户是否存在需要标注数据库名称

例如:

use yourdb

IF EXISTS(SELECT NAME FROM sys.sysusers WHERE NAME ='username')

PRINT 'right ,username exist '

ELSE

PRINT 'wrong,username does not exist '

3. 判断 ”角色“ 是否存在

类似于 Users 判断角色也需要指定 DB

例如:
USE [yourdb]
IF EXISTS(SELECT * FROM sys.database_principals WHERE type='R' AND name='rolename')

PRINT 'right, rolename exist '

ELSE

PRINT 'wrong,rolename does not exist'

----------------------------应用-------------------------------------------

USE [master]

GO

IF NOT EXISTS(SELECT name from sys.syslogins where name='loginname')

CREATE LOGIN [loginname] FROM WINDOWS WITH DEFAULT_DATABASE=[master]

GO

USE yourdb

GO

IF NOT EXISTS(SELECT name form sys.sysusers where name='username')

CREATE USER username FOR LOGIN loginname

EXEC sp_addrolemember N'db_owner', N'username'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐