Linked Server Como Utilizar?

Bom galera,

Esses tempos precisei alterar um banco MySQL para o SQL Server e dai pensei como fazer isso de forma rápida?

Lembrei do Linked Server quando fiz curso de Adm. SQL Server. Na época não tinha visto como esse recurso pode facilitar nossa vida quando a necessidade é migração de dados entre bancos.

No curso admito que o instrutor somente mostrou conexão com outro banco SQL Server, onde até questionei se era para permitir a criação da replicação… o que não foi respondido corretamente e a dúvida persistiu.

Bom, vou escrever esse post em parte porque quero deixa-lo bem completo. Vou dividir nas seguintes partes:

  1. Para que server o Linked Server
  2. Link para downloads das ferramentas
  3. Como criar um LS para conectar em bancos MSSQL
  4. Como criar um LS para conectar em bancos MYSQL
  5. Como crar um LS via linha de comando (para os amantes de linha de comando = eu :D)
  6. Importado os dados

Para que server o Linked Server?

R= Cria-se uma camada de conexão com qualquer outro banco  que tenha o padrão SQL, permitindo gerar select/insert/update/delete nesse banco. Outra coisa que é possivel, repassar esses dados para um banco dentro do Sql server onde encontra-se o LS, ou seja importar tanto a tabela quando os dados.

Link para downloads das ferramentas

SQL Server

SQL Server 2005 Express – Serviço do Banco de Dados

SQL Server Management Studio Express – Gerenciamento do Banco de Dados

MySQL

MySQL Community Server – Serviço do Banco de Dados

MySQL Workbench (GUI Tool) – Gerenciamento do Banco de Dados

Conector/ODBC MySQL – Driver de conexão ODBC do Banco de Dados

Como crar um LS via linha de comando

Irei colocar a parte de linha de comando e depois colocou as utilizando a interface grafica ok!

MySQL

Galera antes de fazer isso certifique que você tenha o Driver ODBC do MySQL instalado na maquina onde você irá fazer a modificação


EXEC
master.dbo.sp_addlinkedserver @server = N‘MYSQL’, @srvproduct=N’MySQL’, @provider=N’MSDASQL’, @provstr=N’DRIVER={MySQL ODBC XXX Driver}; SERVER=HOST_DO_SERVIDOR; DATABASE=NOME_BANCO_DADOS; USER=USUARIO; PASSWORD=SENHA; OPTION=3′

onde:

sp_addlinkedserver é uma store procedure dentro do SQL Server que permite a conexão com outros bancos.

@server = Tipo do servidor: MYSQL, MSSQL

@srvproduct = Nome da conexão.

@provider = Tipo de conexão. MSDASQL é um conector padrão para acesso por Drivers

@provstr = String de conexão com os driver e seus parametros

No caso do MySQL os parametros são:

  • DRIVER = {MySQL ODBC XXX Driver}, onde XXX é a versão instalado
  • SERVER = Ip do servidor ou nome para conexão. Ex: mysql.seudominio.com.br
  • DATABASE = nome do banco de dados no MySQL
  • USER = usuario para conexão com permissão para acessar o banco externamente
  • PASSWORD = senha do usuario.
  • OPTION = Padrão 3

Importando os Dados

Bom agora que você criou a conexão pode testar importar os dados com a seguinte instrução SQL.

SELECT * INTO NOME_TABELA_LOCAL FROM OPENQUERY(NOME_DA_CONEXAO, ‘SELECT * FROM NOME_TABELA_REMOTA’)

onde:

NOME_TABELA_LOCAL = nome da tabela a ser criada no SQL Server e que irá armazenar os dados

NOME_DA_CONEXAO = Nome da conexão do Linked Server

NOME_TABELA_REMOTA = Nome da tabela do banco conectado pelo Linked Server

Anúncios

Gerando uma planilha formato XLS com PHP e MySql

Gostaria de me desculpar com a autora, pois quando postei acabei removendo sem intenção a AUTORIA. Mas está agora! 😀

Fonte: Flávia Jobstraibizer www.flaviajobs.com.br

——- >

