In-Process Access to the XML Data Type Column




Before looking at an example, it is important to understand the CLR integration features of SQL Server
2005. One of the excellent features of SQL Server 2005 is the integration with the .NET CLR (Common
Language Runtime). The integration of CLR with SQL Server 2005 extends the capability of SQL Server
in several important ways. In previous versions of SQL Server, database programmers were limited to
using T-SQL when writing code on the server side. With CLR integration, database developers can now
perform tasks that were impossible or difficult to achieve with Transact-SQL alone. Both Visual Basic
.NET and C# are modern programming languages offering full support for arrays, structured exception
handling, and collections. Developers can leverage CLR integration to write code that has more complex
logic and is more suited for computation tasks using languages such as VB.NET and C#. Both VB.NET
and C# offer object-oriented capabilities such as encapsulation, inheritance, and polymorphism.

Advantages of CLR Integration

Managed code is better suited than Transact-SQL for number crunching and compli-
cated execution logic, and features extensive support for many complex tasks,
including string handling and regular expressions. With the functionality found in
the .NET Framework Base Class Library (BCL), database developers now have access
to thousands of pre-built classes and routines which can be easily accessed from any
stored procedure, trigger, or user-defined function. The BCL includes classes that
provide functionality for improved string functioning, advanced math operations,
file access, cryptography, and more. Although many of these classes are available for
use from within SQL CLR code, those that are not appropriate for server-side use
(for example, windowing classes) are not available.
Another benefit of managed code is type safety. Before managed code is executed,
the CLR verifies that the code is safe. This process is known as “verification.”
During verification, the CLR performs several checks to ensure that the code is safe
to run. For example, the code is checked to ensure that no memory is read that has
not been written to. The CLR will also prevent buffer overflows. By default, both
Visual Basic .NET and C# always produce safe code; however, C# programmers have
the option of using the unsafe keyword to produce unsafe code that, for example,
directly accesses memory.

For the purposes of this example, consider the

Employee table that has been used in the previous
examples.

CREATE TABLE Employee (id int primary key, xml_data xml( EmployeeSchema))

Listing 10-3 illustrates how the XML data type can be accessed from the in-proc provider. The context
connection allows you to execute SQL statements in the same context that the CLR code was invoked.
For out-of-proc access, a new connection to the database must be established.

Listing 10-3: Accessing an XML Data Type Column Using In-Proc

using System;
using System.Data;

using System.Data.SqlClient;
learn guitarphysics learnteliphonyxmlphysicsenjoylife