以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]附加数据库  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77887)

--  作者:blsu33
--  发布时间:2015/11/27 10:12:00
--  [求助]附加数据库
红袍老师,
   附加数据库还是不行,麻烦您再给看下。

使用外部数据源access 然后希望加载进来SQL2005数据源

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试附加.rar



--  作者:Hyphen
--  发布时间:2015/11/27 10:26:00
--  

1. 首先设置一个外部数据源指向SQL2005任意一个数据库

 

2. 附加

Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "use master;EXEC sp_attach_db @dbname =\'测试\',@filename1 =\'"& ProjectPath & "ADMIN\\测试.mdf\',@filename2 = \'" & ProjectPath & "ADMIN\\测试_log.ldf\'"
cmd1.ExecuteNonQuery()

 

3.卸载

Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "use master;EXEC sp_detach_db \'测试\',\'true\'"
cmd.ExecuteNonQuery()

[此贴子已经被作者于2015/11/27 10:25:59编辑过]

--  作者:大红袍
--  发布时间:2015/11/27 10:53:00
--  

先要添加sql数据源啊

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试附加.zip


--  作者:blsu33
--  发布时间:2015/11/27 11:33:00
--  
o  多谢 让二位费心了 
--  作者:blsu33
--  发布时间:2015/11/27 11:47:00
--  
在问

如数据库已经存在,能否先提示下,停止加载呢,防止出现错误提示;


不会是使用
 Try
   代码一
Catch ex As Exception
   代码二
End Try

--  作者:大红袍
--  发布时间:2015/11/27 12:00:00
--  
Try
    If Connections.Contains("test") Then Connections.Delete("test")
    Dim cmd1 As New SQLCommand
    Connections.Add("test", "Provider=SQLOLEDB.1;Password=hailun.;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=voyo")
    cmd1.ConnectionName = "test"
    Connections("test").BeginTransaction() \'开始事务
    cmd1.CommandText = "use master;EXEC sp_attach_db @dbname =\'测试\',@filename1 =\'"& ProjectPath & "ADMIN\\测试.mdf\',@filename2 =\'"& ProjectPath & "ADMIN\\测试_log.ldf\'"
    cmd1.ExecuteNonQuery()
    Connections("test").Commit \'提交事务,所有操作生效
    If Connections.Contains("test") Then Connections.Delete("test")
Catch ex As Exception \'如果出错
    msgbox(ex.message)
End Try

--  作者:Hyphen
--  发布时间:2015/11/27 12:04:00
--  

Dim cmd1 As New SQLCommand
cmd1.ConnectionNa me = "测试"
cmd1.CommandText = "sel ect count(*) from sys.databases where name = \'测试\'"
Dim val  = cmd1.ExecuteScalar()
If val = 1 Then

msgbox("\'测试\'数据库存在")

else

\'附加数据库

end if


--  作者:blsu33
--  发布时间:2015/11/27 12:17:00
--  
学海无涯 多谢二位了
--  作者:blsu33
--  发布时间:2015/11/27 13:19:00
--  

红袍老师,
卸载的代码这样写,出现弹窗11111 数据库没有删除,代码哪里不对,请老师在给看看?
Dim cmd1 As New SQLCommand
If Connections.Contains("test") Then Connections.Delete("test")
Connections.Add("test", "Provider=.....")
cmd1.C
Try
    Connections("test").BeginTransaction() \'开始事务
    cmd1.CommandText = "use master;EXEC sp_detach_db \'测试\'"
    cmd1.ExecuteNonQuery()
    Connections("test").Commit \'提交事务,所有操作生效
Catch ex As Exception \'如果出错
    msgbox("11111")
End Try
If Connections.Contains("test") Then
    Connections.Delete("test")
End If

[此贴子已经被作者于2015/11/27 13:20:18编辑过]

--  作者:大红袍
--  发布时间:2015/11/27 14:36:00
--  

看弹出什么错误

 

msgbox(ex.Message)