سؤال

هل يمكن لأي شخص أن يخبرني كيف أحصل على مثيلات SQLServer البعيدة باستخدام C # و SMO أو أي API؟

لدي اسم خادم بعيد "Remotemc"، والذي يحتوي على مثيلات من SQL Server: "Remotemc" و "Remotemc Sqlexpress"

أحاول الحصول على المثيلات في التعليمات البرمجية مثل هذا:

Server srv=new Server("RemoteMC");
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);

لكنه يعود "المضيف SQLExpress"

أنا لا أعرف ما الخطأ الذي حدث. كيف يمكنني الحصول على النتيجة

remotemc.
remotemc sqlexpress؛

?

هل كانت مفيدة؟

المحلول

ال SmoApplication.EnumAvailableSqlServers الطريقة هي ما تبحث عنه. هناك 3 حمولة زائدة، وأحد تلك تأخذ string المعلمة لاسم الخادم.

إرجاع أ DataTable الذين لديهم صفوف الحقول مثل Version, name, IsLocal, ، إلخ.

ستحتاج إلى إضافة مرجع إلى مكتبات SMO، وربما تريد أن تكون لديك "using Microsoft.SqlServer.Management.Smo;"في الجزء العلوي من ملف C # الخاص بك.

يرى http://www.sqldbatips.com/showarticle.asp؟id=34. للحصول على مقدمة إلى SCL SMO.

تعديل: بعض التعليمات البرمجية لمعالجة هذه المشكلة بالذات (لم أقم بتجميعها أو تشغيلها):

تعديل:. وتحديد إضافة إلى التوجيه حتى يمكن تجميعها.

DataTable dataTable = SmoApplication.EnumAvailableSqlServers(false);

foreach (DataRow dataRow in dataTable.Rows)
{
    if ((dataRow["Server"] as string) == "MyServerName")
        Console.WriteLine(dataRow["Instance"] as string);
}

نصائح أخرى

استخدم الطريقة المدمجة.

System.Data.Sql.SqlDataSourceEnumerator

طريقة واحدة للقيام بذلك هي قراءة إدخال التسجيل "" برنامج Microsoft Microsoft Microsoft SQL Server مثيل SQL "تحت الجهاز المحلي. هل يسمح لك بقراءة التسجيل في الحل الخاص بك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top