Por que um aplicativo se importa onde os arquivos de banco de dados subjacentes são armazenados?

1

Trabalhei recentemente em um problema causado por um aplicativo que armazenava o local incorreto dos arquivos .ldf e .mdf do MSSQL. O SQL Server foi 2005.

O aplicativo procurava os arquivos em: \ server \ raiz do aplicativo \ database \ data e \ server \ app raiz \ database \ log, mas os arquivos estavam em \ server \ mssql \ data e \ server \ mssql \ logs . Mudei os arquivos do banco de dados para o local em que o aplicativo estava esperando, o que resolveu o problema.

Não entendo por que um aplicativo precisa saber onde esses arquivos estão, ele deve se preocupar apenas com um nome ODBC ou com o acesso OLE (nome do host, credenciais). Alguém sabe por que um aplicativo precisaria dessas informações?

    
por Eric H 06.11.2009 / 02:37

2 respostas

1

O SQL Express (somente Express) permite um recurso chamado Instâncias do Usuário no qual você pode especificar o local de um arquivo .mdf na cadeia de conexão do aplicativo, usando o SqlClient Managed Provider, e será anexado como um banco de dados no servidor . Existem algumas limitações para isso:

  • Você só pode usar conexões locais (ou seja, o SQL Express deve ser local para o servidor da web)
  • Nenhuma consulta distribuída
  • Sem replicação

Quando esse recurso é usado, o administrador do servidor não cria o banco de dados no servidor. O SQL anexa o arquivo .mdf quando a conexão é feita ao aplicativo.

Você vê isso com mais frequência em alguns hosts da web (sem cérebro e / ou baratos) e também quando o SQL Express é usado como o mecanismo de db para um aplicativo de usuário local.

De uma perspectiva de aplicativo da web, ele torna seu banco de dados bastante portátil e fornece uma alternativa quando você não consegue executar um backup do banco de dados por meio de um painel de controle de hospedagem ou algo assim. Caso contrário, descobri que seu maior uso é na arena de aplicativos locais.

    
por 06.11.2009 / 04:13
0

A menos que estejamos falando de software que, por qualquer motivo, precise acessar diretamente esses arquivos, não há motivo para saber sobre eles. Mesmo assim, é simplesmente uma programação ruim e imprudente fazer suposições ou ter expectativas irreais sobre tais detalhes. O software deve, no mínimo, perguntar onde estão os arquivos, caso não consiga localizá-los por conta própria. Eu certamente concordo com o Sim, que o programador definitivamente precisa de alguns truques com o cluestick. Você realmente tem que se perguntar o que mais está errado com o aplicativo.

    
por 06.11.2009 / 03:29

Tags