电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 数据库
编写数据库脚本-数据库专栏,SQL Server
作者:网友供稿 点击:8
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

作者:andrew clinick

发表日期:2000 年 1 月 10 日

我在“if it moves, script it”(英文)这篇文章中曾谈到,如何使用“windows script host(wsh)”( windows 脚本主机) 管理 windows 和 windows 中的应用程序。文中的大多数示例都是基于管理 windows 操作系统自身的,并不基于在该操作系统下运行的应用程序。为迎接新千年,我想我应该谈谈,如何在众多显露可脚本化接口的应用程序中使用脚本。这次只涉及“sql server”。在以后的几个月中,我将着重谈 exchange、office 和“系统管理服务器”。
您可以通过使用“分布式管理对象”、“数据转换服务”和新的“sql server xml”实现,将脚本用于“sql server”。
许多人都能够通过“active data object(ado)”和“active server page (asp)”技术访问数据库了。ado 在帮助您查询和更新数据库方面做了大量的工作 — 但在备份(y2k 问题带给我们的警惕)或是数据库之间的传输数据方面,其表现又如何呢?而这时就非涉及到 xml 不可了。

在此,我将告诉您如何通过使用 ado 的伴随技术 - 特别是“分布式管理对象”、“数据转换服务”和新的“sql server xml”实现,将脚本用于“sql server”。
分布式管理对象
“分布式管理对象 (dmo)”是一组 com 对象,它将“sql server”数据库和复制管理封装在一起。这意味着您可以编写一个 wsh 脚本,将特定表中的所有数据都复制到用制表符分隔的文件中,这有助于大量数据的移动。我之所以选择这个示例,是因为它的代码编写起来简单,但 dmo 允许您获取“sql server”中的每个对象,使您能够编写出一些非常优秀而有意义的管理脚本。

dmo 的关键是 sqldmo.sqlserver 对象,它是基本的对象,它允许您连接到服务器并获取所有可用对象。在这种情况下,我将使用 database 集合来选择数据库,然后从 table 集合访问要转储到文件的表。如果不提供数据库,将出现错误消息,并且脚本也就结束了。如果不提供表名,脚本将在数据库所有的表中循环,并导出非系统表。如果提供了数据库,它就导出该表。该示例虽然功能有限,但它为“sql server”提供了基于命令行的简单的导出实用程序,您可以以它为根据。

现在先看一段代码:

声明与 sql 谈话时使用的变量dim oserver sql server 对象dim odatabase 要使用的目标数据库dim obcp bcp 对象dim nrows 从 bcp 返回的行数dim table 表对象on error resume next 第一个参数必须是数据库if wscript.arguments(0) = "" then wscript.echo "您没有提供要连接的数据库" wscript.quitend if 创建 sql dmo 的实例set oserver = createobject("sqldmo.sqlserver") 创建 sql dmo bulkcopy 对象的实例set obcp = createobject("sqldmo.bulkcopy")oserver.enablebcp = true 登录到本地服务器 希望您已经更改了 sa 口令!!oserver.connect ".", "sa" 连接到提供的数据库set odatabase = oserver.databases(wscript.arguments(0)) 将分隔符设置为逗号obcp.columndelimiter = vbcomma 将文件类型设置为以逗号分隔obcp.datafiletype = sqldmodatafile_commadelimitedcharobcp.importrowsperbatch = 1000obcp.maximumerrorsbeforeabort = 1bcp.rowdelimiter = vbcrlfobcp.serverbcpdatafiletype = sqldmobcpdatafile_charobcp.useexistingconnection = true 如果未提供表,则转储所有的表f wscript.arguments(1) = "" then for each table in odatabase.tables 确保该表不是系统表 if table.systemobject = false then obcp.datafilepath = table.name & ".csv" nrows = table.exportdata(obcp) wscript.echo nrows & " rows exported from " & table.name end if nextelse 设置输出文件 obcp.datafilepath = wscript.arguments(1) & ".csv" nrows = odatabase.tables(wscript.arguments(1)).exportdata(obcp) wscript.echo nrows & " rows exported from " & wscript.arguments(1)end if

dmo 的全部内容要比本文介绍的多得多,但我希望本文能给您一些感性认识:用某些简单的 wsh 脚本和 dmo 可以做些什么。您可以下载我的示例(英文)。有关 dmo 的详细信息,请访问 http://msdn.microsoft.com/library/psdk/sql/9_dmoc01.htm(英文)。
数据转换服务
导出到 comma separated 文件 (csv),可以作为将数据导出到 sql 和从 sql 导入的起点,但这不象是尖端科技(太过于 20 世纪了,您不觉得吗?)。“sql server 7.0”以“数据转换服务 (dts)”的形式,提供了相当完善的导入和导出机制。幸运的是,脚本在“sql server”的这个新领域中仍有一席之地,因此,您可以用“visual basic(r) 脚本编辑 (vbscript)”、“jscript(r)”或“perl”的技术来扩展 dts 的能力。

dts 的设置非常简单,特别是在使用“sql serverenterprise manager”的时候。在默认情况下,“sql server”有一个定义的文件夹,可存储任何转换,而且“enterprise manager”提供了创建和编辑 dts 程序包的大的图形用户界面 (gui)。在下面的示例中,我选择了已由 sqlexport.wsf 文件创建的 employees.csv 文件和“sql server”中的一个新表。dta 程序包将创建该表,加载到 text 文件中,然后运行某个脚本,将数据转换到“sql server”的表中。


