Uma das novidades do Biztalk Server 2009 está relacionado com a utilização do adaptador WCF para realizar acesso ao banco de dados SQL Server.
Nesse novo adaptador não é necessário criar instruções SQL utilizando a terminação FOR XML como nas versões anteriores do adaptador.
Para utilizar o WCF é necessário instalar alguns complementos do Biztalk Server:
• WCF LOB Adapter SDK SP2
Download• Microsoft BizTalk Adapter Pack 2.0
DownloadNeste artigo será mostrado como gerar um arquivo XML com os dados de uma tabela do SQL Server 2005 utilizando o WCF.
Banco de dados
1) No SQL Server 2005 crie uma tabela Vendedor em um Banco de dados denominado Vendas.

2) As colunas dessas tabelas são:

3) Preencha alguns dados na tabela do banco de dados.
Projeto Biztalk
1) Crie uma nova solução no Visual Studio 2008 nomeado WCFSQLAdapter
2) Clique com o botão direito sobre o nome do projeto no Solution Explorer e selecione Add -> Add Generated Items para acessar o menu com os templates relacionados ao projeto Biztalk

3) Selecione o template ConsumeAdapterService que é um wizard que permite configurar diferentes tipos de WCF.

4) Selecione o tipo de Binding relacionado ao SQL Server: sqlBinding

5) Clique no botão Configure para configurar as propriedades relacionados a conexão SQL Server
6) Na guia URI Properties configure as propriedades:
Server: Nome do Servidor SQL Server
Initial Catalog: Nome do Banco de dados do SQL Server

7) Clique no botão Connect para estabelecer a conexão com o banco de dados.
8) No menu à esquerda expanda a árvore e selecione a tabela Vendedor.
9) Selecione a operação Select e clique no botão Add.

10) Clique em Ok para confirmar a criação dos schemas que serão adicionados ao projeto. O wizard criará três arquivos:
Table.dbo.xsd: Schema referente a tabela Vendedor
TableOperation.dbo.Vendedor.xsd: Schema referente a operação Select utilizado pelo adaptador WCF
WcfSendPort_SqlAdapterBinding_Custom.bindinginfo.xml: Binding referente as configurações da porta WCF que será utilizado pelo Biztalk

11) Adicione um novo schema denominado Vendedor.xsd ao projeto Biztalk, que será utilizado como critério de pesquisa para trazer os dados do SQL Server.

12) Adicione um novo mapa denominado SchemaVendedorParaTabelaVendedor.btm ao projeto Biztalk, que será utilizado para mapear o schema de pesquisa para a cláusula Select que será utilizado para pesquisar os dados no banco de dados SQL Server.
13) Nesse mapeamento será incluído dois String Concatenate Functoids.

14) O valor do Functoid conectado ao elemento Columns é *.

15) O valor do outro functoid conectado entre os elementos Id e query possui a cláusula de pesquisa SQL Server “Where IdVendedor =”.

16) Adicione uma nova Orchestration denominado orchSelecionaVendedorPorId.odx. Essa orchestration receberá um arquivo XML com o ID a ser pesquisado e enviará para o SQL Server. O Biztalk receberá o resultado da pesquisa realizado no SQL Server e criará um arquivo XML contendo esse resultado.
As mensagens utilizadas na orchestration são:
- msgVendedorSchema: WCFSQLAdapter.Vendedor
- msgVendedorSelect: WCFSQLAdapter.TableOperation_dbo_Vendedor.Select
- msgVendedorSelectResponse:
WCFSQLAdapter.TableOperation_dbo_Vendedor.SelectResponse
As portas utilizadas na orchestration serão configuradas posteriormente no Biztalk Administration Console.
- FileIn: One-way Receiving
- FileOut: One-way Sending
SQLSelect: Request-Response Sending a Request and receiving a response

17) Configure uma chave WCFSQLAdapter.snk nas propriedades do projeto Biztalk.

18) Compile o projeto.
Configurando a porta WCF no Biztalk Administration Console
1) Crie uma nova aplicação denominado WCFSqlAdapter no Biztalk Administration Console
2) Adicione as bibliotecas WCFSqlAdapter.dll no Resources da aplicação.

3) Importe o binding através do arquivo WcfSendPort_SqlAdapterBinding_Custom.bindinginfo.xml que pode ser feito

4) Selecione a Send Port WcfSendPort_SqlAdapterBinding_TableOp_dbo_Vendedor_Custom com o botão direito e selecione Properties para configurar as suas propriedades.
5) Clique no botão Configure.

6) Configure as propriedades Action que contém o nome da operação utilizada na orchestration. Esse nome corresponde ao nome da porta lógica utilizada na orchestration.



7) Na guia Binding configure o nome do login e a senha utilizada para acessar o banco de dados SQL Server.

8) Clique em Ok para confirmar as configurações da porta WCF.
Configurando a porta Send File
1) No Biztalk Administration Console crie uma nova porta Send.
Propriedade Valor
Name FileOut
Type File
Send Pipeline XML Transmit

2) Clique no botão Configure. Na propriedade Destination Folder selecione o diretório físico onde serão exportados os arquivos XML com os resultados do SQL Server

Configurando a porta Receive File
1) No Biztalk Administration Console crie uma nova porta Receive.
2) Crie uma nova receive Location associado a essa porta Receive.
- Name: ReceiveLocation1
- Type: File
- Receive Pipeline: XMLReceive

3) Clique no botão Configure. Na propriedade Receive Folder selecione o diretório físico onde serão importados os arquivos XML com os critérios de pesquisa.

Configurando a orchestration
1) No Biztalk Administration Console configure a orchestration com as portas send e receive.
- Inbound Port: FileIn
- Outbound Ports: SQLSelect -> WcfSendPort_SqlAdapterBinding_TableOp_dbo_Vendedor_Custom
- Outbound Port:FileOut -> FileOut

Executando o aplicativo
1) Crie um arquivo Teste.xml e coloque no diretório físico relacionado ao receive location.

2) Após a execução, será gerado um arquivo XML no diretório físico relacionado ao send port

Conclusão
O adaptador WCF SQL Adapter não utiliza nenhuma cláusula SQL terminando por “FOR XML” para selecionar os dados como nas versões anteriores. As informações relacionadas as colunas da tabela são selecionadas diretamente no elemento columns do schema WCF. Podem ser seleciondas todas as colunas como demonstrada nesse exemplo através do String concatenate functoid com valor * ou definr quais são as colunas desejadas separando-as por vírgulas.
Os critérios de pesquisa são especificados diretamente no elemento Query do schema do WCF através da utilização de um String Concatenate Functoid.
O WCF SQL Adapter possui uma configuração mais detalhada do que a utilizada pelos adaptadores SQL das versões anteriores. Isso exige uma maior atenção ao configurá-lo para que funcione corretamente.
O código do exemplo pode ser baixado em: http://samplewcfsqlserver.codeplex.com/