本文转自:互联网具体出处未记录

公司最近安装了一个服务器版软件,这个软件在安装过程中自带安装了SQL Server 2008 R2的数据库引擎,但没有安装SQL Server Management Studio客户端[SSMS],因此在管理数据方面只能使用Sqlcmd命令行工具。因为查询结果经常折行,查看很是不便,于是有了安装一个SSMS在服务器上的想法。但是实地考察发现,服务器上还有其他服务在使用,因此不能重启电脑,于是放弃这个做法。     在远程桌面的帮助下,以Administrator用户登录到这台服务器上,在命令行下使用sqlcmd工具查看一下数据库登录用户的情况。

 

[c-sharp] view plaincopy sqlcmd -S ./InstanceName  SELECT name, type, is_disabled FROM sys.server_principals  GO

发现sa账户没有启用,于是从网上搜索了一下,发现修改启用状态和修改密码的方法。

 

[c-sharp] view plaincopy ALTER LOGIN sa ENABLE  GO  ALTER LOGIN sa WITH PASSWORD=’xxxxxxxxxxxxxx’  GO

然后使用sqlcmd -S ./InstanceName -U sa测试了一下,结果当然是发生了一堆错误信息。     平静下来之后,我想到了可能是Windows身份验证模式的问题,于是在网上一顿狂搜,发现一个人写到了不登录修改服务器登录模式 的方法。然后到服务器上的注册表里进行修改,但是按照上面链接里的方法却没找到对应的键值,即[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/MSSQL10.InstanceName/MSSQLServer/LoginMode]。服务器上的注册表里没有MSSQL10.InstanceName这个项而有一个InstanceName项,它下面的MSSQLServer里也没有LoginMode项。哎呀,真是郁闷。     就在我准备放弃时,有个想法跳出来了,“在注册表里搜一下LoginMode”,哈哈,还是挺幸运滴,我搜到了。但是路径完全不一样,我什么也没想,就是一顿改,然后重启SQL Server服务。再次使用sqlcmd测试了一下,哈哈,这次登录成功啦。     下面把步骤说一下,我的注册表路径是[HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Microsoft SQL Server/MSSQL10_50.InstanceName/MSSQLServer],这个文件夹里有LoginMode键,把它由1[windows身份验证模式]改成2[混合模式]就行啦,呵呵,别忘了重启SQL Server服务。     我后来想到了一个原因,就是服务器是Windows 2008 64-bit,所以SQL Server 2008 R2的64-bit版本和32-bit版本写入注册表的位置是不同的。哈哈,收工。