以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql数据库备份提示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159070)

--  作者:禾成
--  发布时间:2020/12/12 16:15:00
--  sql数据库备份提示
按钮代码如下:红色这段不是很理解
Dim cn As Connection = Connections("数据库名")
Dim lx As Integer = cn.SourceType
If lx = 2 Then
    Dim str As String = cn.ConnectionString
    Dim mc As String
    For Each s As String In str.split(";")
        If s.StartsWith("Initial Catalog") Then
            mc = s.split("=")(1)
        End If
    Next
    Dim bf As String = "C:\\FTP\\"& format(Date.now,"yyyyMMddHHmmss") & ".bak"
    Dim Result As DialogResult
    Result = MessageBox.Show("是否现在【备份】数据库至服务器端【C:\\FTP】目录下 ?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        Dim cmd As New SQLCommand
        cmd.CommandText = "use master;BACKUP DATABASE " & mc & "  TO DISK = \'" & bf & "\'  With FORMAT,CHECKSUM;"
        cmd.ExecuteNonQuery()
    End If
End If

点击备份按钮报下面的错误
无效的 SQL语句;期待 \'DELETE\'、\'INSERT\'、\'PROCEDURE\'、\'SELECT\'、或 \'UPDATE\'。

--  作者:有点蓝
--  发布时间:2020/12/12 16:22:00
--  
红色这段是为了从数据源的连接字符串里拆出数据库名称。

这种用法仅支持SqlServer,并且登录用户有足够的权限,比如使用sa登录

--  作者:禾成
--  发布时间:2020/12/12 16:39:00
--  
我的数据库就是SqlServer
请老师帮我改一下代码

--  作者:有点蓝
--  发布时间:2020/12/12 16:44:00
--  

指定数据源名称http://www.foxtable.com/webhelp/topics/2344.htm


--  作者:禾成
--  发布时间:2020/12/12 16:52:00
--  

谢谢老师,已搞定,原来如此


如果SQLCommand操作的是外部数据源,那么一定要设置其ConnectionName属性,指定外部数据源名称:


很多用户,包括我自己,都会犯这个错误,明明代码正确,却没有结果,折腾半天,只是因为没有设置数据源名称而已。