SqlServer创建数据库账号,连接报“无法打开登录所请求的数据库 xxx。登录失败。ClientConnectionId:xxxx“ 问题描述近期有个源库切换了地址数据平台准备迁移的时候DBA哥们又休假了运维人又不熟百度了新增账号给新了增SQL Server数据库账号尝试连接时出现错误提示但死活联不通报错如下“无法打开登录所请求的数据库 xxx。登录失败。ClientConnectionId:xxxx”。使用他们的管理员用户又可以所以纳闷这玩意咋发生的。搜了一下原因说是该问题通常与权限配置或数据库状态相关。解决思路我就不跟大家过网上的答案了直接给大家最直白最准确最值得信赖的回答手动滑稽。前提是有账户可以登录如果数据库本身还有问题请检查数据库状态。1、登录可以登录管理员用户查登录日志。EXEC sp_readerrorlog 0, 1, Login failed;基本上所有的登录日志都可以查到我这里先发现登录密码多了一个感叹号这个调整就不细说了发现的第二个问题也是主要问题是无法打开明确指定的数据库2、检查SQL Login 的 CREATE USER数据库级映射SELECT sp.name FROM sys.server_principals sp LEFT JOIN sys.database_principals dp ON sp.sid dp.sid WHERE dp.name IS NULL AND sp.type S;如果这个查询能够查询出你的账户很好你已经基本接触到真相了。我也是在这里发现映射存在问题。3、重建账户。原创建和授权语句如下CREATE LOGIN ODS_SELECT WITH PASSWORD xxxxxx USE schema_test; CREATE USER ODS_SELECT FOR LOGIN ODS_SELECT; ALTER ROLE db_datareader ADD MEMBER ODS_SELECT;看着这里我就在猜测是不是SqlServer对大小写敏感因为SELECT * FROM sys.server_principals WHERE name ods_select这里面得name是小写。尝试着进行重新开户。调整后的创建和授权语句如下这里需要删除旧的账户DROP USER IF EXISTS ods_select; IF EXISTS (SELECT * FROM sys.server_principals WHERE name ods_select) DROP LOGIN ods_select; CREATE LOGIN ods_select WITH PASSWORD xxxxxx; USE schema_test; GO CREATE USER ods_select FOR LOGIN ods_select; ALTER ROLE db_datareader ADD MEMBER ods_select; GO这时候是可以正常访问了但在SqlServer官方文档中说明其对大小写不敏感可能只是重建账户恰好绑定了SID所以有问题就根据上面的一二三步逐级推进即可扩展阅读SQL Server 官方文档安装向导帮助