设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3038|回复: 19
打印 上一主题 下一主题

[其它] 如何附加SQL数据库到SQL服务管理器?

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2007-10-27 11:31:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在电脑上安装了MSDE,现有一SQL数据库(包括一个mdf和一个ldf文件),如何把它加入到SQL服务管理器中?
请高手指教,谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-10-27 12:25:41 | 只看该作者
SQL菜单里有的的的的的
3#
发表于 2007-10-27 12:59:07 | 只看该作者
安装SQL2000中的企业管理器吧
4#
发表于 2007-10-27 13:55:37 | 只看该作者
:) :) :) 习:) :) :) :) 中

点击这里给我发消息

5#
发表于 2007-10-27 14:00:56 | 只看该作者
在所有任务里有个附加数据库功能
也可使用sp_attachdb存储过程

点击这里给我发消息

6#
 楼主| 发表于 2007-10-27 15:07:30 | 只看该作者
谢谢各位答复
我的意思是只安装SQL的桌面引擎 MSDE , 如何在VBA中用代码实现附加数据库的功能?
这个应该可以实现的吧?
7#
发表于 2007-10-30 19:56:34 | 只看该作者
我找到一些网上的代码,拼接到一起,可以使用附加数据库的功能。
代码是vb环境下,你移植到vba中应该也是可以的了。

test 数据库中包含 northwind 数据库 中的 custermor 表,也就是这一个表。

附件 包含 :一个vb 工程文件(源码) 和 一个我做好的exe
你试试看如何。
========================
代码部分:

'定义三个文本框的变量
Dim servername As String
Dim userid As String
Dim pwd As String
Dim ExternFile As String '定义sql脚本文件存放路径
'------------------------------------------------
Dim conn As New Connection
Dim rs As New Recordset
Dim sql As String
'------------------------------------------------
Dim sqlpath As String '定义数据库路径
Private Sub create_db() '执行脚本文件把sql安装目录中的mdf 和 ldf文件附加到数据库服务器
ExternFile = App.Path & "\" & "create_db.SQL"
'-----------------------------------------------
If IsNull(Me.Text1) = True Then                 '
servername = ""
Else
servername = Me.Text1 '给窗体模块级别变量servername赋值
End If
'-----------------------------------------------
If IsNull(Me.Text2) = True Then                 '
userid = ""
Else
userid = Me.Text2 '给窗体模块级别变量userid赋值
End If
'----------------------------------------------
If IsNull(Me.Text3) = True Then                 '
pwd = ""
Else
pwd = Me.Text3 '给窗体模块级别变量pwd赋值
End If
'----------------------------------------------

    sql = "master.dbo.xp_cmdshell  'osql -U " & userid & " -P " & pwd & " -i """ & ExternFile & """'"
   
    On Error GoTo runtime_Err
   
   
   
        conn.Open "provider=sqloledb;data source=" & servername & ";user id=" & userid & ";pwd=" & pwd
        
        conn.Execute sql '这一句执行的可能会慢一些
        
        MsgBox " 'test数据库' 附加成功!", vbInformation, "附加 test数据库 信息..."
   
runtime_Exit:
        Exit Sub
   
runtime_Err:
   
        MsgBox Err.Description, vbInformation, "附加 'test' 错误!"
        
        Resume runtime_Exit

End Sub
Private Sub Command1_Click() '附加数据库
      
Call create_db '执行脚本文件把sql安装目录中的mdf 和 ldf文件附加到数据库服务器
End Sub
Private Sub Command3_Click()
Me.Command3.Enabled = False
'通过读注册表的方法取得sql的安装路径。
'郁闷:sqlpath_temp的返回值尾部竟然包含一个空格
sqlpath_temp = QueryValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\MSSQLServer\Setup", "sqlpath")
Debug.Print "sqlpath_temp =" & " " & sqlpath_temp
'---------------------------------------------------------------------
If sqlpath_temp = "" Then '如果没有安装sql服务器的话
    MsgBox "检测到本机尚未安装sql服务器;" + vbCr + "" + "请先安装sql服务器,再运行本程序.", vbInformation, "'初始化错误!"
    End '直接退出
Else
    '只有当 sqlpath_temp<>"" 该句代码才有意义。否则,运行时错误"无效的过程调用或参数"
    sqlpath = Left(sqlpath_temp, Len(sqlpath_temp) - 1) & "\" & "data"
    Debug.Print "sqlpath=" & " " & sqlpath
    If Dir(sqlpath & "\test_Data.mdf") = "" Then

    '创建一个当前路径的sql脚本文件,给后续的代码使用
    Open App.Path & "\" & "create_db.SQL" For Output As 1
    Print #1, "EXEC sp_attach_db @dbname = N'test',"
    Print #1, "@filename1 = N'" & sqlpath & "\test_Data.mdf',"
    Print #1, "@filename2 = N'" & sqlpath & "\test_log.ldf'"
    Close 1
   
   
    On Error GoTo runtime_Err
   
    '拷贝数据文件和日志文件 到服务器的安装目录
    FileCopy App.Path & "\" & "test_Data.mdf", sqlpath & "\test_Data.mdf"
    FileCopy App.Path & "\" & "test_log.ldf", sqlpath & "\test_log.ldf"
    MsgBox "初始化检测成功!", vbInformation, "初始化信息"
   
    '让附加数据库控件有效
    With Me
    .Text1.Enabled = True
    .Text2.Enabled = True
    .Text3.Enabled = True
    .Command1.Enabled = True
    End With
   
   
runtime_Exit:
     Exit Sub
         
runtime_Err:
      MsgBox Err.Description, vbInformation, "初始化错误!"
      
      End '干脆退出app
      
      Resume runtime_Exit
      
    Else
        MsgBox " 'test数据库'已经附加成功!" + vbCr + "" + vbCr + " 'test'数据库 已存在", vbInformation, "无需再附加数据库"
        
    End If

End If
End Sub

========================

[ 本帖最后由 wu8313 于 2007-10-30 20:38 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

8#
 楼主| 发表于 2007-10-30 21:44:00 | 只看该作者
非常感谢wu8313
下来试试看先

点击这里给我发消息

9#
 楼主| 发表于 2007-10-30 23:11:53 | 只看该作者
我把代码改在VBA中,
运行到
conn.Open "provider=sqloledb;data source=" & servername & ";user id=" & userid & ";pwd=" & pwd
这句就出错了
不知道 user id 参数的值怎么设?
我设为:Administrator或者sa都有错误提示:  用户"..."登录失败.原因:未与信任SQL Server 连接相关联.

再请各位帮看看,该怎么办......
10#
发表于 2007-10-31 07:35:50 | 只看该作者
这句就出错了
不知道 user id 参数的值怎么设?
=======================
userid /pwd/servername 这些参数由 form1 上面的 三个文本框 给出。

你也可以直接使用 我给出 的exe 文件 来附加数据库。看看是否可以实现你的功能。

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

本版积分规则

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

GMT+8, 2025-1-10 10:09 , Processed in 0.121549 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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