none
Delphi - Como conectar numa base MDF/LDF (SQL Server Express) com o minimo possível? RRS feed

  • Pergunta

  • Como conectar numa base MDF/LDF (SQL Server Express) com o minimo possível?

    Preciso conectar sistema (desenvolvido em Delphi) ao banco de dados MDF/LDF (SQL Server) sem ter que instalar SQL Server. Simplesmente ter o seguinte processo... mandar executável, com banco de dados, alguns drivers do SQL Server,  abrir a aplicação que deverá se conectar na base de dados (numa pasta especifica). E pronto. 

    Vi que poderia usar o LocalDB, mas  a documentação sobre isso aborda somente o uso no Visual Studio(C#, etc). No Firebird 3.0, com apenas 9 MB. Eu faria todo processo de conexão de forma muito simples. Não estou comparando banco de dados, mas abordando simplicidade no processo de conexão.

    Detalhe: 
    Os componentes de acesso que utilizamos no Delphi (Seattle), é o FireDAC (nativo).

    O que ocorre: 
    Quando precisamos instalar em outro PC, tem que baixar a versão básica do Express (que é no minimo 280 MB de download). O usuario comum ter que baixar, instalar e configurar SQL Server. E eles não sabem fazer isso (até aí, tudo bem, normal). Dai temos que conectar no usuário via TeamViewer e fazer todo processo remotamente. Preciso automarizar esse processo. 

    Duvida inicial:
    LocalDB, seria uma forma viável nesse caso? Com fazer isso no Delphi, usando FireDAC?


    • Editado Adriano2016 sexta-feira, 5 de agosto de 2016 14:11
    sexta-feira, 5 de agosto de 2016 13:41

Respostas

  • Pessoal, encontrei solução!!

    Link imagem exemplo: http://imgur.com/a/g5gA6


    Após muitas pesquisas nas madrugadas, encontrei outro caminho, na propria documentação do componente (Delphi) FireDAC (na seção "Connect to LocalDB and attach database file:"):
    http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic&frmfile=Connect_to_Microsoft_SQL_Server.html


    No caso, estou usando "Delphi 10 Seattle", testado no SQL Server 2014 Express. Atenção, eu já tinha um banco de dados criado anteriormente, via "Microsoft SQL Server Management Studio" (SQL Server 2014 Express). Por isso, será necessário apenas informar o local do arquivo MDF existente.


    OS PASSOS PARA RESOLVER:

    1 - Instalar "SqlLocalDB.msi" (automaticamente cria uma instancia "MSSQLLocalDB")

    2 -[Já no Delphi] Com código-fonte/projeto aberto, no componente "TFDConnection",  na propriedade "Params", informei (no meu sistema):

    DriverID=MSSQL
    Server=(localdb)\MSSQLLocalDB
    Database=ERPDB
    ODBCAdvanced=AttachDbFileName=D:\[Projeto2016]\db\ERPDB.mdf

    3 - Ativei propriedade "Connected" para "True", e pronto. Conectou!!!

    Detalhes:
    Não se preocupe se a instancia "MSSQLLocalDB", estiver parada. A própria aplicação (no caso do teste, o próprio Delphi, inclusive) ao tentar fazer conexao com a base de dados, irá iniciar (automaticamente) a instancia "MSSQLLocalDB" (ficará ativa).

    Instalei o "SQL Server Management Studio" (somente o "Management Studio", puro, sem qualquer outro mecanimo), do SQL Server 2016 Express, e abriu o banco de dados normalmente (edita tabelas, registros, procedures, e tudo mais).

    Espero que essas dicas ajudem outros Desenvolvedores Delphi, que necessitem instalar o minimo do SQL Server, apenas para se conectar ao MDF (banco de dados). O "SqlLocalDB.msi" resolve tudo isso de forma muito simples e direta, sem precisar de qualquer outro mecanimo!

    Valeu!


    domingo, 7 de agosto de 2016 05:04

Todas as Respostas

  • Bom dia.

    Você consegue configurar o SQL Server para realizar uma instalação do Database Enginer como não assistida, ou seja, uma instalação automática.

    Segue link para auxilio:

    https://msdn.microsoft.com/pt-br/library/dd239405.aspx

    sexta-feira, 5 de agosto de 2016 13:46
  • Segue um segundo link para auxilio na configuração do Arquivo de instalação não assistida.

    https://social.technet.microsoft.com/Forums/pt-BR/e5c8f413-7c3a-45cd-a620-11e3b04f5113/instalao-automtica-no-assistida?forum=sqlserver2005pt

    sexta-feira, 5 de agosto de 2016 13:48
  • Thiago, entendi sua ideia. Porem, ainda não é o que procuro... pq veja bem, baixar todo pacote de instalação (quantos megas ou gigas vai dar isso?) e isso um usuario comum não saberá fazer. Ou mesmo que eu coloque sua ideia num instalador, imagine o tamanho desse instalador!

    Penso em algo tipo "SqlLocalDB". Pequeno, simples. Porem não sei como integrar usando Delphi. Ou se houver outra forma, que simplifique.


    • Editado Adriano2016 sexta-feira, 5 de agosto de 2016 18:42 Complemento
    sexta-feira, 5 de agosto de 2016 18:31
  • Boa tarde,

    Nunca testei, mas pela página abaixo é possível fazer a conexão com o FireDAC utilizando o SQL Server Native Client 11.0:

    http://docwiki.embarcadero.com/RADStudio/Seattle/en/Connect_to_Microsoft_SQL_Server_(FireDAC)

    Mas acredito que seria interessante fazer tentativas com o SQL Server ODBC Driver já que não haverão novas atualizações do Native Client.

    Espero que seja útil


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex sexta-feira, 5 de agosto de 2016 19:16
    sexta-feira, 5 de agosto de 2016 19:16
  • Pessoal, o problema não é conexão com SQL Server. Isso nossa aplicação ja faz. Ja conecta no SQL Server, usando FireDAC. Etc!

    O problema é, como não ter de baixar 1GB de instalação, só para simplesmente acessar banco de dados SQL Server? 
    Será que algumas DLLs resolveria? Será que só o SQLLocalDB (que tem só 34MB) resolveria?

    sexta-feira, 5 de agosto de 2016 19:33
  • Se você quer algo equivalente a versão embarcada do Firebird, acho que seja o caso de utilizar o LocalDB.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 5 de agosto de 2016 19:41
  • Sim, é o que tenho comentado... seria no caso o melhor caminho, o uso do SQLLocalDB (LocalDB)?

    Se Sim ,como iniciar instancia e conectar no banco?

    sexta-feira, 5 de agosto de 2016 20:05
  • Pessoal, encontrei solução!!

    Link imagem exemplo: http://imgur.com/a/g5gA6


    Após muitas pesquisas nas madrugadas, encontrei outro caminho, na propria documentação do componente (Delphi) FireDAC (na seção "Connect to LocalDB and attach database file:"):
    http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic&frmfile=Connect_to_Microsoft_SQL_Server.html


    No caso, estou usando "Delphi 10 Seattle", testado no SQL Server 2014 Express. Atenção, eu já tinha um banco de dados criado anteriormente, via "Microsoft SQL Server Management Studio" (SQL Server 2014 Express). Por isso, será necessário apenas informar o local do arquivo MDF existente.


    OS PASSOS PARA RESOLVER:

    1 - Instalar "SqlLocalDB.msi" (automaticamente cria uma instancia "MSSQLLocalDB")

    2 -[Já no Delphi] Com código-fonte/projeto aberto, no componente "TFDConnection",  na propriedade "Params", informei (no meu sistema):

    DriverID=MSSQL
    Server=(localdb)\MSSQLLocalDB
    Database=ERPDB
    ODBCAdvanced=AttachDbFileName=D:\[Projeto2016]\db\ERPDB.mdf

    3 - Ativei propriedade "Connected" para "True", e pronto. Conectou!!!

    Detalhes:
    Não se preocupe se a instancia "MSSQLLocalDB", estiver parada. A própria aplicação (no caso do teste, o próprio Delphi, inclusive) ao tentar fazer conexao com a base de dados, irá iniciar (automaticamente) a instancia "MSSQLLocalDB" (ficará ativa).

    Instalei o "SQL Server Management Studio" (somente o "Management Studio", puro, sem qualquer outro mecanimo), do SQL Server 2016 Express, e abriu o banco de dados normalmente (edita tabelas, registros, procedures, e tudo mais).

    Espero que essas dicas ajudem outros Desenvolvedores Delphi, que necessitem instalar o minimo do SQL Server, apenas para se conectar ao MDF (banco de dados). O "SqlLocalDB.msi" resolve tudo isso de forma muito simples e direta, sem precisar de qualquer outro mecanimo!

    Valeu!


    domingo, 7 de agosto de 2016 05:04