设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2369|回复: 7
打印 上一主题 下一主题

用代码复制.mdf文件到MSDE数据库服务器-->tmtony转移

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2002-4-13 09:41:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Public Function sCopyMDF(sSvrName As String, sUID As String, sPWD As String, sMDFName As String) As String

'********************************************************************
'这个函数将检查MSDE服务器上是否存在 DemoDatabase 数据库,如果不存在,则
'本函数将把ADP项目中所用的 adp1sql1.mdf 文件复制到MSDE的数据目录,并建立引用
'
'输入:
'   sSvrName    数据库服务器名
'   sUID        用户名
'   sPWD        口令
'   sMDFName    MSDE上数据文件名
'
'输出:
'   解释复制结果
'
'引用:
'   SQLDMO
'   Scripting Runtime
'********************************************************************
Dim FSO As Scripting.FileSystemObject
Dim osvr As SQLDMO.SQLServer
Dim strMessage As String
Dim db As Variant
Dim fDataBaseFlag As Boolean
Dim x

On Error GoTo sCopyMDFTrap

    '在 FSO.Copyfile 中所使用的驱动器名称,以及 oSvr.AttachDBWithSingleFile
    '中程序匹配的位置和终端用户机器上的MSDE服务器

    '初始化返回值
    sCopyMDF = ""
    fDataBaseFlag = False
   
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set osvr = CreateObject("SQLDMO.SQLServer")
   
    '登录数据库
    osvr.Connect sSvrName, sUID, sPWD
   
    x = osvr.Databases.Count  '如果失败 DMO 需要初始化
   
    '通过在本地MSDE服务器轮询,检查本地MSDE服务器上是否存在 DemoDatabase 数据库
    '实例
    For Each db In osvr.Databases
   
        If db.Name = "DemoDatabase" Then '数据库存在
            fDataBaseFlag = True
            Exit For '退出循环
        End If
  
    Next
   
    If Not fDataBaseFlag Then '没有名为 DemoDatabase 的数据库
        '复制文件到MSDE的数据目录
         FSO.CopyFile Application.CurrentProject.Path & "\" & sMDFName, _
             osvr.Databases("master").PrimaryFilePath & sMDFName, True
        '匹配数据库
        strMessage = osvr.AttachDBWithSingleFile("DemoDatabase", _
            osvr.Databases("master").PrimaryFilePath & sMDFName)
        '返回结果
        sCopyMDF = "已复制 " & sMDFName & " 到 MSDE 数据文件目录"
    Else
        sCopyMDF = "在MSDE服务器上已经存在 " & sMDFName
    End If
     
ExitCopyMDF:
    osvr.Disconnect
    Set osvr = Nothing
Exit Function
   
sCopyMDFTrap:

    If Err.Number = -2147216399 Then  'DMO 需要初始化
        Resume Next
    Else
        sCopyMDF = Err.Description
    End If
    Resume ExitCopyMDF
Exit Function
   
End Function

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅

点击这里给我发消息

2#
 楼主| 发表于 2002-4-13 12:45:00 | 只看该作者

此代码已经测试,通过!

[em27][em27][em27]

点击这里给我发消息

3#
 楼主| 发表于 2002-4-13 13:17:00 | 只看该作者

此例用途:

1、用于ADP项目发布时,安装SQL Server数据库。
2、当SQL Server崩溃后,只要SQL Server的数据库.mdf文件未损坏,即可用本例程序恢复。 

为了方便大家使用,本人已做成VB可执行文件。

点此下载


运行情况如下:





[此贴子已经被zhuyiwen于2002-4-13 5:17:07编辑过]

点击这里给我发消息

4#
发表于 2002-4-14 15:56:00 | 只看该作者
不错,很不错 :)
我正在研究如何对SQL SERVER编程的一些方法
这个例子对我有好的提示

点击这里给我发消息

5#
 楼主| 发表于 2002-4-15 03:44:00 | 只看该作者
这是微软的例子,确实很有价值!其用途尽在不言中,只能靠使用者自悟了
6#
发表于 2002-7-18 20:20:00 | 只看该作者
是微軟SQL用戶編程按口一個運用。SQLDMO也是其中只一。一般來說,用不到的。
如果可以和SQL接上,可以登入則ADOX同樣可以搞定,也可以用JRO配合ADO來搞定。
條條大道通羅馬,學不在於多少,而在於是否精通。
1+1 = 2,0+2 = 2,3-1 =2 。。。。。
如上想獲得2的值有方法萬千,我們只要結果就OK,而不要一味的追求最前沿的東西。
7#
发表于 2002-10-10 23:05:00 | 只看该作者

朱亦文的SQL复制器。


各位看看吧,有什么不明白的地方(指使用上)问我,程序上问zhuyiwen大哥吧文件下载
[em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06][em06]
8#
发表于 2002-10-13 08:45:00 | 只看该作者

讨论 如何在子窗体的每一行中在套入子窗体

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

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-5 00:58 , Processed in 0.113247 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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