在vb.net中,我正在尝试备份我的SQL Server 2012。
当我运行我的代码时,它正确地从数据库(在本地)获得备份,但是当我更改与服务器(本地服务器)的连接时,它不会执行任何操作。
我认为问题出在服务器上的安全性上......
任何有关解决此问题的解决方案都非常感谢
我的代码:
Sub server(ByVal str As String)
con = New SqlConnection("Data Source=" & str & ";Initial Catalog=DATABASE;Persist Security Info=True;User ID=username;Password=password")
con.Open()
cmd = New SqlCommand("select * from sysservers where srvproduct='SQL Server'", con)
dread = cmd.ExecuteReader
While dread.Read
cmbserver.Items.Add(dread(2))
End While
dread.Close()
End Sub
Sub connection()
con = New SqlConnection("Data Source=192.168.0.200;Initial Catalog=database;Persist Security Info=True;User ID=username;Password=password")
con.Open()
cmbdatabase.Items.Clear()
cmd = New SqlCommand("select * from sysdatabases", con)
dread = cmd.ExecuteReader
While dread.Read
cmbdatabase.Items.Add(dread(0))
End While
dread.Close()
End Sub
Sub query(ByVal que As String)
On Error Resume Next
cmd = New SqlCommand(que, con)
cmd.ExecuteNonQuery()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
If PRGBackup.Value = 100 Then
Timer1.Enabled = False
PRGBackup.Visible = False
MsgBox("successfully the backup has been done in the specified folder.")
Else
PRGBackup.Value = PRGBackup.Value + 5
End If
Catch ex As Exception
MsgBox(ex.Message, , projectTitle)
End Try
End Sub
Sub blank(ByVal str As String)
Try
If cmbserver.Text = "" Or cmbdatabase.Text = "" Then
MsgBox("Server Name or Database can not be blank.")
Exit Sub
Else
If str = "backup" Then
SFDBackup.FileName = cmbdatabase.Text
SFDBackup.ShowDialog()
Timer1.Enabled = True
PRGBackup.Visible = True
Dim s As String
s = SFDBackup.FileName
Dim sql As String = "BACKUP DATABASE " & cmbdatabase.Text & " to disk='" & s & "'"
query(sql)
ElseIf str = "restore" Then
OFDBackup.ShowDialog()
Timer1.Enabled = True
PRGBackup.Visible = True
query("RESTORE DATABASE " & cmbdatabase.Text & " FROM disk='" & OFDBackup.FileName & "'")
End If
End If
Catch ex As Exception
MsgBox(ex.Message, , projectTitle)
End Try
End Sub
Private Sub cmbbackup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbbackup.Click
blank("backup")
End Sub
Private Sub cmdrestore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdrestore.Click
blank("restore")
End Sub
Private Sub frmBackup_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Me.Cursor = Cursors.WaitCursor
server("192.168.0.200")
'server(".\sqlexpress")
Me.Cursor = Cursors.Default
Catch ex As Exception
MsgBox(ex.Message, , projectTitle)
End Try
End Sub
我想你刚刚错过了SQL服务器实例名称,它是在IP地址反斜杠后直接签署“\”:========>“172.16.9.26 \ SQLSERVER;”
尝试此连接,因为您使用的是IP地址,并且还有一个用户名和密码:
Dim ConnString As String = ("Server=172.16.9.26\SQLSERVER;Database=database;User Id=sa;Password=yourpass")
所以,让你的SqlConnection像这样:
con = New SqlConnection(“Data Source = 192.168.0.200 \ SQLSERVER; Initial Catalog = database; Persist Security Info = True; User ID = username; Password = password”)
我希望这可以提供帮助。 ^ _ ^
您需要执行备份SQL命令:
Dim sqlConnectionString As String = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Locations;Data Source=GIGABYTE-PC\SQLEXPRESS"
Dim conn As New SqlConnection(sqlConnectionString)
conn.Open()
Dim cmd As New SqlCommand
cmd.CommandType = CommandType.Text
cmd.CommandText = "BACKUP DATABASE Locations TO DISK='C:\Temp\location.BAK'"
cmd.Connection = conn
cmd.ExecuteNonQuery()
它将进行备份,但备份文件将转到服务器上的某个目录而不是本地客户端上
如果您的本地计算机名称是duo-1
并且备份文件路径是D:\Apps\Medlabs i9\DATA BACKUP\Medlabs.bak
那么您应该在备份查询中使用UNC路径。它应该是
backup database DB_NAME to disk='\\duo-1\D\Apps\Medlabs i9\DATA BACKUP\Medlabs.bak'