Exécuter des opérations sur des tables et des vues avec des types de données volumineux dans SQL à l’aide du modèle de service WCF
L’adaptateur SQL permet aux clients d’adaptateur de lire et de mettre à jour des données dans des colonnes de types de données volumineux, c’est-à-dire varchar(max), nvarchar(max) ou varbinary(max). Pour lire les données de ces colonnes, les clients d’adaptateur peuvent utiliser l’opération Sélectionner. Pour insérer ou mettre à jour des données dans ces colonnes, l’adaptateur expose une opération Set<column_name> , où <column_name> est le nom de la colonne de type varchar(max), nvarchar(max) ou varbinary(max).
En outre, dans SQL Server, vous pouvez faire en sorte que la colonne varbinay(max) stocke des données non structurées telles que des documents texte et des images. Ces données non structurées sont appelées données FILESTREAM. Les données FILESTREAM peuvent être stockées sous forme de fichiers sur le système de fichiers. L’adaptateur SQL permet au client d’entrer des données FILESTREAM dans des colonnes de type varbinary(max). Le stockage FILESTREAM contient plus d’informations.
Cette rubrique fournit des informations sur certaines tâches que vous devez effectuer sur l’ordinateur exécutant SQL Server et sur l’ordinateur exécutant le client de l’adaptateur pour pouvoir insérer ou mettre à jour des données FILESTREAM. Cette rubrique fournit également des instructions sur l’exécutiond’opérations Set< column_name > pour insérer des données FILESTREAM.
Notes
Si vous effectuez une opération sur des tables qui ont des colonnes de types définis par l’utilisateur, veillez à vous reporter à Opérations sur les tables et les vues avec des types User-Defined à l’aide de l’adaptateur SQL.
Prérequis
Vous devez effectuer les tâches suivantes sur l’ordinateur exécutant SQL Server et sur l’ordinateur exécutant le client de l’adaptateur.
Sur l’ordinateur exécutant SQL Server
Vous devez activer FILESTREAM sur le SQL Server instance. Consultez Activer et configurer FILESTREAM.
Vous devez créer une base de données compatible FILESTREAM. Consultez Créer une base de données FILESTREAM-Enabled.
Vous devez disposer d’une table pour stocker les données FILESTREAM. Consultez Créer une table pour stocker des données FILESTREAM.
Sur l’ordinateur exécutant le client de l’adaptateur
- Le KIT DE développement logiciel (SDK) SQL Client Connectivity doit être installé. Vous pouvez installer le Kit de développement logiciel (SDK) SQL Client Connectivity en exécutant le SQL Server le programme d’installation et en sélectionnant SQL Client Connectivity SDK dans la page Sélection de fonctionnalités de l’Assistant. L’adaptateur utilise le sqlncli10.dll, installé avec le KIT DE développement logiciel (SDK) de connectivité du client SQL, pour effectuer des opérations FILESTREAM.
Une fois ces tâches terminées, vous êtes prêt à insérer ou à mettre à jour des données FILESTREAM dans SQL Server tables de base de données.
Comment cette rubrique illustre les opérations sur les types de données volumineux
Pour montrer comment effectuer des opérations Set<column_name> sur des tables avec des types de données volumineux, prenez une table, Records, qui a des colonnes ID et Document :
La table Records , avec toutes les données, est créée en exécutant le script SQL fourni avec les exemples. Pour plus d’informations, consultez Exemples d’adaptateurs.
La colonne Id est de type uniqueidentifier et accepte un GUID. Supposons que la colonne Id possède déjà un GUID « ».
438B7B4C-5491-409F-BCC1-78817C399EC3
La colonne Document est de type VARBINARY(MAX). Pour mettre à jour la colonne Document , l’adaptateur expose l’opération SetDocument .
Notes
Pour SQL Server, pour illustrer les opérations FILESTREAM, supposons que la colonne Document peut stocker des données FILESTREAM.
À propos des exemples utilisés dans cette rubrique
L’exemple de cette rubrique effectue des opérations sur la table Records . La table Records est créée en exécutant le script SQL fourni avec les exemples. Pour plus d’informations sur les exemples, consultez Exemples d’adaptateurs. Un exemple , Records_FILESTREAM_Op, basé sur cette rubrique, est également fourni avec les exemples d’adaptateur SQL.
Classe de client WCF
Le nom du client WCF généré pour les opérations sur les types de données volumineux que l’adaptateur SQL découvre est basé sur le nom de la table ou de la vue, comme indiqué dans le tableau suivant.
artefact de base de données SQL Server | Nom du client WCF |
---|---|
Table de charge de travail | TableOp_[Schéma]_[TABLE_NAME]Client |
Affichage | ViewOp_[Schéma]_[VIEW_NAME]Client |
[SCHEMA] = Collection d’artefacts SQL Server ; par exemple, dbo.
Signature de méthode pour les opérations d’appel sur des colonnes de types de données volumineux
Le tableau suivant montre les signatures de méthode pour les opérations de base sur une table. Les signatures sont les mêmes pour une vue, sauf que l’espace de noms et le nom de la vue remplacent ceux de la table.
Opération | Signature de méthode |
---|---|
Définir<column_name> | public void Set<column_name>(string Filter, byte[] Data) ; |
<> column_name = Nom de la colonne de type de données volumineuse.
À titre d’exemple, le code suivant montre les signatures de méthode pour une classe de client WCF générée pour l’opération SetDocument sur la table Records sous le schéma « dbo » par défaut.
public partial class TableOp_dbo_RecordsClient : System.ServiceModel.ClientBase<TableOp_dbo_Records>, TableOp_dbo_Records {
public void SetDocument (string Filter, byte[] Data);
}
Dans cet extrait de code, TableOp_dbo_RecordsClient est le nom de la classe WCF dans le fichier SqlAdapterBindingClient.cs généré par le plug-in Add Adapter Service Reference.
Paramètres pour les opérations sur les colonnes de types de données volumineux
Cette section fournit les paramètres requis par l’opération Définir<column_name> .
Nom du paramètre | Description |
---|---|
string Filter | Spécifie la clause WHERE en fonction de laquelle l’adaptateur met à jour l’enregistrement pour la colonne de type de données volumineuse. |
byte[] Données | Spécifie la valeur qui doit être mise à jour pour la colonne de type de données volumineuse. |
L’opération Définir<column_name> ne retourne aucune valeur.
Création d’un client WCF pour appeler des opérations sur des colonnes de types de données volumineux
L’ensemble générique d’actions requis pour effectuer une opération sur SQL Server à l’aide d’un client WCF implique un ensemble de tâches décrites dans Vue d’ensemble du modèle de service WCF avec l’adaptateur SQL. Cette section explique comment créer un client WCF pour appeler l’opération SetDocument sur la table Records . L’adaptateur expose l’opération SetDocument pour mettre à jour des données dans des colonnes de types de données volumineux.
Pour créer un client WCF
Créez un projet Visual C# dans Visual Studio. Pour cette rubrique, créez une application console.
Générez la classe de client WCF pour l’opération SetDocument sur la table Records . Pour plus d’informations sur la génération d’une classe de client WCF, consultez Générer un client WCF ou un contrat de service WCF pour SQL Server Artifacts.
Dans le Explorateur de solutions, ajoutez une référence à
Microsoft.Adapters.Sql
,Microsoft.ServiceModel.Channels
etSystem.Transactions
.Ouvrez le fichier Program.cs et ajoutez l’espace de
System.Transactions
noms.Dans Program.cs, créez un client comme décrit dans l’extrait de code ci-dessous.
TableOp_dbo_RecordsClient client = new TableOp_dbo_RecordsClient("SqlAdapterBinding_TableOp_dbo_Records"); client.ClientCredentials.UserName.UserName = ""; client.ClientCredentials.UserName.Password = "";
Dans cet extrait de code,
TableOp_dbo_RecordsClient
est le client WCF défini dans SqlAdapterBindingClient.cs. Ce fichier est généré par le plug-in Add Adapter Service Reference.SqlAdapterBinding_TableOp_dbo_Records
est le nom de la configuration du point de terminaison client et est défini dans le app.config. Ce fichier est également généré par le plug-in Add Adapter Reference Service et contient les propriétés de liaison et d’autres paramètres de configuration.Attention
Pour effectuer des opérations sur les données FILESTREAM, vous devez toujours vous connecter à SQL Server à l’aide de Authentification Windows. Pour vous connecter à l’aide de Authentification Windows, vous devez fournir un nom d’utilisateur et un mot de passe vides, comme indiqué dans l’extrait de code précédent. En outre, avant d’utiliser Authentification Windows pour vous connecter à SQL Server, vous devez avoir effectué les étapes mentionnées dans Se connecter à SQL Server à l’aide de l’authentification Windows avec l’adaptateur SQL.
Notes
Dans cet extrait de code, vous utilisez la liaison et l’adresse de point de terminaison du fichier de configuration. Vous pouvez également spécifier explicitement ces valeurs dans votre code. Pour plus d’informations sur les différentes façons de spécifier la liaison de client, consultez Configurer une liaison cliente pour l’adaptateur SQL.
Ouvrez le client comme décrit dans l’extrait de code ci-dessous :
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }
Appelez l’opération SetDocument sur la table Records .
Attention
Les opérations Set<column_name> doivent toujours être effectuées dans une transaction. Pour cela, l’opération Set<column_name> doit être appelée dans une étendue de transaction et la propriété de liaison UseAmbientTransaction doit avoir la valeur true dans le 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(); }
Ici, l’application convertit la chaîne « Sample data » en une chaîne encodée en base64 et la met à jour dans l’enregistrement qui répond aux critères de filtre.
Fermez le client comme décrit dans l’extrait de code ci-dessous :
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();
Générez le projet, puis exécutez-le. L’application met à jour la colonne Document dans la table Records .
Voir aussi
Développer des applications en utilisant le modèle de service WCF