كيفية توصيل استعلام جديد النصي مع SSMS إضافة ؟

StackOverflow https://stackoverflow.com/questions/1016343

  •  06-07-2019
  •  | 
  •  

سؤال

أحاول إنشاء SSMS الإضافية.واحدة من الأشياء التي أريد القيام به هو إنشاء إطار استعلام جديد و برمجيا قم بتوصيل إلى مثيل الملقم (في سياق SQL تسجيل الدخول).لا يمكن إنشاء استعلام جديد النصي نافذة على ما يرام ولكن لا أستطيع أن أجد كيفية توصيله دون يدويا ربط إلى شيء آخر (مثل كائن Explorer).

لذلك وبعبارة أخرى, إذا كنت على اتصال Obect Explorer إلى مثيل SQL يدويا ومن ثم تنفيذ الطريقة من إضافة-في أن يخلق نافذة الاستعلام يمكنني الاتصال باستخدام هذا الكود:

ServiceCache.ScriptFactory.CreateNewBlankScript(
     Editors.ScriptType.Sql,
     ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo,
     null);

ولكن لا تريد أن تعتمد على CurrentlyActiveWndConnectionInfo.UIConnectionInfo الاتصال.أريد أن مجموعة SQL تسجيل الدخول اسم المستخدم وكلمة المرور برمجيا.

هل من أحد لديه أي أفكار ؟

تحرير:

لقد تمكنت من الحصول على نافذة الاستعلام متصلة بواسطة إعداد المعلمة الأخيرة إلى مثيل النظام.البيانات.SqlClient.SqlConnection.ومع ذلك ، يستخدم اتصال سياق آخر مرة دخلت فيها أنه كان على اتصال بدلا من ما أحاول تعيين برمجيا.أي أن المستخدم أنه يربط كما هو المختار في اتصال مربع الحوار الذي تحصل عليه عندما كنت انقر فوق استعلام جديد زر و لا يكون كائن Explorer متصلة.

EDIT2:

أنا أكتب (أو على أمل أن الكتابة) الوظيفة الإضافية تلقائيا إرسال SQL و نتائج التنفيذ إلى حالتنا-نظام تتبع عند تشغيل ضد خوادم الإنتاج.فكرت لإزالة أذونات الكتابة و تعيين تسجيلات الدخول من خلال هذه الإضافة التي سوف أيضا إجبار المستخدم على إدخال قضية # إلغاء البيان إذا لم يكن هناك.فكرة أخرى لقد كان لتفقد اسم الملقم في ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo ومقارنتها لدينا قائمة من خوادم الإنتاج.إذا كان يطابق وليس هناك حالة # ثم إلغاء الاستعلام.

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

المحلول

أنا لا يمكن العثور على طريقة للقيام بذلك, حيث يبدو أن هناك أي وسيلة لربط في اتصال نافذة الحوار.

ماذا تعمل ؟

تحرير:إذا فهمت بشكل صحيح كنت تريد أن اعتراض الإستعلام و إذا كان يتطابق مع خادم الإنتاج إلغاء آخر وإرسال النص النتائج إلى db ؟ همم...في حين أن هذا لن يكون ممكنا إلا هو حقيقي الرئيسية ألم في خلف و لن تستخدم في هذا.بالإضافة إلى الوظيفة الإضافية يمكن تعطيل إلغاء تثبيت.... الخمن الأفضل لك محاولة القيام بذلك مع حسن الإعداد الأمن على خادم الإنتاج.

نصائح أخرى

فقط في حالة أي شخص آخر هو البحث عن طريقة إنشاء وتوصيل نافذة الاستعلام programmaticaly - مثال قصيرة عن صواريخ أرض-أرض 2012:

UIConnectionInfo u =new UIConnectionInfo();

u.ServerName = "TestPC\\ServerInstance";

u.ServerType = new Guid("8c91a03d-f9b4-46c0-a305-b5dcc79ff907");

u.AuthenticationType = 0;//Use AuthenticationType = 1 for SQL Server Authentication

u.AdvancedOptions.Set("DATABASE", "AdventureWorks2012");

IScriptFactory scriptFactory = ServiceCache.ScriptFactory;

if(scriptFactory != null)
{
  scriptFactory.CreateNewBlankScript(ScriptType.Sql, u, null);
} 

هذا مقتطف الشفرة سيتم فتح إطار استعلام جديد متصل المحدد خادم قاعدة البيانات مع مصادقة windows.

أنا لم أجرب هذا بعد ولكن لم أكن أعرف إذا كنت قد أعطيت فرصة.

Microsoft.SqlServer.Management.Smo.RegSvrEnum.UIConnectionInfo u = 
    new Microsoft.SqlServer.Management.Smo.RegSvrEnum.UIConnectionInfo();

يجب أن تسمح لك لجعل الخاصة بك الاتصال.لكن كما قلت, لم أجربها بعد.سوف تحتاج إشارة إلى Microsoft.SqlServer.RegSvrEnum.dll.

اسمحوا لي أن أعرف إذا كان يعمل.

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