1 ضمیمه
برگرداندن اطلاعات دیتابیس SQL Server
سلام
من برای برگرداندن دیتابیس از این روش استفاده کردم (Console Application):
Sub ExecuteQuery(Query As String)
Try
Dim Server As String = ""
Dim login As String = ""
Dim password As String = ""
Dim ConnectionString As String = ""
Dim Value As String = ""
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.Yellow
Console.WriteLine("{0} Connect to New Server: ", vbTab)
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.DarkGreen
value = " Server: "
FillName(value, 17)
Console.Write(value)
Console.ForegroundColor = ConsoleColor.Gray
value = Console.ReadLine
If Value.Length = 0 Then Exit Sub
Server = value.Trim
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.DarkGreen
Value = " Login(User ID): "
FillName(value, 17)
Console.Write(value)
Console.ForegroundColor = ConsoleColor.Gray
Console.WriteLine("sa")
login = "sa"
Console.ForegroundColor = ConsoleColor.DarkGreen
Value = "'sa' Password: "
FillName(value, 17)
Console.Write(value)
Console.BackgroundColor = ConsoleColor.Black
Console.ForegroundColor = ConsoleColor.Black
value = Console.ReadLine
password = value.Trim
Console.ResetColor()
Dim connection As SqlConnection
ConnectionString = NewConnectionString(Server, login, password, "master")
connection = New SqlConnection(ConnectionString)
connection.Open()
Dim command As SqlCommand
command = connection.CreateCommand()
command.CommandText = Query
command.ExecuteNonQuery()
Catch ex As Exception
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("{0} {1}! {2}", vbTab, ex.Message.Trim, Query)
End Try
End Sub
Function NewConnectionString(Server As String, login As String, password As String, Optional Database As String = "Projects") As String
Return String.Format("Data Source={0};Initial Catalog={3};User ID={1};Password={2}", Server, login, password, Database)
End Function
Shared Sub Backup()
ExecuteQuery(String.Format("BACKUP DATABASE Projects TO DISK='{0}'",
IO.Path.GetFullPath(".\Projects.BAK")))
End Sub
Shared Sub Restore()
ExecuteQuery(String.Format("RESTORE DATABASE Projects FROM DISK='{0}'",
IO.Path.GetFullPath(".\Projects.BAK")))
End Sub
ولی موقع Restore این خطا رو بر می گردونه که دیتابیس در حال استفاده است....
With ProjectsAdapter.Connection
.Close()
End With
AdapterManager.Connection.Close()
Data.Restore()
ضمیمه 156218
1 ضمیمه
نقل قول: برگرداندن اطلاعات دیتابیس SQL Server
SQL Server Management Studio هم همین خطا رو برمی گردونه!!!
ضمیمه 156219
1 ضمیمه
نقل قول: برگرداندن اطلاعات دیتابیس SQL Server
سلام و روز خوش
1- میتونین بجای نوشتن یک console app از command lineهای خود sql استفاده کنین.
2- در restore ، یک with replace اضافه و تست کنین ببینین مشکل حل میشه.
osql -E -Q "BACKUP DATABASE ... TO DISK='...'"
osql -E -Q "RESTORE DATABASE .. FROM DISK='...' WITH REPLACE"
ضمیمه 156220
1 ضمیمه
نقل قول: برگرداندن اطلاعات دیتابیس SQL Server
سلام مجدد
Console Application من به شبکه متصل می شه، یک جدول دارم که با Dataset کوئری ها رو براش نوشتم که از کلاینت نرم افزار رو اجرا می کنم همون جدول AppProjects قابل مدیریت هست هیچ مشکلی هم نداره، ولی با جدولی که جدیدا اضافه کردم Videos برای اتصال مشکل داره (کلاینت) ولی در سیستم اصلی هیچ مشکلی نداره.
نکته اینجاست که من پوشه دیباگ از پروژه رو به اشتراک گذاشتم و از طریق powershell نرم افزار رو اجرا می کنم.
خطای جدول videos در کلاینت...
ضمیمه 156232
کدهای تعاریف Adapter ها :
Friend WithEvents ProjectsAdapter As New Projects.
ProjectsDatasetTableAdapters.
AppProjectsTableAdapter With {.ClearBeforeFill = True}
Friend WithEvents VideosAdapter As New ProjectsDatasetTableAdapters.
VideosTableAdapter With {.ClearBeforeFill = True}
Friend WithEvents Dataset As New ProjectsDataset
Friend WithEvents AdapterManager As New Projects.
ProjectsDatasetTableAdapters.
TableAdapterManager With {.AppProjectsTableAdapter =
ProjectsAdapter, .VideosTableAdapter = VideosAdapter}
پردازش اولیه:
Dim ConnectionString As String = Data.ConnectionString
If ConnectionString.Length > 0 Then
With AdapterManager.Connection
Try
.Close()
.ConnectionString = ConnectionString
.Open()
Catch ex As Exception
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("{0} {1}!", vbTab, ex.Message.Trim)
Finally
End Try
End With
End If
Data.ConnectionString اطلاعات اتصال به SQL Server در دیتابیس Settings ذخیره می شه که موقع اجرای نرم افزار استفاده می شه
نقل قول: برگرداندن اطلاعات دیتابیس SQL Server
مثل اینکه تغییر ConnectionString از AdapterManager به تنهایی کافی نبوده ....
با این دستور مشکل اتصال به جدولو حل شد....
With VideosAdapter.Connection
.Close()
.ConnectionString = ConnectionString
.Open()
End With
نقل قول: برگرداندن اطلاعات دیتابیس SQL Server
این "جدولو" خیلی خوب بود!