الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معرفة سيرفر sql متوقف او عامل

بدأه mkyh86 في 10 أكتوبر 2013 · 3 رد · 761 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

كيف استطيع ان اعرف بان لنك السيرفر الذي اريد ان اتصل به متوقف او يعمل

 

linkeserver is work isn't out work

تم تعديل هذه المشاركة بواسطة mkyh86 في 10 أكتوبر 2013 في 14:18

#2

شو قصدك با link? network?

 

اذا network استعمل PING

 

SQL SERVER يمكن ان يكون متوقفا اذا كانت Network link موجودة ولكن SQL SERVER SERVICE  متوقفة

 

اذا اردت ان تعرف بكلتا الحالتين يمكنك تجربة الكود التالي وهو نفس طريقة الاتصال العادية باستثناء وجود Connection Timeout وعدم وجود اسم database

 

وهناك حالات حيث يكون network موجود وserver sql server شغالة ولكنك لا تستطيع الاتصال بسبب firewall

 

على اي حال هذا ما استعمله

    Function IsSQLServerRunning(ByVal server_name_or_ip As String, sql_instance_name As String ,userid As String ,password As String) As String
        Dim answer As String = ""
        ' FIRST PING THE SERVER
        Dim ACTIVE = My.Computer.Network.Ping(server_name_or_ip)
        If ACTIVE = True
            answer = "Yes Network "
        Else
            answer = "No Network "
        End If
        ' SECOND TEST CONNECTION WITHOUT USING "Initial Catalog"
        Dim conn_str = "Data Source={0};Persist Security Info=True;User ID={1};Password={2};Connection Timeout=1"
        conn_str     = String.Format(conn_str,sql_instance_name,userid,password)
        Dim sql_conn As New SqlClient.SqlConnection(conn_str)
        Try
            sql_conn.Open
            answer += "Yes Connection"
        Catch ex As Exception
            answer += "No Connection"
        End Try
        MsgBox(answer)
        Return answer
    End Function

ليس دائما يكون اسم server هو نفسه اسم sql server instance لذلك وضعت 2 parameter

Samir Ibrahim

VFP Blog

VB.NET Blog

#3

قصدي انا عامل linked servers

رباط سيرفرين معاً اريد التاكد بان السيرفر الاخر الذي اخذ منه بيانات هو يعمل يعني الحاسبة التي تحتوي على السيرفر الاخر غير مغلقة

 

انا حليتها بان اعمل على جلب بعض البيانات وعند حصول غطأ يظهر مسج بوكس يقول السيرفر غير متصل ولا يستطيع جلب البيانات منه

 

ولكن هل يوجد شفرة اخرة لان عندما يتاكد من السيرفر يعمل ياخذ وقت ثم يظهر لي المسج بوكس

#4

يوجد Stored Procedure جاهز من ضمن الاجراءات المخزنة داخل برنامج SQL Server يقوم بفحص LinkedServers اذا كانت تعمل أم لا اسمه

EXEC sp_testlinkedserver myLinkedServer

ومن الطبيعي ان يأخذ وقت لكي تتم عمليه الفحص

 

يمكنك استخدام هذا الاجراء في شاشة تسبق فتح البرنامج لفحص الاتصال ووضع الرسالة المناسبة وقت الاقلاع والتي تظهر للمستخدم بان السيرفر غير متاح

 

مثال 

 

قم بانشاء اجراء مخزن يفحص حالة linked server

 

USE [master]
GO
/****** Object:  StoredProcedure [dbo].[myLinkedServer]    Script Date: 10/14/2013 11:28:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[myLinkedServer]


as
begin

EXEC sp_testlinkedserver myLinkedServer

end

 

 

 

ثم بكتابة الكود الذي سيعمل وقت الاقلاع بالشكل الذي يناسبك او كالمثال التالي

 

 

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Try


            Dim sqlcon As New SqlConnection("Server=.\ITPROF;Database=master;trusted_connection=yes")
            Dim cmd As New SqlCommand("myLinkedServer", sqlcon)


            cmd.CommandType = CommandType.StoredProcedure


            sqlcon.Open()
            cmd.ExecuteNonQuery()
            sqlcon.Close()


        Catch ex As Exception
            MsgBox(ex.Message)
        End Try


    End Sub
End Class

النتيجة

 

post-46243-0-57749200-1381743277_thumb.j

 

بالتوفيق

 

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us

مواضيع مشابهة