ExecuteReader, ExecuteScalar o ExecuteNonQuery operations in SQL usando BizTalk Server
L'adapter SQL espone operazioni di SQL Server generiche, ad esempio ExecuteNonQuery, ExecuteReader e ExecuteScalar. È possibile usare queste operazioni per eseguire qualsiasi istruzione SQL in un database SQL Server. Queste operazioni differiscono in base al tipo di risposta che si ottiene per l'istruzione SQL. Per altre informazioni su come supporta queste operazioni, vedere Supporto per ExecuteNonQuery, ExecuteReader e ExecuteScalar Operations.
Questo argomento illustra come eseguire un'operazione ExecuteReader usando l'adapter SQL con BizTalk Server. È possibile seguire lo stesso set di procedure descritte in questo argomento per eseguire operazioni ExecuteNonQuery e ExecuteScalar .
Prerequisiti
Creare un file di chiave con nome sicuro e apprendere gli strumenti
Configurare MSDTC nei computer che eseguono l'adapter SQL e SQL Server.
Richiamare l'operazione ExecuteReader in un database di SQL Server
L'esecuzione di un'operazione in un database SQL Server tramite l'adattatore SQL con BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per sviluppare applicazioni BizTalk con l'adapter SQL. Per richiamare l'operazione ExecuteReader in SQL Server, queste attività sono:
Creare un progetto BizTalk e generare lo schema per l'operazione ExecuteReader .
Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi da SQL Server.
Creare un'orchestrazione per richiamare l'operazione in SQL Server.
Compilare e distribuire il progetto BizTalk.
Configurare l'applicazione BizTalk creando porte di invio e ricezione fisiche.
Avviare l'applicazione BizTalk.
In questo argomento vengono fornite istruzioni per eseguire queste attività.
Generare schema
Questo argomento illustra come richiamare l'operazione ExecuteReader in SQL Server usando l'adapter SQL con BizTalk Server. L'operazione ExecuteReader accetta qualsiasi istruzione SQL come parametro e restituisce il set di risultati per l'operazione come matrice di DataSet. Questo argomento illustra come eseguire la stored procedure ADD_EMP_DETAILS usando l'operazione ExecuteReader . Questa stored procedure aggiunge un record alla tabella Employee e restituisce l'ID per il nuovo dipendente aggiunto. Le tabelle e le stored procedure usate nell'argomento vengono create eseguendo gli script forniti con gli esempi. Per altre informazioni sullo script, vedere Esempi per l'adapter SQL.
Per illustrare come richiamare l'operazione ExecuteReader , lo schema viene generato per l'operazione ExecuteReader . Per generare lo schema, è necessario creare un progetto BizTalk e usare il componente aggiuntivo Utilizzo servizio adapter. Per altre informazioni su come generare schemi, vedere Recupero di metadati per SQL Server operazioni in Visual Studio usando l'adapter SQL.
Definire messaggi e tipi di messaggio
Lo schema generato in precedenza descrive i "tipi" necessari per i messaggi nell'orchestrazione. Un messaggio è in genere una variabile, il tipo per cui è definito dallo schema corrispondente. Creare ora messaggi per l'orchestrazione e collegarli agli schemi generati nel passaggio precedente.
Aggiungere un'orchestrazione al progetto BizTalk. Da Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto BizTalk, scegliere Aggiungi e quindi fare clic su Nuovo elemento. Digitare un nome per l'orchestrazione BizTalk e quindi fare clic su Aggiungi.
Aprire la finestra Visualizzazione orchestrazione del progetto BizTalk, se non è già aperta. A tale scopo, fare clic su Visualizza, scegliere Altre finestre e quindi fare clic su Visualizzazione orchestrazione.
In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi e quindi scegliere Nuovo messaggio.
Fare clic con il pulsante destro del mouse sul messaggio appena creato e quindi selezionare Finestra proprietà.
Nel riquadro Proprietà per il Message_1 eseguire le operazioni seguenti:
Usare Per Identificatore Digitare Request
Tipo di messaggio Nell'elenco a discesa espandere Schemi e quindi selezionare Execute_Reader.GenericOperation.ExecuteReader, dove Execute_Reader è il nome del progetto BizTalk. GenericOperation è lo schema generato per l'operazione ExecuteReader . Ripetere il passaggio 2 per creare un nuovo messaggio. Nel riquadro Proprietà per il nuovo messaggio eseguire le operazioni seguenti:
Usare Per Identificatore Digitare Response
Tipo di messaggio Nell'elenco a discesa espandere Schemi e quindi selezionare Execute_Reader.GenericOperation.ExecuteReaderResponse.
Configurare l'orchestrazione
Creare un'orchestrazione BizTalk per usare BizTalk Server per eseguire un'operazione in SQL Server. In questa orchestrazione si rilascia un messaggio di richiesta in una posizione di ricezione definita. L'adattatore SQL usa questo messaggio e lo passa a SQL Server. La risposta da SQL Server viene salvata in un'altra posizione. È necessario includere le forme Invia e Ricezione per inviare messaggi a SQL Server e per ricevere rispettivamente risposte. Un'orchestrazione di esempio per richiamare un'operazione ExecuteReader è simile alla seguente:
Aggiungere forme di messaggio
Immettere le proprietà seguenti per ognuna delle forme del messaggio. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nell'orchestrazione appena menzionata.
Forma | Tipo di forma | Proprietà |
---|---|---|
ReceiveMessage | Ricevere | - Impostare nome su ReceiveMessage - Impostare Attiva su True |
SendMessage | Send | - Impostare nome su SendMessage |
ReceiveResponse | Ricevere | - Impostare nome su ReceiveResponse - Impostare Attiva su False |
SendResponse | Send | - Impostare nome su SendResponse |
Aggiungere porte
Assicurarsi di specificare le proprietà seguenti per ognuna delle porte logiche. I nomi elencati nella colonna Porta sono i nomi delle porte visualizzate nell'orchestrazione.
Porta | Proprietà |
---|---|
MessageIn | - Impostare identificatore su MessageIn - Impostare tipo su MessageInType - Impostare il modello di comunicazionesu unidirezionale - Impostare la direzione di comunicazione su Ricezione |
LOBPort | - Impostare identificatore su LOBPort - Impostare tipo su LOBPortType - Impostare il modello di comunicazione su Request-Response - Impostare la direzione di comunicazione su Send-Receive |
ResponseOut | - Impostare identificatore su ResponseOut - Impostare tipo su ResponseOutType - Impostare il modello di comunicazionesu unidirezionale - Impostare la direzione di comunicazione su Invia |
Immettere i messaggi per le forme di azione e connetterli alle porte
La tabella seguente specifica le proprietà e i relativi valori che è necessario impostare per specificare i messaggi per le forme di azione e collegare i messaggi alle porte. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nella orchestrazione menzionata in precedenza.
Forma | Proprietà |
---|---|
ReceiveMessage | - Impostare messaggio su richiesta - Impostare l'operazione su MessageIn.ExecuteReader.Request |
SendMessage | - Impostare messaggio su richiesta - Impostare l'operazione su LOBPort.ExecuteReader.Request |
ReceiveResponse | - Impostare messaggio su risposta - Impostare l'operazione su LOBPort.ExecuteReader.Response |
SendResponse | - Impostare messaggio su risposta - Impostare l'operazione su ResponseOut.ExecuteReader.Request |
Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e l'orchestrazione è stata completata.
È ora necessario compilare la soluzione BizTalk e distribuirla in BizTalk Server. Per altre informazioni, vedere Creazione e esecuzione di orchestrazioni.
Configurare l'applicazione BizTalk
Dopo aver distribuito il progetto BizTalk, l'orchestrazione creata in precedenza è elencata nel riquadro Orchestrazioni nella console di amministrazione di BizTalk Server. È necessario usare la console di amministrazione BizTalk Server per configurare l'applicazione. Per altre informazioni sulla configurazione di un'applicazione, vedere Procedura dettagliata: Distribuzione di un'applicazione BizTalk di base.
La configurazione di un'applicazione comporta:
Selezione di un host per l'applicazione.
Mapping delle porte create nell'orchestrazione alle porte fisiche nella console di amministrazione di BizTalk Server. Per questa orchestrazione è necessario:
Definire un percorso sul disco rigido e una porta file corrispondente in cui verrà visualizzato un messaggio di richiesta. L'orchestrazione BizTalk utilizzerà il messaggio di richiesta e lo invierà al database di SQL Server.
Definire un percorso sul disco rigido e una porta file corrispondente in cui l'orchestrazione BizTalk rilascia il messaggio di risposta contenente la risposta dal database di SQL Server.
Definire una porta di trasmissione fisica WCF-Custom o WCF-SQL per inviare messaggi al database di SQL Server. È anche necessario specificare l'azione nella porta di invio. Per informazioni su come creare porte, vedere Configurare manualmente un'associazione di porte fisiche all'adapter SQL.
Nota
La generazione dello schema usando il componente aggiuntivo Del progetto BizTalk del servizio adapter crea anche un file di associazione contenente informazioni sulle porte e sulle azioni da impostare per tali porte. È possibile importare questo file di associazione dalla console di amministrazione di BizTalk Server per creare porte di invio (per le chiamate in uscita) o le porte di ricezione (per le chiamate in ingresso). Per altre informazioni, vedere Configurare un'associazione di porte fisiche usando un file di associazione di porte per l'uso dell'adapter SQL.
Avviare l'applicazione
Avviare l'applicazione BizTalk per richiamare l'operazione ExecuteReader nel database SQL Server. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione.
In questa fase assicurarsi di:
La porta di ricezione FILE per ricevere messaggi di richiesta per l'orchestrazione è in esecuzione.
La porta di invio FILE per ricevere i messaggi di risposta dall'orchestrazione è in esecuzione.
La porta di trasmissione WCF-Custom o WCF-SQL per inviare messaggi al database SQL Server è in esecuzione.
L'orchestrazione BizTalk per l'operazione è in esecuzione.
Eseguire l'operazione
Dopo aver eseguito l'applicazione, è necessario eliminare un messaggio di richiesta nel percorso di ricezione FILE. Lo schema per il messaggio di richiesta deve essere conforme allo schema per l'operazione ExecuteReader generata in precedenza. Ad esempio, il messaggio di richiesta per richiamare il ADD_EMP_DETAILS usando un'operazione ExecuteReader è:
<ExecuteReader xmlns="http://schemas.microsoft.com/Sql/2008/05/GenericTableOp/">
<Query>EXEC ADD_EMP_DETAILS Tom,Manager,100000</Query>
</ExecuteReader>
Per altre informazioni sullo schema del messaggio per richiamare un'operazione ExecuteNonQuery, ExecuteReader e ExecuteScalar, vedere Schemi di messaggio di richiesta per richiamare un'operazione ExecuteReader usando l'adapter SQL.
Nota
All'interno del <Query>
tag è possibile specificare più istruzioni SQL separate da un punto e virgola.
L'orchestrazione usa il messaggio e lo invia al database di SQL Server. La risposta dal database SQL Server viene salvata nell'altra posizione FILE definita come parte dell'orchestrazione. La risposta per l'operazione ExecuteReader contiene un set di risultati come matrice DataSet. Ad esempio, la risposta dal database di SQL Server per il messaggio di richiesta precedente è:
<?xml version="1.0" encoding="utf-8" ?>
<ExecuteReaderResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/GenericTableOp/">
<ExecuteReaderResult>
<DataSet xmlns="http://schemas.datacontract.org/2004/07/System.Data">
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element msdata:IsDataSet="true" name="NewDataSet">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Employee_ID" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<NewTable>
<Employee_ID>10767</Employee_ID>
</NewTable>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
</ExecuteReaderResult>
</ExecuteReaderResponse>
Nella risposta 10767 è l'ID del dipendente appena creato.
Procedure consigliate
Dopo aver distribuito e configurato il progetto BizTalk, è possibile esportare le impostazioni di configurazione in un file XML denominato file di associazione. Dopo aver generato un file di associazione, è possibile importare le impostazioni di configurazione dal file, in modo che non sia necessario creare elementi come le porte di invio e le porte di ricezione per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni degli adattatori.