编写数据库脚本
程序员文章站
2022-11-17 20:19:19
作者:andrew clinick我在“if it moves, script it”(英文)这篇文章中曾谈到,如何使用“wind...
作者:andrew clinick
我在“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.quit
end 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
我在“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.quit
end 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
上一篇: 兔肉的功效有哪些你都知道吗