如何在 Active Server Page 中访问 SQL Server

如何在 Active Server Page 中访问 SQL Server

适用于

概要

本文介绍了如何使用“ActiveX 数据对象”(ADO) 在 ASP 脚本中建立到 SQL Server 的连接,同时利用 ODBC 3.0 的连接池功能。



更多信息

连接池
启用 ODBC 连接池。
有关连接池的其他信息以及有关如何启用连接池功能的说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

164221 如何在 ODBC 应用程序中启用连接池

ODBC DSN
使用“ODBC 管理器”,在 Microsoft Internet Information Server (IIS) 安装在的计算机上创建一个“系统”数据源名称 (DSN)。一次指定连接属性,然后在每个页面上重复使用此属性。例如,在 Global.asa 文件的 Session_OnStart 事件中,将连接属性定义为:
 Session("ConnectionString") = "dsn=SQLSysDSN;uid=<username>;" & _
"pwd=<strong password>;DATABASE=pubs;APP=ASP Script"
确保下列所有条件都满足:
  • “系统 DSN”定义中没有选中受信任连接框。
  • SQL Server 安全模式不是“Windows NT 集成”。
  • 在连接属性中,uid 不为空。
否则,到 SQL Server 的连接可能会失败,并收到以下错误信息:


Microsoft OLE DB provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed- User:_
Reason:Not defined as a valid user of a trusted SQL Server connection.

Global.asa

是否使用 Global.asa 文件是可选的。在其位置上,通常由此文件创建的项目可以放到应用程序调用的第一页上。假定 ASP 脚本位于一个文件夹中,该文件夹在“Internet 服务管理器”中没有定义为虚拟目录,而是位于另一个虚拟目录下面,那么,包含 Session 变量和 DSN 定义的 Global.asa 文件就必须保留在此虚拟目录中。否则,将出现以下错误信息:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified

ASP 脚本中的连接

通过打开和关闭到每个 Active Server Page 上的数据库的连接来利用连接池。要打开此连接,请在页面的 <Body> 部分中键入以下语句:
 <%
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open Session("ConnectionString")
%>
要关闭此连接,请将以下内容放到 </Body> 标记后:
 <% OBJdbConnection.Close Set OBJdbConnection = Nothing %> 
如果没有象本文前面介绍的那样正确定义连接设置,您可能会收到以下两条错误信息:


Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][DBNMPNTW]Connection broken.

- 或 -



Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver]Communication link failure

此处是一个包含 Global.asa 和 Authors.asp 文件的示例应用程序。此示例应用程序将返回名为 authorspubs 表中的四列和所有记录。

注意:您必须先将 UID <用户名> 和 pwd =<强密码> 更改为正确的值,然后才能运行此代码。请确保该 UID 具有在数据库中执行此操作所需的适当权限。

Global.asa
   <SCRIPT LANGUAGE=VBScript RUNAT=Server>
   Sub Session_OnStart
   Session("ConnectionString") =
   "DSN=SQLSysDSN;UID=<username>;PWD=<strong password>;" & _
"DATABASE=pubs;APP=ASP script"
      Session("ConnectionTimeout") = 15
      Session("CommandTimeout") = 30
   End Sub
   Sub Session_OnEnd
   End Sub
   </SCRIPT> 
Authors.asp
   <HTML>
   <HEAD>
   <TITLE>All Authors</TITLE>
   </HEAD>
   <BODY BGCOLOR="#FFFFFF">
   <% Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
   OBJdbConnection.ConnectionTimeout = Session("ConnectionTimeout")
   OBJdbConnection.CommandTimeout = Session("CommandTimeout")
   OBJdbConnection.Open Session("ConnectionString")
   Set SQLStmt = Server.CreateObject("ADODB.Command")
   Set RS = Server.CreateObject ("ADODB.Recordset")
   %>
   <p>
   <table border="0" bordercolor="#000000">
   <%
   SQLStmt.CommandText = "select * from authors"
   SQLStmt.CommandType = 1
   Set SQLStmt.ActiveConnection = OBJdbConnection
   RS.Open SQLStmt
   Do While Not RS.EOF
   %>
   <TR>
      <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("au_id") %>
         </FONT></TD>
      <TD></TD>
         <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("au_lname")  %>
         </FONT></TD>
      <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("au_fname")  %>
         </FONT></TD>
      <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("phone")  %>
         </FONT></TD>
   </TR>
   <%
   RS.MoveNext
   Loop
   %>
   </table>
   <hr>
   <p>
   </BODY>
   <% OBJdbConnection.Close
   Set OBJdbConnection = Nothing
   %>
   </HTML> 
