Методи. NET, що підтримують інтеграцію CLR

Розробнику, що створює компоненти CLR бази даних за допомогою простору імен Sql Client, доступна багата структура програмування середовища NET Framework У цьому просторі імен існує набір класів, призначений для повернення результатів і повідомлень зухвалому додатком Ще один набір класів використовується для доступу до операцій бази даних з типів інтеграції CLR

Додаткова Детально про доступ до даних за допомогою простору імен SystemData, інформація SqlClient ви дізнаєтеся в главі 30

Деякі операції (наприклад, масове завантаження, асинхронне виконання і пакетні оновлення) допустимі тільки в тому випадку, коли зєднання виходить за межі локального контексту процесу Незважаючи на те що більша частина серверних засобів тепер інтегрована в SqlClient, існує маса класів для дуже важливих обєктів, які використовуються для серверної обробки, в просторі імен Microsoft SqlServer Server збірки SystemData Ці класи забезпечують підтримку спеціальних видів діяльності, необхідних тільки в контексті локального процесу Що дуже важливо – явне іменування підключення як the current context дозволяє доставляти результати та повідомлення клієнта і виконувати операції, використовуючи контекст поточного процесу

Інтеграція CLR в SQL Server відокремила серверний контекст процесу інтеграції Рада CLR від мережевого контексту виконання SqlClient поза процесом Одним з очіку

Даємо достоїнств такої ізоляції була можливість підтримки серверних курсорів на стороні сервера при одночасному усунення обмежень масштабованості серверних курсорів на стороні клієнта Випадково ця технологія виявилася такою, що якщо серверний курсор повинен підтримуватися програмним кодом інтеграції CLR, то він повинен бути представлений в просторі імен SqlClient Наслідком стало те, що серверний контекст виконання процесу був асимільований в SqlClient Розробникам довелося вносити істотні зміни в програму заднім числом Так що в Інтернеті і навіть в групах новин Microsoft циркулюють сотні прикладів, які були створені до внесення цих змін в архітектуру інтеграції CLR Якщо програмний код знайденого вами прикладу посилається на простір імен SystemData SqlServer, то це явно вказує на те, що він був написаний до виходу версії SQL Server 2005 RTM, тобто до внесення вищевказаних змін У циклі розробки середовища NET Framework 20 занадто пізно відбилося те, що компоненти інтеграції CLR були винесені в простір імен SystemData SqlClient Серверна обробка тепер представляє собою один з режимів SqlClient, який задається і розпізнається в рядку підключення:

Dim cnSQL As SQLConnection = _

New SQLConnection(&quotcontext connection=true&quot)

Поточне визначення контексту зєднання у просторі імен Microsoft SqlServer Server в Visual Studio 2005

Розробники часто використовують переваги роботи з програмним кодом прикладів Беручи до уваги те, що цикл бета-тестування SQL Server 2005 був, мабуть, найбільш масовим за всю історію, була створена величезна маса прикладів, що передує офіційного виходу в світ цієї версії продукту Весь цей програмний код залишається дієвим і корисним в більшості випадків, якщо розробник скоректує у разі необхідності посилання на простору імен Тільки в цьому випадку код прикладу зможе функціонувати

Клас Microsoft SqlServer Server SqlContext використовується для установки спеціалізованих серверних компонентів SQL Server Відкриття протоколу взаємодії із запитуваною додатком або клієнтом виконується за допомогою властивості SqlContext Pipe () Ця властивість використовується для переміщення результуючих множин і повідомлень з збережених процедур інтеграції CLR і запитуваних додатків SqlContext Pipe () містить метод Send, здатний повернути повідомлення (про це ми поговоримо трохи пізніше в цьому розділі): pPipeSend (SystemDataString) помилку:

pPipeSend (SystemDataSqlClientError) результуючий набір даних: pPipeSend (SystemDataSqlISqlReader) або рядок даних:

pPipeSend(SystemDataSqlISqlRecord)

залежно від аргументу, переданого методу

При поверненні результату метод Pipe Send може доставляти дані з вже виконаного запиту і створювати обєкт DataReader на наборі даних DataSet або посилати вже створений обєкт DataReader результуючого набору безпосередньо з бази даних

Комунікаційний канал призначений в основному для процедур і функцій, але в той же час може використовуватися для тригерів Як і у випадку з тригерами Т-SQL, відправлення повідомлень з підлеглих даними програм є потенційно ризикованою операцією, оскільки не існує способу перевірити, чи було отримано повідомлення

Обєкт SqlContext дозволяє отримати в тригерах корисну інформацію за допомогою властивості SqlContext TriggerContext () Ця властивість ідентифікує перерахування Microsoft SqlServer Server TriggerAction, яке викликало тригер DDL або DML

Одним з найбільших досягнень впровадження недовго проіснувало простору імен System Data SqlServer в простір імен System Data SqlClient стало скорочення числа різних технологій, необхідних для ефективної реалізації інтеграції CLR Тепер в просторі імен Microsoft SqlServer Server стало менше членів і зменшилася кількість обмежених контекстом підключення функцій Водночас засоби створення доступу до даних залишилися такими ж, незалежно від того, розгортається чи код на сервері або на іншому рівні додатку

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*