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'
在每一个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'
相关文章推荐
- php登录验证(包括用户名、密码、验证码、数据库、是否已登陆验证、自动登录和注销登录)
- 如何判断注册用户名,Email在数据库中已经存在
- MSSQL 2005中修改用户dbowner权限,提示用户、组或角色'*****'在当前数据库中已存在
- 验证用户登录时用户名和密码是否正确及如何防止sql注入
- jquery ajax无刷新请求Struts2验证用户名密码数据库是否存在
- Jquery、 ajax和struts2+Hibernate查询数据库验证用户名是否存在,表单禁止提交等!
- Jquery、 ajax和struts2+Hibernate查询数据库验证用户名是否存在,表单禁止提交等!
- MSSQL 当前数据库中已存在用户或角色,SQLServer2008,错误15023,
- 当重装数系统/数据库之后,如何恢复数据库的账号 登录名/用户名 孤立用户 缩小ldf日志文件 修改sqlserver2000端口
- 如何恢复数据库的账号 登录名/用户名等
- Qt5.9Creator登录界面函数总结(通过连接远程服务器数据库MySql5.7.17进行登录用户名和密码验证)
- 登录名、服务器角色、用户名和数据库角色
- 3.JBoss如何配置从数据库里读取登录用户的验证信息
- VC SQL 登录对话框数据库对用户名和密码进行验证代码!
- 数据库开发基本操作-配置SQL Server 2005 Express的身份验证方式,以及如何启用sa登录名
- 数据库sql方面的困惑,sql,mssql ,登录,验证,日志
- 171211之如何判断用户名在数据库中是否存在
- 如何恢复数据库的账号 登录名/用户名等
- QuickCSharp框架开发(18)------加密用户名和密码数据与数据库读出的密码进行哈希比较(验证用户是否成功登录)
- 在安装discuz!nt时,数据库用户登录失败的问题时,sql server 2008 数据库更改登录模式(sql server 2008 混合登陆中SqlServer身份验证用户名密码)