有关 Active Server Pages 的更多信息,请参见 IIS 服务器上 ASP 安装程序提供的路径图 (Roadmap)。

参考

有关 Microsoft Visual Basic .NET 编码技术的更多信息,请访问以下 Web 站点:

http://www.microsoft.com/mspress/books/4909.asp
Coding Techniques for Microsoft Visual Basic .NET(Microsoft Visual Basic .NET 编码技术)
Connell, John
Microsoft Press, 2001.



如果您没有看到您问题的答案,请访问 Microsoft SQL Server 新闻组,地址是: Microsoft SQL Server Newsgroups(Microsoft SQL Server 新闻组)

如果您想对本文或其他 Microsoft SQL Server 知识库文章发表评论,请给我们发邮件,地址是 Q169377

这篇文章中的信息适用于:

  • Microsoft SQL Server 2000 (all editions)
  • Microsoft SQL Server 7.0
  • Microsoft SQL Server 6.5
  • Microsoft SQL Server 6.0
  • Microsoft SQL Server 4.2x
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 5.0
最近更新:2004-5-31 (5.0)
关键字:kbenv kbhowto kbinterop kbtshoot KB169377 kbAudDeveloper
可以通过编写一个SQL Server触发器来实现定时转储。以下是实现步骤: 1. 创建一个存储过程,该存储过程将执行转储操作。例如: ``` CREATE PROCEDURE dbo.MyDumpProcedure AS BEGIN -- 转储操作的代码 END ``` 2. 创建一个触发器,在每天的24点调用存储过程。例如: ``` CREATE TRIGGER dbo.MyDumpTrigger ON DATABASE FOR CREATE_TABLE AS BEGIN EXEC dbo.MyDumpProcedure END ``` 3. 确保SQL Server代理服务已启动。如果未启动,则可以通过以下步骤启动: - 在SQL Server管理器,展开“SQL Server代理”节点。 - 右键单击“SQL Server代理”节点,选择“属性”。 - 在“服务”选项卡上,确保“启动类型”设置为“自动”,然后单击“启动”。 4. 创建一个代理作业,在每天的24点调用触发器。例如: ``` USE msdb; GO EXEC dbo.sp_add_job @job_name = N'MyDumpJob', @enabled = 1, @description = N'每天24点转储', @start_step_id = 1, @notify_level_eventlog = 0, @notify_level_email = 0, @notify_level_netsend = 0, @notify_level_page = 0, @delete_level = 0; EXEC dbo.sp_add_jobstep @job_name = N'MyDumpJob', @step_name = N'TriggerMyDump', @subsystem = N'TSQL', @command = N'USE mydatabase; EXEC dbo.MyDumpTrigger;', @retry_attempts = 0, @retry_interval = 0, @output_file_name = N'C:\MyDumpJob.log', @on_success_action = 1, @on_failure_action = 2; EXEC dbo.sp_add_schedule @schedule_name = N'MyDumpSchedule', @enabled = 1, @freq_type = 4, @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 1, @active_start_date = 20220101, @active_end_date = 99991231, @active_start_time = 0, @active_end_time = 235959; EXEC dbo.sp_attach_schedule @job_name = N'MyDumpJob', @schedule_name = N'MyDumpSchedule'; EXEC dbo.sp_add_jobserver @job_name = N'MyDumpJob', @server_name = N'(local)'; ``` 在上述代理作业,@command参数的值是触发器的调用语句。@freq_type和@freq_interval参数的值指定作业以每天执行。@active_start_time参数的值指定作业的开始时间。 5. 启动代理作业,以便它在每天的24点执行转储操作。例如: ``` USE msdb; GO EXEC dbo.sp_start_job N'MyDumpJob'; ``` 注意事项: - 在创建触发器之前,确保存储过程已经存在。 - 在创建代理作业之前,确保触发器已经存在。 - 在创建代理作业之前,确保SQL Server代理服务已经启动。 - 在创建代理作业时,可以根据需要更改作业的各个参数,例如作业名称、作业描述、开始时间等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值