用sa登录SQL2005的SQL Server Authentication出现18452错误,在网上查找了一些相关资料,都没有解决问题。最后只能重新创建一个新用户进行SQL Server Authentication登录。
————————————————————————————————————————————网上查到的解决办法:
无法连接到服务器
服务器:消息18452, 级别16,状态1
[Microsoft][ODBC SQL Server Driver][SQL Server]用户‘sa’登陆失败。原因:未与信任SQL Server连接相关联
该错误发生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(例如 sa )进行连接,解决方法如下
设置允许SQL Server身份登录 (基本上这个很有用)
操作步骤:
1.在企业管理器中,展开"SQL Server组",鼠标右键点击SQL Server服务器的名称
2.选择"属性"
3.再选择"安全性"选项卡
4.在"身份验证"下,选择"SQL Server和 Windows"
5.确定,并重新启动SQL Server服务。
________________________________________________________________________
创建新用户:
以Windoww Authentication方式登录进去:
1、对SQL Server点击鼠标右键--->Properties(属性)--->Security(安全)--->选SQL Server and Windows Authentication mode---->确定
2、输入以下语句
/*--示例说明 示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test 随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test 同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限 最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。 经过这样的处理,使用l_test登录SQL Server实例后,它只具有表jobs的所有权限。 --*/
USE pubs
--创建角色 r_test
EXEC sp_addrole 'r_test'
--授予 r_test 对 jobs 表的所有权限
GRANT ALL ON jobs TO r_test
出现这句时不用去理--(The ALL permission is deprecated and maintained only for compatibility. It DOES NOT imply ALL permissions defined on the entity. )
--授予角色 r_test 对 titles 表的 SELECT 权限
GRANT SELECT ON titles TO r_test
--添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin 'l_test','pwd','pubs'
--为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess 'l_test','u_test'
--添加 u_test 为角色 r_test 的成员
对新用户l_test进行设置:
1、在SQL Server的security文件夹下的--->Logins文件夹--->l_test点击鼠标右键选择Properties--->选择Server Roles里勾选publice和sysadmin--->选择User Mapping里勾选上面设的数据库和db_owner,public及上面设置的r_test角色--->status里选择Grant,Enabled。
2、关闭SQL。
3、在控制面板--管理工具--服务里重启SQL Server(SQLEXPRESS)服务。
4、重新使用用户名为l_test密码为pwd进行SQL Server Authentication ___________________________________________________________________
以下为删除所设置的新用户:
EXEC sp_addrolemember 'r_test','u_test'
--拒绝安全账户 u_test 对 titles 表的 SELECT 权限
DENY SELECT ON titles TO u_test
/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/
--从数据库 pubs 中删除安全账户
EXEC sp_revokedbaccess 'u_test'
--删除登录 l_test
EXEC sp_droplogin 'l_test'
--删除角色 r_test
EXEC sp_droprole 'r_test'
|
阅读(5976) | 评论(0) | 转发(0) |