连接SQL SERVER时,为什么用SA登录没问题,而用WINDOWS模式登录就不能运行了?

BigBlue 2004-06-14 10:10:28
连接SQL SERVER时,为什么用SA登录没问题,而用WINDOWS模式登录就不能运行了?

设置连接时测试已经通过了,但运行时报错:

用户 'bg\ASPNET' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 用户 'bg\ASPNET' 登录失败。

行 34: this.sqlDataAdapter1.Fill(this.dataSet11);
...全文
283 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BigBlue 2004-06-18
  • 打赏
  • 举报
回复
谢谢各位,尤其是 delphizd(DELPHI字典
delphizd 2004-06-15
  • 打赏
  • 举报
回复
http://www.56kc.com/ASPNET/OTHER/aspnet_sql.htm
diabloooo 2004-06-14
  • 打赏
  • 举报
回复
Windows 身份验证
DBA 指定哪个 Windows 登录帐户可以用于连接到一个 SQL Server 2000 实例。使用这些帐户登录 Windows 的用户可以连接到 SQL Server 2000,无需专门指定数据库登录和密码。使用 Windows 身份验证时,SQL Server 2000 使用 Windows NT 4.0 或 Windows 2000 的安全机制来验证登录连接,并依赖用户的 Windows 安全证书。用户不需要对 SQL Server 2000 输入登录 ID 或密码,因为他们的登录信息是直接从可信任的网络连接获得的.
SQL Server 身份验证
DBA 定义一个单独的数据库登录帐户。用户试图连接到 SQL Server 2000 时必须指定此登录帐户和密码。这个数据库登录与用户的 Windows 登录无关。

不知道设置为Windows 身份验证的远程连接数据库是不是一样的.
diabloooo 2004-06-14
  • 打赏
  • 举报
回复
我觉得是因为你安装SQL SERVER时的选择有关.
发觉用WINDOWS验证模式总是经常连不上.
学习中.也很想知道这些验证模式到底有什么不同.
renrenqq 2004-06-14
  • 打赏
  • 举报
回复
'bg\ASPNET'用户只有读的权限,没有写的权限
BigBlue 2004-06-14
  • 打赏
  • 举报
回复
安装是选择的是混合验证模式,WINDOWS验证模式肯定能登陆,并且在VS里设置连接时测试已经通过了
renrenqq 2004-06-14
  • 打赏
  • 举报
回复
在SQLServer的企业管理器中的安全性,登录,找到'bg\ASPNET'用户,赋权即可.
DB牛牛 2004-06-14
  • 打赏
  • 举报
回复
你安装是选择的是混合验证模式,所以你就不能用WINDOWS验证模式了
BigBlue 2004-06-14
  • 打赏
  • 举报
回复
已经是混合模式了,并且在VS里设置连接时测试已经通过了
wnlovezxm 2004-06-14
  • 打赏
  • 举报
回复
晕你了!找你的数据库管理员去,哈哈!让他把登陆验证方式给你改喽!
miaojx 2004-06-14
  • 打赏
  • 举报
回复
可能是因为你安装SQL SERVER时选择的东东有关
bomberwu 2004-06-14
  • 打赏
  • 举报
回复
一点建议:
关于windows验证模式和sql的sa登录模式区别:
在aspnet中,连接数据库时要使数据库能认识是.net登录,有两种方法。
一种是sa登录。这是sql数据库保留的登录名,无论什么开发环境连接数据库,只要使用sa登录,sql数据库就能强制执行其命令。另外一种是windows验证,这种登录模式就需要sql数据库中事先就已经设置好了数据库登录名和登陆后的操作权限。.net中,使用windows验证登录,应先在sql数据库中选择要登录的数据库,添加一个.../aspnet的用户,并将所要操作的权限完全赋给它(要一个一个选)。这样使用windows验证登录就没有问题了。
远程连接sql server 2000服务器的解决方案 一.看ping 服务器IP能否ping通。 这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。 二.在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。 如telnet 202.114.100.100 1433 通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。 如果这一步有问题,应该检查以下选项。 1 检查远程服务器是否启动了sql server 2000服务。如果有,则启动。 2 检查服务器端有启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果有,则启用它。 3 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框有勾上。 事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试,写服务器端口号必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接必须作相应的改变。 4 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试可以直接关掉windows防火墙(其他的防火墙也关掉最好)。 5 检查服务器是否在1433端口侦听。如果服务器有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入 netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。 如果以上都问题,这你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜你,你马上可以开始在企业管理器或查询分析器连接了。 三.检查客户端设置 程序->Microsoft SQL Server -> 客户端网络使用工具。像在服务器网络实用工具里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。 四.在企业管理器里或查询那分析器连接测试 企业管理器->右键SQlserver组->新建sqlserver注册->下一步->写入远程IP->下一步->选Sqlserver登陆->下一步->写入登陆名与密码(sa,password)->下一步->下一步->完成 查询分析器->文件->连接->写入远程IP->写入登录名和密码(sa,password)->确定 通常建议在查询分析器里做,因为默认情况下,通过企业管理器注册另外一台SQL Server的超设置是4秒,而查询分析器是15秒。 修改默认连接的方法: 企业管理器->工具->选项->在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡->连接设置->在 登录(秒) 后面的框里输入一个较大的数字 查询分析器->工具->选项->连接->在 登录(秒) 后面的框里输入一个较大的数字 通常就可以连通了,如果提示错误,则进入下一步。 五.错误产生的原因通常是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server登录帐户(如 sa )进行连接。解决方法如下所示:  1 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接SQL Server。   2 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡。   3 在"身份验证"下,选择"SQL ServerWindows "。   4 重新启动SQL Server服务。(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。 附注:在连接本地服务器,通常使用的是命名管道协议(在服务器网络实用工具里可以看到启用的协议有这个),默认端口是445,因此在本地能连通是不能说明什么问题的,连接远程服务器是完全不同的协议) SQL Server连接中的四个最常见错误 ---------------------------------- 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= ping 服务器IP地址/服务器名称> 如果 ping 服务器IP地址> 不成功,说明物理连接问题,这候要检查硬件设备,如网卡,HUB,路由器等. 还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对 ping,telnet 等的响应 因此在检查连接问题候,我们要先把防火墙软件暂关闭,或者打开所有被封闭的端口. 如果ping 服务器IP地址> 成功而,ping 服务器名称> 失败 则说明名字解析有问题,这候要检查 DNS 服务是否正常. 有候客户端和服务器不在同一个局域网里面,这候很可能无法直接使用服务器名称来标识该服务器,这候我们可以使用HOSTS文件来进行名字解析, 具体的方法是: 1.使用记事本打开HOSTS文件(一般情况下位于C:\WINNT\system32\drivers\etc). 添加一条IP地址与服务器名称的对应记录,如: 172.168.10.24 myserver 2.或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明. ============= 其次,使用 telnet 命令检查SQL Server服务器工作状态 ============= telnet 服务器IP地址> 1433 如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接 如果命令返回"无法打开连接"的错误信息,则说明服务器端有启动 SQL Server 服务, 也可能服务器端启用 TCP/IP 协议,或者服务器端有在 SQL Server 默认的端口1433上监听. =============接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道.是否启用了 TCP/IP 协议等等 ============= 可以利用 SQL Server 自带的服务器网络使用工具来进行检查. 点击:程序 -- Microsoft SQL Server -- 服务器网络使用工具 打开该工具后,在"常规"中可以看到服务器启用了哪些协议. 一般而言,我们启用命名管道以及 TCP/IP 协议. 点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置 一般而言,我们使用 SQL Server 默认的1433端口.如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接. ============= 接下来我们要到客户端检查客户端的网络配置 ============= 我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查, 所不同的是这次是在客户端来运行这个工具. 点击:程序 -- Microsoft SQL Server -- 客户端网络使用工具 打开该工具后,在"常规"项中,可以看到客户端启用了哪些协议. 一般而言,我们同样需要启用命名管道以及 TCP/IP 协议. 点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致. 单击"别名"选项卡,还可以为服务器配置别名.服务器的别名是用来连接的名称, 连接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设置与使用HOSTS文件有相似之处. 通过以上几个方面的检查,基本上可以排除第一种错误. ----------------------------------------------------------------------------- 二."无法连接到服务器,用户xxx登陆失败" 该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式, 因此用户无法使用SQL Server登录帐户(如 sa )进行连接.解决方法如下所示: 1.在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接SQL Server 操作步骤: 在企业管理器中 --右键你的服务器实例(就是那个有绿色图标的) --编辑SQL Server注册属性 --选择"使用windows身份验证" --选择"使用SQL Server身份验证" --登录名输入:sa,密码输入sa的密码 --确定 2.设置允许SQL Server身份登录 操作步骤: 在企业管理器中 --展开"SQL Server组",鼠标右键点击SQL Server服务器的名称 --选择"属性" --再选择"安全性"选项卡 --在"身份验证"下,选择"SQL ServerWindows ". --确定,并重新启动SQL Server服务. 在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败, 那就通过修改注册表来解决此问题: 1.点击"开始"-"运行",输入regedit,回车进入注册表编辑器 2.依次展开注册表项,浏览到以下注册表键: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer] 3.在屏幕右方找到名称"LoginMode",双击编辑双字节值 4.将原值从1改为2,点击"确定" 5.关闭注册表编辑器 6.重新启动SQL Server服务. 此,用户可以成功地使用sa在企业管理器中新建SQL Server注册, 但是仍然无法使用Windows身份验证模式连接SQL Server. 这是因为在 SQL Server 中有两个缺省的登录帐户: BUILTIN\Administrators 机器名>\Administrator 被删除. 要恢复这两个帐户,可以使用以下的方法: 1.打开企业管理器,展开服务器组,然后展开服务器 2.展开"安全性",右击"登录",然后单击"新建登录" 3.在"名称"框中,输入 BUILTIN\Administrators 4.在"服务器角色"选项卡中,选择"System Administrators" 5.点击"确定"退出 6.使用同样方法添加 机器名>\Administrator 登录. 说明: 以下注册表键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode 的值决定了SQL Server将采取何种身份验证模式. 1.表示使用"Windows 身份验证"模式 2.表示使用混合模式Windows 身份验证和 SQL Server 身份验证). ----------------------------------------------------------------------------- 三.提示连接 如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接, 不过是由于连接间大于允许的间而导致出错. 这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器, 并且是慢速连接,有可能会导致以上的超错误.有些情况下,由于局域网的网络问题,也会导致这样的错误. 要解决这样的错误,可以修改客户端的连接设置. 默认情况下,通过企业管理器注册另外一台SQL Server的超设置是 4 秒, 而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因). 具体步骤为: 企业管理器中的设置: 1.在企业管理器中,选择菜单上的"工具",再选择"选项" 2.在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡 3.在"连接设置"下的"登录(秒)"右边的框中输入一个比较大的数字,如 20. 查询分析器中的设置: 工具 -- 选项 -- 连接 -- 将登录设置为一个较大的数字 --------------------------------------------------------------------------------- 四.大部分机都用Tcp/ip才能成功,有次我发现用Named Pipes才可以? 这是因为在WINDOWS 2000以后的操作系统中,MS为解决SQL SERVER的安全问题将TCP/IP配置 为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE 的顺序。 你也可以在: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib] "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00 看到默认的协议。 2.怎么在程序中更改Named Pipes , Tcp/ip ,其sql语句怎么写? 你可以在上面提到的注册表的位置修改: CLIENT端: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib] "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00 SERVER端: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
目录 SQL Server维护 1 适用人员: 2 一、 SQL Server安装 4 SQL 2000安装 4 检查SQL Server 2000版本 20 SQL 2005 安装 20 SQL 2005配置 32 检查SQL Server2005版本 34 SQL 2008(包括 SQL 2008R2)安装 35 SQL 2008配置 45 检查SQL Server 2008版本 45 Windows 2008中安装SQL 2008 46 常见问题 49 安装过程中提示有文件或进程挂起 49 使用windows账号可以登录,可是sa法登陆 49 本地能连接上,其他电脑不能连接 52 安装过程中提示性能计数器错误 52 二、 SQL Server卸载 54 SQL 2000卸载 54 SQL 2005 卸载 55 SQL 2008卸载 56 三、 更改SQL Server排序规则 56 SQL 2000 排序规则修改 56 SQL 2005 排序规则修改 58 SQL 2008 排序规则修改 58 四、 备份与还原数据库 59 SQL 2000备份数据库 59 SQL 2000还原数据库 62 SQL 2005/2008 备份数据库 65 SQL 2005/2008 还原数据库 68 五、 附加与分离数据库 74 SQL 2000附加数据库 75 SQL 2000分离数据库 76 SQL 2005/2008附加数据库 77 SQL 2005/2008分离数据库 81 六、 建立维护计划为服务器加速 83 SQL 2000中建立维护计划优化系统 83 SQL 2005或SQL 2008种建立维护计划优化系统 88 1、自行创建维护计划 88 2、运用维护计划向导创建维护计划 91 3、各维护计划任务选项的说明 101 4、手动删除维护计划 107 七、 启用AWE或者3GB为服务器加速 108 判断采用AWE还是3GB 108 AWE方式确定SQL Server占用的内存大小 108 3GB开启方式 108 在SQL 2000 中开启AWE 111 在SQL 2005或SQL 2008中开启AWE 113 八、 日志清除 116 各版本数据库清除语句 116 SQL 2000、SQL 2005清除语句 116 SQL 2008清除语句 116 通过重建数据库彻底解决问题(还实践过,慎用) 116 九、 索引维护 117 SQL 2000索引维护 117 SQL 2005/2008索引维护 121 十、 触发器管理 125 触发器查询语句 125 触发器管理语句 126 触发器管理工具 126 十一、 利用SQL Server导入导出数据 127 SQL 2000数据导入导出 127 SQL 2005/2008数据导入导出 133 十二、 SQL跟踪器的使用 144 易飞6.0特殊设置 144 SQL 2000跟踪器的使用 145 SQL 2005/2008跟踪器的使用 150 十三、 数据库异常检测以及简单修复 154 1. SQL Server数据库为什么易损坏呢? 154 2 预防措施 154 3. 其他的一些常用的修复命令 154 1. DBCC CHECKDB 154 2. DBCC CHECKTABLE 155 4.数据库日志损坏的修复 155 5. 数据库质疑的一般处理 156 6.还原数据库到指定间点 156

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