PDA

View Full Version : مشکل با اجرای برنامه startup شده قبل از اجرای دیتابیس



dr.pantagon
جمعه 06 دی 1392, 00:35 صبح
سلام
من برنامه ای دارم که با دیتابیس کار می کنه و برنامه مشکلی نداره و به درستی هم استارت آپ میشه

مشکل اینجا هست که در بعضی سیستم ها برنامه قبل از اجرای SQL سرور اجرا میشه و خوب چون SQL استارت نشده برنامه خطا میگیره وبسته میشه

حالا می خوام ببنیم چه جوری میشه فهمید که sql استارت شده

یعنی برنامه چه جوری چک کنه که اگر استارت شده بود باقی روالش رو ادامه بده

( تو نت خیلی سرچ کردم اکثرا میگن یک سلکت معمولی بزن ولی این راه حل منطقی نیست به نظرم بیشتر به درد این میخوره که ببینی خود دیتابیس استارت هست یا نه !! نه سرویس SQL )


تشکر

mehdi.safavie
جمعه 06 دی 1392, 21:07 عصر
وقتی SQL شما Run نشده باشه برنامه شما پیغام خطا میده ، یه تایمر بزار توش از دستورات Try استفاده کن ، داخشل بنویس اگر ارور داد تایمر دوباره اجرا بشه ، اگر ارور نداد SQL و داده ها رو Load کنه .

boveiryghasem
شنبه 07 دی 1392, 09:21 صبح
سلام

با این برنامه میتونی ببینی سرویس SQL تو پروسس ها هست یانه ولی قبلش اینو امپورت کن تو برنامت Imports System.Data.Sql

Private Sub Button8_Click(sender As System.Object, e As System.EventArgs) Handles Button8.Click
Dim Server As String = String.Empty
Dim instance As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance
Dim table As System.Data.DataTable = instance.GetDataSources()

For Each row As System.Data.DataRow In table.Rows
Server = String.Empty
Server = row("ServerName")
If row("InstanceName").ToString.Length > 0 Then
Server = Server & "\" & row("InstanceName")
End If
ComboBox1.Items.Add(Server)
Next

ComboBox1.SelectedIndex = ComboBox1.FindStringExact(Environment.MachineName)
End Sub

boveiryghasem
شنبه 07 دی 1392, 10:15 صبح
دوباره سلام بعد از اینکه با برنامه بالا متوجه شدید که سرویس SQL اجرا نشده با دستور زیر که میتونی بزاریش توی یه Batch file NET START MSSQL$SQLEXPRESS این سرویس رو فعال کنی batch file رو میتونی با دستور زیر اجرا کنی System.Diagnostics.Process.Start("c:\test\file.bat") البته یادت باشه با Administrator وارد شده باشی.

dr.pantagon
شنبه 07 دی 1392, 10:36 صبح
تشکر البته من این خط کد رو قسمت فایند رو از فایند اگزکت به فایند خالی تغییر دادم


ComboBox1.SelectedIndex = ComboBox1.FindString(Environment.MachineName)