هناك على أية حال لتسريع SQL Server إدارة كائنات اجتياز من قاعدة البيانات الموجودة؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا حاليا باستخدام SMO وC # لاجتياز قواعد البيانات لإنشاء شجرة من الإعدادات التي تمثل جوانب مختلفة من قاعدتي، ثم مقارنة هذه الأشجار لنرى أين وكيف أنها مختلفة.

والمشكلة هي، لمدة 2 قاعدة بيانات الحجم المعقول، فإنه يأخذ 10mins تقريبا على الزحف عليها محليا وجمع الجدول / عمود / تخزين المعلومات الإجراء وأتمنى للمقارنة.

هل هناك أفضل واجهة ثم SMO الوصول إلى قواعد البيانات في مثل هذه الموضة؟ وأود أن لا يتضمن أي تبعيات إضافية، ولكن سآخذ هذا الألم لتحسين سرعة 50٪. وفيما يلي عينة من كيف انا تعداد الجداول والأعمدة.

        Microsoft.SqlServer.Management.Smo.Database db = db_in;
        foreach (Table t in db.Tables)
        {
            if (t.IsSystemObject == false)
            {

                foreach (Column c in t.Columns)
                {
                }                    
            }
        }
هل كانت مفيدة؟

المحلول

وفي محاولة لإجبار SMO لقراءة جميع الحقول المطلوبة دفعة واحدة، بدلا من الاستعلام عن وصول. انظر هذا بلوق للحصول على مزيد من المعلومات


وتحرير: وصلة ميت ولكنني وجدت <لأ href = "http://web.archive.org/web/20100102060107/http://davidhayden.com/blog/dave/archive/2006/03/29/ 2894.aspx "يختلط =" نوفولو noreferrer "> صفحة على archive.org. هنا هو رمز ذات الصلة:

Server server = new Server();

// Force IsSystemObject to be returned by default.
server.SetDefaultInitFields(typeof(StoredProcedure), "IsSystemObject");

StoredProcedureCollection storedProcedures = server.Databases["AdventureWorks"].StoredProcedures;

foreach (StoredProcedure sp in storedProcedures) {
    if (!sp.IsSystemObject) {
        // We only want user stored procedures
    }
}

نصائح أخرى

استخدم الآراء النظام في كل قاعدة البيانات والاستعلام تقليديا.

HTTP: // شبكة الاتصالات العالمية .microsoft.com / تنزيل / details.aspx؟ familyid = 2EC9E842-40BE-4321-9B56-92FD3860FB32 وdisplaylang = أون

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

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