设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用代码复制.mdf文件到MSDE数据库服务器

2015-4-20 12:22| 发布者: admin| 查看: 1396| 评论: 7|原作者: zhuyiwen|来自: www.office-cn.net

摘要: Public Function sCopyMDF(sSvrName As String, sUID As String, sPWD As String, sMDFName As String) As String '******************************************************************** '这个函数将检查MSDE ...

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


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



发表评论

最新评论

引用 zhuyiwen 2002-4-13 12:45

此代码已经测试,通过!

[em27][em27][em27]
引用 zhuyiwen 2002-4-13 13:17

此例用途:

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

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

点此下载


运行情况如下:





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

引用 tmtony 2002-4-14 15:56
不错,很不错 :)
我正在研究如何对SQL SERVER编程的一些方法
这个例子对我有好的提示
引用 zhuyiwen 2002-4-15 03:44
这是微软的例子,确实很有价值!其用途尽在不言中,只能靠使用者自悟了
引用 HG 2002-7-18 20:20
是微軟SQL用戶編程按口一個運用。SQLDMO也是其中只一。一般來說,用不到的。
如果可以和SQL接上,可以登入則ADOX同樣可以搞定,也可以用JRO配合ADO來搞定。
條條大道通羅馬,學不在於多少,而在於是否精通。
1+1 = 2,0+2 = 2,3-1 =2 。。。。。
如上想獲得2的值有方法萬千,我們只要結果就OK,而不要一味的追求最前沿的東西。
引用 kdwin 2002-10-10 23:05

各位看看吧,有什么不明白的地方(指使用上)问我,程序上问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]
引用 make 2002-10-13 08:45

查看全部评论(7)

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

GMT+8, 2024-4-25 08:35 , Processed in 0.105247 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部