Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El adaptador de SQL permite a los clientes del adaptador leer y actualizar datos en columnas de tipos de datos grandes, es decir, varchar(max), nvarchar(max) o varbinary(max). Para leer datos de estas columnas, los clientes del adaptador pueden usar la operación Seleccionar. Para insertar o actualizar datos en estas columnas, el adaptador expone una operación Set<column_name> , donde <column_name> es el nombre de la columna de tipo varchar(max), nvarchar(max) o varbinary(max).
Además, en SQL Server, puede hacer que la columna varbinay(max) almacene datos no estructurados, como documentos de texto e imágenes. Estos datos no estructurados se denominan datos FILESTREAM. Los datos FILESTREAM se pueden almacenar como archivos en el sistema de archivos. El adaptador de SQL permite al cliente escribir datos FILESTREAM en columnas de tipo varbinary(max). El almacenamiento FILESTREAM tiene más información.
En este tema se proporciona información sobre determinadas tareas que debe realizar en el equipo que ejecuta SQL Server y el equipo que ejecuta el cliente del adaptador para poder insertar o actualizar datos FILESTREAM. En este tema también se proporcionan instrucciones sobre cómo realizar operaciones set<column_name> para insertar datos FILESTREAM.
Nota:
Si está realizando operaciones en tablas que tienen columnas de tipos definidos por el usuario, asegúrese de hacer referencia a Operaciones en tablas y vistas con User-Defined Tipos mediante el adaptador de SQL.
Prerrequisitos
Debe realizar las siguientes tareas en el equipo que ejecuta SQL Server y el equipo que ejecuta el cliente del adaptador.
En el equipo que ejecuta SQL Server
Debe habilitar FILESTREAM en la instancia de SQL Server. Consulte Habilitar y configurar FILESTREAM.
Debe crear una base de datos habilitada para FILESTREAM. Consulte Creación de una base de datos de FILESTREAM-Enabled.
Debe tener una tabla para almacenar datos FILESTREAM. Consulte Crear una tabla para almacenar datos FILESTREAM,
En el equipo que ejecuta el cliente del adaptador
- Debe tener instalado el SDK de conectividad de cliente de SQL. Puede instalar el SDK de conectividad de cliente SQL ejecutando el programa de instalación de SQL Server y seleccionando SQL Client Connectivity SDK en la página de Selección de características del asistente. El adaptador utiliza el sqlncli10.dll, que se instala con el SDK de Conectividad del Cliente de SQL, para realizar operaciones de FILESTREAM.
Una vez completadas estas tareas, todos están configurados para insertar o actualizar datos FILESTREAM en tablas de base de datos de SQL Server.
Cómo este tema demuestra las operaciones con grandes tipos de datos
Para demostrar cómo realizar operaciones set<column_name> en tablas con tipos de datos de gran tamaño, tome una tabla, Registros, que tenga columnas Id y Document:
La tabla Registros , con todos los datos, se crea mediante la ejecución del script SQL proporcionado con los ejemplos. Para obtener más información, consulte Ejemplos de adaptador.
La columna Id es de tipo uniqueidentifier y acepta un GUID. Supongamos que la columna Id ya tiene un GUID "
438B7B4C-5491-409F-BCC1-78817C399EC3".La columna Document es de tipo VARBINARY(MAX). Para actualizar la columna Documento , el adaptador expone la operación SetDocument .
Nota:
Para SQL Server, para demostrar las operaciones FILESTREAM, supongamos que la columna Document puede almacenar datos FILESTREAM.
Acerca de los ejemplos usados en este tema
En el ejemplo de este tema se realizan operaciones en la tabla Registros . La tabla Records se crea mediante la ejecución del script SQL proporcionado con los ejemplos. Para obtener más información sobre los ejemplos, vea Ejemplos de adaptador. También se proporciona un ejemplo, Records_FILESTREAM_Op, que se basa en este tema, con los ejemplos del adaptador de SQL.
La clase de cliente WCF
El nombre del cliente WCF generado para las operaciones en tipos de datos grandes que detecta el adaptador de SQL se basa en el nombre de la tabla o vista, como se muestra en la tabla siguiente.
| Elemento de base de datos de SQL Server | Nombre de cliente de WCF |
|---|---|
| Tabla | TableOp_[Schema]_[TABLE_NAME]Client |
| Vista | ViewOp_[Schema]_[VIEW_NAME]Client |
[SCHEMA] = Colección de artefactos de SQL Server; por ejemplo, dbo.
Firma de método para invocar operaciones en columnas de tipos de datos grandes
En la tabla siguiente se muestran las firmas de método para las operaciones básicas de una tabla. Las firmas son las mismas para una vista, salvo que el espacio de nombres de la vista y el nombre reemplazan a los de la tabla.
| Operación | Firma de método |
|---|---|
| Establecer<column_name> | public void Set<column_name>(string Filter, byte[] Data); |
< > column_name = Nombre de la columna de tipo de datos grande.
Por ejemplo, en el código siguiente se muestran las firmas de método para una clase de cliente WCF generada para la operación SetDocument en la tabla Records en el esquema "dbo" predeterminado.
public partial class TableOp_dbo_RecordsClient : System.ServiceModel.ClientBase<TableOp_dbo_Records>, TableOp_dbo_Records {
public void SetDocument (string Filter, byte[] Data);
}
En este fragmento de código, TableOp_dbo_RecordsClient es el nombre de la clase WCF en el SqlAdapterBindingClient.cs generado por el complemento Agregar referencia de servicio de adaptador.
Parámetros para operaciones en columnas de tipos de datos grandes
En esta sección se proporcionan los parámetros necesarios para la operación Set<column_name> .
| Nombre del parámetro | Descripción |
|---|---|
| filtro de cadena | Especifica la cláusula WHERE en función de la cual el adaptador actualiza el registro de la columna de tipo de datos grande. |
| byte[] Datos | Especifica el valor que se debe actualizar para la columna de tipo de datos de gran tamaño. |
La operación Set<column_name> no devuelve ningún valor.
Creación de un cliente WCF para invocar operaciones en columnas de tipos de datos grandes
El conjunto genérico de acciones necesarias para realizar una operación en SQL Server mediante un cliente WCF implica un conjunto de tareas descritas en Información general del modelo de servicio WCF con el adaptador de SQL. En esta sección se describe cómo crear un cliente WCF para invocar la operación SetDocument en la tabla Records . El adaptador expone la operación SetDocument para actualizar datos en columnas de tipos de datos grandes.
Para crear un cliente WCF
Cree un proyecto de Visual C# en Visual Studio. Para este tema, cree una aplicación de consola.
Genere la clase de cliente WCF para la operación SetDocument en la tabla Records . Para obtener más información sobre cómo generar una clase de cliente WCF, vea Generar un cliente WCF o un contrato de servicio WCF para artefactos de SQL Server.
En el Explorador de soluciones, agregue referencia a
Microsoft.Adapters.Sql,Microsoft.ServiceModel.ChannelsySystem.Transactions.Abra el archivo Program.cs y agregue el
System.Transactionsespacio de nombres.En el Program.cs, cree un cliente como se describe en el fragmento de código siguiente.
TableOp_dbo_RecordsClient client = new TableOp_dbo_RecordsClient("SqlAdapterBinding_TableOp_dbo_Records"); client.ClientCredentials.UserName.UserName = ""; client.ClientCredentials.UserName.Password = "";En este fragmento de código,
TableOp_dbo_RecordsClientes el cliente WCF definido en SqlAdapterBindingClient.cs. El complemento Add Adapter Service Reference (Agregar referencia de servicio de adaptador) genera este archivo.SqlAdapterBinding_TableOp_dbo_Recordses el nombre de la configuración del punto de conexión de cliente y se define en el app.config. El complemento Agregar referencia del servicio de adaptador también genera este archivo y contiene las propiedades de enlace y otras opciones de configuración.Precaución
Para realizar operaciones en datos FILESTREAM, siempre debe conectarse a SQL Server mediante la autenticación de Windows. Para conectarse mediante la autenticación de Windows, debe proporcionar un nombre de usuario y una contraseña vacíos, como se muestra en el fragmento de código anterior. Además, antes de usar la autenticación de Windows para conectarse a SQL Server, debe haber realizado los pasos mencionados en Conexión a SQL Server mediante la autenticación de Windows con el adaptador de SQL.
Nota:
En este fragmento de código, usará la dirección de enlace y punto de conexión del archivo de configuración. También puede especificar explícitamente estos valores en el código. Para obtener más información sobre las distintas formas de especificar el enlace de cliente, vea Configurar un enlace de cliente para el adaptador de SQL.
Abra el cliente como se describe en el fragmento de código siguiente:
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }Invoque la operación SetDocument en la tabla Registros .
Precaución
Las operaciones Set<column_name> siempre deben realizarse en una transacción. Para asegurarse de ello, la operación Set<column_name> debe invocarse dentro de un ámbito de transacción y la propiedad de enlace UseAmbientTransaction debe establecerse en true en el app.config.
using (TransactionScope tx = new TransactionScope()) { string filter = "WHERE Id='438B7B4C-5491-409F-BCC1-78817C399EC3'"; byte[] data = ASCIIEncoding.ASCII.GetBytes("Sample data"); client.SetDocument(filter, data); tx.Complete(); }Aquí, la aplicación convierte la cadena "Datos de ejemplo" en una cadena codificada en base64 y la actualiza en el registro que satisface los criterios de filtro.
Cierre el cliente como se describe en el fragmento de código siguiente:
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();Compile el proyecto y ejecútelo. La aplicación actualiza la columna Documento de la tabla Registros .