Apesar de hoje existirem diversas formas de geração dinâmica de arquivos, ainda há casos em que precisamos enviá-los de forma rápida, para outras pessoas, sem correr o risco de gerar a incompatibilidade de formato. Tudo bem que hoje temos XML para conversar entre servidores e trafegar informações. Mas pense em precisar enviar para o seu chefe (que não manja nada de informática, claro), um relatorio com as vendas do mês. Ele provavelmente conhece o Excel®. Nada mais prático então, do que gerar para ele uma planilha do excel, dinâmica, onde ele mesmo pode clicar no link e gerar, tendo informações atualizadas todo o tempo.

É baseado em um relatório de vendas, um cenário muito comum das empresas.

Crie a base de dados chamada vendas (ou utilize a sua, efetuando as modificações correspondentes) de acordo com o modelo abaixo:

CREATE TABLE `vendas`
(`numerodopedido` INT( 3 ) UNSIGNED ZEROFILL NOT NULL ,
`vendedor` VARCHAR( 255 ) NOT NULL ,
`produto` VARCHAR( 255 ) NOT NULL ,
`precoproduto` DECIMAL( 10, 2 ) NOT NULL ,
`datadavenda` DATETIME NOT NULL ) ENGINE = MYISAM ;

De posse da tabela de uso, vamos inserir alguns registros (caso você ainda não os tenha):

INSERT INTO `vendas` ( `numerodopedido` , `vendedor` , `produto` , `precoproduto` , `datadavenda` ) VALUES ( ‘009’, ‘João da Silva’, ‘Microprocessador Pentium 4’, ‘145.50’, ‘2007-03-29 14:05:20’ ), ( ‘010’, ‘Maria de Souza’, ‘Placa mãe Asus’, ‘420.00’, ‘2007-03-29 14:05:47’ );

Agora que temos a base de dados e alguns dados a mostrar, vamos ver o que fazer com eles, para que seu chefe fique contente.

Criando o arquivo geraplanilha.php
Este arquivo conterá basicamente, tudo o que você precisa para: conectar-se ao banco, ler as informações presentes no mesmo, gerar o XLS e posteriormente gerar o arquivo para download.

Primeiro passo – Criando a conexão com o banco de dados:
<?php
define(db_host, “localhost”);
define(db_user, “user”);
define(db_pass, “passwd”);
define(db_link, mysql_connect(db_host,db_user,db_pass));
define(db_name, “my_database”);
mysql_select_db(db_name);

Segundo passo – Trazendo as informações da tabela vendas:
$select = “SELECT * FROM vendas ORDER BY datadavenda DESC”;
$export = mysql_query($select);
// aqui pego a quantidade de campos existentes na tabela, afim de formar a planilha
$fields = mysql_num_fields($export);

Terceiro passo – Recuperando os nomes dos campos. Eles também serão os nomes dos campos da planilha:
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($export, $i) . “\t”;
}

Quarto passo – Trazendo as informações encontradas em cada linha de registro do banco:

while($row = mysql_fetch_row($export)) {
$line = ”;
foreach($row as $value) {
if ((!isset($value)) OR ($value == “”)) {
$value = “\t”;
} else {
$value = str_replace(‘”‘, ‘””‘, $value);
$value = ‘”‘ . $value . ‘”‘ . “\t”;
}
$line .= $value;
}
// o trim retira os espaços encontrados no começo e no final de cada linha encontrada.
$dados .= trim($line).”\n”;
}
// substituindo todas as quebras de linha ao final de cada registro, que por padrão seria \r por uma valor em branco, para que a formatação fique legível
$dados= str_replace(“\r”,””,$dados);

Quinto passo – Tratamento básico de erro:
// Caso não encontre nenhum registro, mostra esta mensagem.
if ($dados== “”) {
$dados = “\n Nenhum registro encontrado!\n”;
}

Último passo – Cabeçalhos e instruções para geração e download do arquivo:
header(“Content-type: application/octet-stream”);
// este cabeçalho abaixo, indica que o arquivo deverá ser gerado para download (parâmetro attachment) e o nome dele será o contido dentro do parâmetro filename.
header(“Content-Disposition: attachment; filename=relatorio_vendas.xls”);
// No cache, ou seja, não guarda cache, pois é gerado dinamicamente
header(“Pragma: no-cache”);
// Não expira
header(“Expires: 0”);
// E aqui geramos o arquivo com os dados mencionados acima!
print “$header\n$dados”;
?>

 

PS: Espero que ajude e por favor escrevam p/ thiago.zampieri@gmail.com.