در این مقاله ابتدا توصیفی از SSIS connection managerهای OLEDB و ODBC ارائه میشود و سپس به بیان تفاوت میان آنها، هنگام برقراری ارتباط با SQL Server میپردازیم.
SSIS Connection Manager
به طور کلی SSIS Connection Managerها برای پیکربندی برقراری ارتباط بین SSIS و یک Data source خارجی مورد استفاده قرار میگیرند. انواع مختلفی از Connection Managerها در SSIS وجود دارد.
در این مقاله لیستی از SSIS Connection Managerها را در SQL Server Data Tools برای Visual Studio 2017 با توضیحات آن ارائه میشود. (این تصویر از قسمت Add SSIS Connection Manager نرم افزار Visual Studio برداشته شده است):
SSIS Connection Managerها میتوانند از connection managers tab که در پایین صفحه اصلی قرار دارد اضافه شوند:
تفاوت بین OLEDB و ODBC
همانطور که در SSIS connection managers tab اشاره شده است، برای اضافه کردن Connection جدید، بر روی صفحه راست کلیک کرده، و از منوی باز شده new connection manager را انتخاب کرده، و سپس نوع ارتباط مورد نظرتان را انتخاب کنید.
تفاوت بین OLEDB و ODBC
منوی باز شده تعداد کمی از انواع connection managerها را شامل میشود. برای مشاهده همه انواع آن بر روی گزینه New Connection کلیک کنید.
OLEDB Connection manager
OLEDB مخفف Object Linking and Embedding ،Database میباشد. این یک API (application program interface مجموعهای از پروتکلها و ابزارهای روتین برای تولید برنامههای نرمافزاری) است که توسط مایکروسافت طراحی شده و به کاربران این امکان را میدهد تا به انواع data sourcesها با روشهای یکسان دسترسی پیدا کنید.
بین تمام SSIS connection managerها، OLEDB connection managerها محبوبیت بالایی دارند. هنگامی که گزینه OLE DB connection را داخل منوی باز شده انتخاب میکنی، پنجره پایین باز میشود.
تفاوت بین OLEDB و ODBC
در این پنجره، تمامی connectionهای مطرح شده در بالا به همراه خصوصیاتشان ذکر شده است. برای اضافه کردن connection جدید، دکمه New را انتخاب کنید. تصویر پایین فرم اصلی OLEDB connection configuration را نشان میدهد.
تفاوت بین OLEDB و ODBC
اگر بر روی نوار باز شده دکمه Provider کلیک کنید، تمامی فراهم کنندگان data sourcesهای در دسترس نمایش داده میشوند.
تفاوت بین OLEDB و ODBC
خصوصیات اصلی OLEDB connectio شامل موارد زیر میباشد:
- Provider: یک OLE DB provider برای اتصال به یک data source مورد استفاده قرار میگیرد.
- Server name: سروری که میخواهید به آن متصل شوید.
- Authentication type: پارامترهای امنیتی مورد استفاده برای استقرار ارتباط.
- Database name: نام Database name که میخواهید به آن متصل شوید(در صورتی که این ویژگی تعیین نشده باشد، Database name پیش فرض استفاده میشود.)
به طور کلی OLE DB connection manager در تمامی مواردی که میتواند به دیتا بیسهای خارجی وصل شوند از قبیل:
- Execute SQL Task
- Execute T-SQL Task
- OLE DB Source
- OLE DB Destination
- OLE DB command
- Look up Transformation
مورد استفاده قرار میگیرد.
ODBC connection manager
ODBC مخفف Open Database Connectivity میباشد. این یک API استاندارد برای دسترسی به سیستمهای مدیریت پایگاه داده میباشد. Providerهای ODBC فقط به دیتابیسهای رابطهای دسترسی دارند و توسط OLE DB برای دسترسی به منابع داده مبتنی بر SQL استفاده میشوند.
ODBC SSIS connection managerها نیز محبوب هستند و هنگامی که منابع داده به عنوان DSN (Database Source Name) در سیستمعامل تعریف میشوند، مورد استفاده قرار میگیرند.
برای اضافه کردن یک ODBC connection manager داخل connection manager tab panel راست کلیک کرده، و دکمه New Connection را انتخاب کنید. فرم زیر ظاهر میشود.
تفاوت بین OLEDB و ODBC
این فرم شامل تمام ODBC connectionهای مطرح شده میباشد. برای اضافه کردن یکی از آنها بر روی دکمه New کلیک کنید. تصویر زیر فرم پیکربندی ODBC connection manager را نمایش میدهد.
تفاوت بین OLEDB و ODBC
می توان با انتخاب یک data source name (DSN) تعریف شده در سیستم عامل، یا نوشتن مستقیم یک Connection String یک ODBC Connection تعریف کرد. علاوه بر این، ممکن است نیاز به وارد کردن اطلاعات ورود به سیستم داشته باشید.
ADO.NET connection manager
ADO.NET مخفف ActiveX Data Objects using .NET framework میباشد. که شامل مجموعهای از کلاسها میباشد که خدمات دسترسی به داده را نمایش میدهد.
مشابه SSIS connection manager های دیگر، ADO.NET connection manager نیز اجازه دسترسی به data sourceهای خارجی را فراهم میکند.
تفاوت بین OLEDB و ODBC
اینجا هم خصوصیات Connection از قبیل Provider ،Server Name ،authentication و Database name مشابه موارد قبل میباشد.
ADO.NET connection manager editor عمدتاً توسط ADO.NET Source و ADO.NET Destination مورد استفاده قرار میگیرد.
OLEDB ،ODBC و ADO.NET
قبل از همه، خوب است بدانید که ADO.NET از Providerهای OLE DB برای دسترسی به دیتا و OLE DB نیز از ODBC برای دسترسی به دیتابیسهای رابطهای استفاده میکند.
قبل از ارائه توصیفی از این سه دسته SSIS Connection managers، سعی خواهم کرد تعدادی از تفاوتهای مابین آنها را بیان کنم.
SQL Syntax
SQL Syntax ممکن است برای هر نوع ارتباط به طور خاص زمانی که از پارامترها استفاده میکنیم متفاوت باشد برای مثال، زمانی که نیاز به استفاده از پارامترهای درون یک Execute SQL Task داشته باشیم، هر نوع ارتباط Syntax مربوط به خود را دارد که در جدول پایین نشان داده شده است:
Connection Type | Marker | Parameter name |
ADO.NET | @<parameter name> | @<parameter name> |
OLEDB | ? | 0,1,2,3 … |
ODBC | ? | 1,2,3 … |
با اینکه ADO.NET و OLE DB میتواند به Data Sourceهای مشابه متصل شود، ODBC فقط میتواند به سیستمهای پایگاه داده رابطهای اتصال پیدا کند و به منابع XML-based ،Microsoft Exchange Server و باقی منابع امکان اتصال ندارد.
به عبارت دیگر، ODBC ممکن است زمانی که اطلاعات اتصال را ندارید و قصد استفاده از DSN را برای برقراری ارتباط دارید، نیاز شود.
Performance
به طور خلاصه، تجربیات نشان میدهد که وقتی به یک پایگاه داده SQL متصل میشوید، OLE DB عملکرد بالاتری در Extract و Load دیتا دارد. بعد از نشان دادن تعدادی از تفاوتهای بین SSIS connection manageها. میتوانید ملاحضه کنید که انتخاب یکی برای استفاده، میتواند براساس منطقی که میخواهید پیادهسازی کنید متفاوت باشد. بعد از سالها کار کردن با SSIS، من میتوانم استفاده از OLE DB connection managerها را به یک دلیل اصلی توصیه کنم، و آن محبوبیت آن میباشد. از آنجایی که ممکن است در هنگام عیبیابی منابع زیادی را پیدا کنید، در حالی که هنگام استفاده از ADO.NET و ODBC نمیتوانید.
بدون دیدگاه