dts 程序包中的转换,使脚本在整个转换过程中保持运行状态。“sql enterprise manager”提供的简单的脚本编辑器,有一个语法分析脚本按钮。在运行脚本之前,该按钮将警告您脚本中的错误。在转换过程中,该脚本使用 vbscript 的 cint 功能,将 employeeid 和 deptid 的输入转换为 int,并将所有的电子邮件地址转换为小写字母。

********************************************************************** visual basic 转换脚本 把每个源列复制到 目标列***********************************************************************function main() dtsdestination("employeeid") = cint(dtssource("col001")) dtsdestination("firstname") = dtssource("col002") dtsdestination("lastname") = dtssource("col003") dtsdestination("email") = lcase(dtssource("col004")) dtsdestination("extension") = dtssource("col005") dtsdestination("office") = dtssource("col006") dtsdestination("deptid") = cint(dtssource("col007")) main = dtstransformstat_okend function

用 dts,能够采用某些完善的导入/导出机制,并使您能够在转换的任何一步中使用脚本。重要的是,要注意脚本可能不是操作数据的最佳方式 — 尤其是您的数据集很大的话。如果您有大量数据需要转换,而且性能也很重要,则您可能需要考虑使用 visual basic 或 c++ 来创建 com 组件,然后从 dts 内部调用该组件。也就是说,如果性能并不重要,并且要在数据导入/导出时对它进行转换,则脚本为您提供了实现这一点的灵活机制,并使您能够将所有代码存储到“sql server”数据库中,使部署变得相当简单。
关于 xml
目前,xml 看起来像是在应用程序之间共享数据的最佳工具,所以“sql server”的所有管理肯定都得到了 xml 的好处。编写提取数据库中所有数据的脚本,以及编写用编程的方法创建 xml 文档的脚本,都是可能的。但是,如果您只要查询“sql server”的话,最好使它在 xml 中返回数据,然后用脚本操作该 xml。“sql server”组最近发行了“sql server xml”技术的非正式版本,完全做到了这一点。

新的 xml 技术使用起来非常简单。实际上是对服务器发出 http 请求,将查询传递给服务器,而服务器返回 xml。为了举例说明,我创建了简单的 wsh 脚本,它向本地机器查询 north wind 数据库的雇员表中的所有数据。为访问 xml,该脚本使用了“internet explorer 5.01”附带的 xml 分析程序。此对象的美妙之处,在于它处理您所有的 http 请求,并使您能够同步调用。因为您再也不用处理任何事件驱动的程序,所以,它对编写脚本很有帮助。

该脚本非常简单。它创建了 xml 分析程序的实例,使用分析程序打开 url,然后将结果保存为 .xml 文件。只需五行的脚本,不错吧!

设置请求的 url xmlpath = "http://localhost/northwind?sql=select+*+from+employees+for+xml+auto" 创建“xml 分析程序”的实例 set myxmldoc = createobject("microsoft.xmldom") 不需要异步 myxmldoc.async = false 加载该 url myxmldoc.load xmlpath 保存文档 myxmldoc.save "employees.xml"

它的强大之处在于,现在可很容易地与服务器建立远程连接并转储数据;只要更改 url,您早已做过了。此例告诉您如何导出,但是您可以轻松地写出导入例行程序,用 xml 分析程序在 xml 中反复操作并将值插入数据库中。
摘要
“sql server”提供全面的可编写脚本的机制,用于本地或远程管理数据库。dmo 和 dts 已经上市(实际上,dmo 已发行了许多版本),所以您可以直接利用它们,使您的数据库管理任务自动化。windows 2000 已与“windows script host 2.0”一起上市,所以以上所有脚本的运行,都不受装有“sql server”的 windows 2000 服务器的条件限制。“sql server”中新的 xml 技术使存取数据变得轻而易举,从而使编写“sql server”的脚本更加容易。有关“sql server”的详细信息,请访问 sql server developer enter(英文)。

andrew clinick 是“microsoft script technology”组中的程序经理,机会使然,只要涉及脚本,他就可能大显身手一番。他的大部分业余时间都花在观看美国电视台转播的精彩橄榄球赛,以及向他的美国同事解说板球。

 

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·数据库开发个人总结(ADO.NET小结)-.NET教程,数据库应用
·怎么由DataSet将数据导入Excel?-.NET教程,数据库应用
·动态创建SQL Server数据库、表、存储过程-ASP教程,数据库相关
·Win32环境下动态链接库(DLL)编程原理-.NET教程,数据库应用
·封装的ADO.NET对数据库操作经典类-.NET教程,数据库应用
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·DataGrid使用心得(附大量代码)-ASP教程,数据库相关
·用代码创建DataGrid的多链接及checkbox事件响应-.NET教程,数据库应用
·ADO.NET 的最佳实践技巧-.NET教程,数据库应用
·转载: 用纯ASP代码实现图片上传并存入数据库中

最新文章
·根据数据表中数据,生成Powerpoint幻灯片-ASP教程,数据库相关
·DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon-ASP教程,数据库相关
·使用用VB处理MYSQL数据库中二进制数据问题-.NET教程,VB.Net语言
·关于DataGridView中如何接收处于编辑状态下的当前信息-ASP教程,数据库相关
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·.net下访问Access数据库需要注意的问题-.NET教程,Asp.Net开发
·ActiveMQ4.1+Spring2.0的POJO JMS方案(上)-.NET教程,数据库应用
·ASP.NET 2.0中直接将Access数据库导入到Excel文件中-.NET教程,Asp.Net开发
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号