asp and sqlserver check password

该博客展示了一段ASP代码,用于实现用户登录验证功能。代码通过连接SQL Server数据库,对用户输入的用户名和密码进行验证,同时对非法字符进行检查。若验证通过,将用户信息存入Session;若验证失败,则提示相应错误信息并返回登录页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!--#include file="conn.asp"-->

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY  background=./image/ricebk.jpg bgColor=#FFFDFB>
<font size=2>
<% Session.Timeout = 30
 dim strUser
 dim strPassword
 dim ls_userid
 dim ls_pwd
 dim li_length
 dim ls_tmp
 'response.write request.form
 'response.end
 strUser=request("userID")
 strPassword=Trim(request("password"))
 if InStr(strUser ,"'") > 0 then   %>
  <Script Language="VBScript">
  window.alert "非法字符:'"
  window.history.back
  </Script> 
<% elseif InStr(strUser, """") then  %>
  <Script Language="VBScript">
  window.alert "非法字符:"""
  window.history.back
  </Script> 
<% end if
 
 if UCase(request("userID")) = "ADMIN" then
  strSQL="select us_user_name,us_password,us_status,us_user_id from t_user where us_user_id = '" & strUser & "'"
  Set dbRecordset=dbconn.Execute(strSQL)
  If isnull(dbRecordset.fields("us_password")) and trim(strPassword) <> "" then
   Response.write "<script language=JavaScript>window.alert("%>"密码错误,请重新登录");</Script>
  <% Response.write "<script language=JavaScript>document.location='login.asp';</Script>"  
   Response.End
  end if
  if dbRecordset.fields("us_password") <> strPassword Then
   Response.write "<script language=JavaScript>window.alert("%>"密码错误,请重新登录");</Script>
  <% Response.write "<script language=JavaScript>document.location='login.asp';</Script>"  
   Response.End
  End If
  Session("ID") = dbRecordset.Fields("us_user_id")
  Session("User") = dbRecordset.Fields("us_user_id")
  session("UserName") = dbRecordset.Fields("us_user_Name")
  Session("oldPass") = request("password")
  dbRecordset.close
 else
  strSQL="select emp_category,us_user_name,emp_empl_id,us_user_name,us_password,us_status from t_user,t_employee where us_user_id = emp_empl_id and emp_user_id = '" & strUser & "' and emp_status<>'X'"
  'response.write strSQL
  'response.end 
  Set dbRecordset=dbconn.Execute(strSQL)
  
  If dbRecordset.eof Then 
   Response.write "<script language=JavaScript>window.alert("%>"对不起,用户[<%=strUser%>]不存在");</Script>
  <% Response.write "<script language=JavaScript>document.location='login.asp';</Script>"  
   Response.End
  End If
  If trim(dbRecordset.fields("us_status")) = "X" then
   Response.write "<script language=JavaScript>window.alert("%>"对不起,用户[<%=strUser%>]已被取消");</Script>
  <% Response.write "<script language=JavaScript>document.location='login.asp';</Script>"  
   Response.End
  End if
  '判断登录
 
  If dbRecordset.fields("us_password") <> strPassword Then
   Response.write "<script language=JavaScript>window.alert("%>"密码错误,请重新登录");</Script>
  <% Response.write "<script language=JavaScript>document.location='login.asp';</Script>"  
   Response.End
  End If
  
  Session("ID") = dbRecordset.Fields("emp_empl_id")
  Session("User") = dbRecordset.Fields("emp_empl_id")
  session("UserName") = dbRecordset.Fields("us_user_Name")
  Session("oldPass") = request("password")
  dbRecordset.close
 end if
 set dbRecordset = nothing
 dbconn.close
 set dbconn = nothing
%>
</font>
<Script Language=vbscript>
 window.parent.document.title = "登录名:<%=session("UserName")%>"
</Script>
<form name=frmResult action="menumain.asp" method=post>
</form>
<Script Language=vbscript>
 document.frmResult.submit
</Script>
</BODY>
</HTML>

