كيفية تعيين حزمة SSIS ديناميكية .mdb الاتصال عند تشغيل حزمة من .NET

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

سؤال

أنا أعمل حاليا على VB.NET تطبيق سطح المكتب الذي يستخدم .mdb (الوصول) إلى ملفات قاعدة البيانات في الخلفية.على .mdb الملفات يتم فتحها وتحريرها في VB.NET التطبيق.بمجرد تحرير الانتهاء من المستخدمين سوف تحتاج إلى استيراد البيانات إلى قاعدة بيانات SQL Server.هذا هو مهمة سهلة ، حتى محاولة إدخال ديناميكية أسم دليل السيناريو.

لدي قدرا كبيرا من الخبرة مع SSIS ولكن أواجه بعض المشاكل مع اقتراب هذا.لقد خلق WinForm التي تسمح للمستخدم استعراض .ملف mdb من اختيارهم.على .mdb الملفات يكون الطابع الزمني/أحدث المعلومات في نفوسهم ، لجعلها فريدة من نوعها.(لم أكن تطوير هذا الجزء من التطبيق ، لقد بدأت مؤخرا العمل على هذا ، وبالتالي مشاكل.لن الزمني أحد .اسم الملف mdb ولكن هذا هو ما Im اضطر إلى استخدام!).

على أي حال, أنا بحاجة إلى تمرير اسم الملف والمسار إلى حزمة SSIS ، حيوي.أرى حيث يمكنك إنشاء متغيرات سلسلة_أحرف_الاتصال ، إلخ.ولكن أنا متأكد من التفاصيل و ما هو نوع اتصال البيانات يجب استخدام MS Access (Ole DB لـ ODBC أو Jet 4.0 لمكتب??شيش هناك الكثير!!)

كما نفترض أن بلدي بيانات الاتصال سلسلة الاتصال يجب أن تكون ديناميكية ، منذ الحزمة سوف تستخدم .ملف mdb كمصدر.ولكن كيف يمكنك خلق دينامية اتصال البيانات في SSIS على .mdb الملفات ؟

و كيف يمكنني تمرير اسم الملف/المسار سلسلة بلدي حزمة SSIS?

أنا حاليا النماذج مع هذا الرمز:

    'Execute the SSIS_Import package 
    Dim pkgLocation As String
    Dim pkg As New Package
    Dim app As New Microsoft.SqlServer.Dts.Runtime.Application
    Dim pkgResults As DTSExecResult
    Dim eventListener As New EventListener()

    Try
        pkgLocation = "C:\SSIS_DataTransfer\ImportPackage.dtsx"

        'TO-DO: pass databasePath variable to SSIS package here ???
        pkg = app.LoadPackage(pkgLocation, eventListener)
        pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)

        Select Case pkgResults

            Case DTSExecResult.Completion
                MsgBox("Data import completed!")

            Case DTSExecResult.Success
                MsgBox("Data import was successful!")

            Case DTSExecResult.Failure
                MsgBox("Data import was not successful!")

        End Select

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
  1. كيف يمكنني تمرير .ملف mdb الموقع إلى حزمة SSIS?LoadPackage ربما ؟
  2. كيف يمكنني استخدام ديناميكية موقع الملف في اتصال البيانات بلدي حزمة SSIS?

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

أي مساعدة هي موضع تقدير كبير.شكرا لك.

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

المحلول

سيؤدي ذلك إلى تغيير بعض ، اعتمادا على اتصال تنفيذ الطريقة التي تستخدمها وإنما هو في الأساس نفسه للحصول على المتغيرات في الحزمة.انها كانت فترة من الوقت منذ ان كنت تستخدم SSIS لذلك قد يكون قليلا قبالة.لكنه في الغالب مباشرة بمجرد الحصول على الخطوات الأولية أحسب.

للحصول على المتغيرات في الحزمة:

  • إنشاء متغير في حزمة لعقد اسم الملف.انقر فوق سطح المصمم لضمان كنت في حزمة النطاق على مستوى فتح المتغيرات windows, انقر فوق جديد ثم حدد اسم المتغير ("أسم دليل") ، نوع ("السلسلة") وهي القيمة الافتراضية.
  • تعيين متغير من VB.Net كود:

في VB.NET:

pkg = app.LoadPackage(pkgLocation, eventListener)
' Set the file path variable in the package
' NB: You may need to prefix "User::" to the variable name depending on the execution method
pkg.Variables("filePath").Value = databasePath
pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)
  • يجب أن يكون لديك الآن الوصول إلى المتغير في الحزمة.

اعتمادا على الاتصال الذي تستخدمه استيراد الوصول ديسيبل ، قد تضطر إلى القيام به عدد قليل من الأشياء المختلفة.إذا كنت تستخدم OLEDB الصدد ، هناك سلسلة اتصال ServerName الملكية.تعيين ServerName الملكية إلى استخدام المتغير الذي له مسار الملف (@[User::filePath]) و سلسلة اتصال أيضا استخدام أسم دليل متغير ("Data Source=" + @[User::filePath] + ";Provider=Microsoft.Jet.OLEDB.4.0;")

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

نصائح أخرى

أنا لا أتصل حزم SSIS من البرامج لذلك أنا لا أعرف كيفية تكوين لهم بهذه الطريقة.أنا أعرف أنني عندما استخدم OLEDB إدارة الاتصال واستخدام "الأم OLE DB موفر Jet 4.0" ، أستطيع أن تعيين ServerName المنشأة من إدارة الاتصال إلى مسار .ملف MDB.

كنت نهج هذا عن طريق تحريك ملف إلى استيراد.mdb.ثم إدارة اتصال ثابتة.

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