找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 262|回复: 6

一个用Wsh来控制SqlServer的Dcom的VBs

[复制链接]
发表于 2009-3-16 21:41:47 | 显示全部楼层 |阅读模式 IP:江苏扬州
大家知道,wsh(windows script host)在windows平台下是用来代替bat文件的,以其灵活,功能强大许多人都用来处理自己的日常事物,但在调用excel,sqlerver方面可能不是太清楚了,今天这个例子就是  用vbscript来调用Dcom来生成数据库或删除数据库:
可以先建一个以.vbs结尾的文件,靠下面的东西到里面进去,双击就可以执行了,只要把里面的sql脚步的路径和Sqlserver的密码和账户改下就能用了
    Dim str,ff,i ,intt,strtmp '定义普通变量
    Dim goSQLServer,oDatabase '定义Sql_Dmo对象变量
    Dim fso      '定义文件对象
call main()
'==============================================================================
'==============================================================================
public sub main()
      InitSqlDmo "."
  DropDatabase "Assetcheck"
  CreateDatabase "assetcheck"
  '取得数据库
  Set oDatabase = goSQLServer.Databases("assetCheck")
  'msgbox   oDatabase.PrimaryFilePath
  '执行大量的Sql文本文件
   ExecuteSqlFromFile    "D:\AssetCheck\sqltext\assetcheck.sql"
   ClearSqlDmo
  If Err.Number <> 0 Then MsgBox "发生错误"
  MsgBox "脚本生成完成"
end sub
'-------------------------------------------------------------------------------

'初始化连接对象
public sub InitSqlDmo(aServerName)
Set fso = CreateObject("Scripting.FileSystemObject")
Set goSQLServer = CreateObject("SQLDMO.SQLServer")
goSQLServer.Connect aServerName, "sa", ""
end sub
'-----------------------------------------------------------------------------
'创建数据库
public sub CreateDatabase(astrDataBaseName )
  strtmp = " create DataBase  " &  astrDataBaseName
  goSQLServer.ExecuteImmediate strtmp
end sub
'删除数据库
public sub DropDatabase(astrDataBaseName )
  strtmp = " Drop DataBase  " &  astrDataBaseName
  goSQLServer.ExecuteImmediate strtmp
end sub
'------------------------------------------------------------------------------
'执行脚本
public sub ExecuteSqlFromFile(astrExecuteSqlFile )
Set ff = fso.OpenTextFile(astrExecuteSqlFile)
  Do While ff.AtEndOfStream <> True
   strtmp = ff.ReadLine
   str = str & vbCrLf & strtmp
   i = i + 1
   If i >= 1500 And strtmp = "" Then
    i = 1
    oDatabase.ExecuteImmediate (str)
    str = ""
   End If
  Loop
  If Trim(str) <> "" Then
   oDatabase.ExecuteImmediate (str)
  End If
  ff.Close
end sub
'-----------------------------------------------------------------------------------
public sub ClearSqlDmo()
Set fso = Nothing
Set goSQLServer = Nothing
发表于 2009-12-31 17:05:04 | 显示全部楼层 IP:香港
加油!在奥斯卡上一连拿了11个奖项的好帖
回复

使用道具 举报

发表于 2010-1-30 00:05:05 | 显示全部楼层 IP:柬埔寨
@,@..是什么意思呀?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 19:18 , Processed in 0.354588 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表