<think>好的,用户的问题是关于在Windows Server 2016上运行的ASP应用程序无法连接到SQL Server 2012数据库的故障排除步骤和解决方案。我需要根据用户提供的引用内容,特别是引用[1]、[3]、[4],以及可能的其他引用,来整理出有效的解决方法。 首先,引用[1]提到的问题可能涉及网络相关或实例特定的错误,比如服务器不可达、实例名称错误或远程连接未启用。引用[3]则指出端口设置、用户权限和用户名有效性等问题。引用[4]提到了备份数据库和加密密钥,虽然主要与备份相关,但在处理连接问题时可能需要确保数据库服务正常运行,并且没有损坏。 接下来,我需要按照逻辑步骤来组织解决方案。通常,连接问题可以从以下几个方面排查: 1. **网络连通性检查**:确认客户端和SQL Server之间的网络是否通畅,包括ping测试、端口是否开放(默认1433)等。使用telnet或Test-NetConnection来测试端口访问性。 2. **SQL Server配置**: - 确保SQL Server实例已启用远程连接。用户可能需要在SQL Server配置管理器中启用TCP/IP协议,并检查SQL Server Browser服务是否运行,特别是对于命名实例。 - 确认SQL Server服务正在运行,没有停止或崩溃。 3. **防火墙设置**:检查服务器和客户端的防火墙是否允许SQL Server端口(默认1433)的入站和出站流量。可能需要添加例外规则。 4. **身份验证和权限**: - 确认使用的登录凭据是否正确,包括用户名和密码。引用[3]提到需要确保用户有适当的DBA权限,并且用户名有效。 - 检查SQL Server的身份验证模式是否为混合模式(允许SQL Server身份验证和Windows身份验证),如果应用程序使用的是SQL Server身份验证,需要确保该模式已启用。 5. **实例名称和连接字符串**:验证连接字符串中的服务器名称、实例名、端口是否正确。对于命名实例,可能需要使用“服务器名\实例名”格式,或指定端口号。 6. **其他配置**: - 检查SQL Server错误日志,查找更详细的错误信息。 - 确保客户端组件(如ODBC驱动、SQL Native Client)已正确安装并更新到兼容版本。 可能还需要参考引用[2]提到的内存管理内容,但暂时可能不直接相关。此外,用户提到的ASP应用程序,可能需要检查ASP的配置是否正确,比如连接字符串是否有拼写错误,或者应用程序池的身份是否有权限访问数据库。 综合这些信息,我需要将这些步骤分门别类,逐步引导用户进行检查,确保每个可能的故障点都被覆盖。同时,要使用用户提供的引用内容来支持解决方案,例如引用[1]中的错误提示和可能原因,引用[3]中的端口和权限问题,以及引用[4]中的数据库状态检查。</think>### ASP连接SQL Server 2012故障排查步骤 #### 一、基础网络检查 1. **确认SQL Server实例可达性** - 在Windows Server 2016上执行`ping <SQL Server IP或主机名>`,确认网络层可达性 - 使用`telnet <SQL Server IP> 1433`或PowerShell命令`Test-NetConnection <IP> -Port 1433`检测端口连通性[^1] 2. **验证SQL Server服务状态** - 在SQL Server 2012主机检查: ```powershell Get-Service | Where-Object {$_.DisplayName -like "*SQL Server*"} ``` - 确保`SQL Server (MSSQLSERVER)`或对应实例服务状态为**Running** #### 二、SQL Server配置验证 1. **启用远程连接** - 通过SQL Server Management Studio (SSMS) 右键服务器 → 属性 → 连接 → 勾选"允许远程连接到此服务器" - 在`SQL Server配置管理器`中启用TCP/IP协议: - 展开`SQL Server网络配置` → 协议 → 右键TCP/IP → 启用 - 重启SQL Server服务 2. **配置SQL Server Browser服务**(命名实例必需) - 检查服务状态: ```powershell Get-Service 'SQL Server Browser' ``` - 若使用命名实例,需启动该服务并设置为自动启动 #### 三、防火墙配置 1. **开放必要端口** - 默认实例:TCP 1433 - 命名实例:UDP 1434 + 动态端口(需在SQL Server配置中固定端口) ```powershell # Windows防火墙示例 New-NetFirewallRule -DisplayName "SQL Server" -Direction Inbound -Protocol TCP -LocalPort 1433,1434 -Action Allow ``` 2. **检查出站规则** - 确认Windows Server 2016的防火墙未阻止ASP到SQL Server的出站连接[^3] #### 四、身份验证配置 1. **混合身份验证模式配置** - 在SSMS中:服务器属性 → 安全性 → 勾选"SQL Server和Windows身份验证模式" - 执行命令重建登录用户: ```sql ALTER LOGIN [用户名] WITH PASSWORD = '新密码', CHECK_POLICY = OFF; ``` 2. **权限验证** - 通过SSMS检查用户权限: ```sql SELECT name, has_perms_db_name FROM sys.database_principals WHERE name = '用户名'; ``` - 确保用户具有`db_datareader`和`db_datawriter`权限 #### 五、连接字符串验证 1. **标准连接字符串格式** - Windows身份验证: ``` Provider=SQLNCLI11;Server=服务器名\实例名;Database=数据库名;Trusted_Connection=yes; ``` - SQL身份验证: ``` Provider=SQLNCLI11;Server=服务器名,端口;Database=数据库名;Uid=用户名;Pwd=密码; ``` 2. **常见错误排查** - 检查特殊字符转义:密码含`;`等符号时需用`"`包裹 - 确认是否需指定端口:`Data Source=IP,端口` #### 六、组件兼容性检查 1. **安装Native Client** - 在Windows Server 2016安装`SQL Server 2012 Native Client` - 下载地址:[Microsoft SQL Server 2012 SP4 Feature Pack](https://www.microsoft.com/en-us/download/details.aspx?id=56041) 2. **注册表验证** - 检查ODBC驱动注册: ```regedit HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers ``` - 确认包含`SQL Server Native Client 11.0`[^3] #### 七、高级诊断 1. **SQL Server错误日志分析** - 通过SSMS查看:管理 → SQL Server日志 → 当前日志 - 定位具体拒绝连接的错误代码 2. **网络追踪工具** - 使用Wireshark捕获TCP握手过程,分析SYN包是否被拒绝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值