Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

qual é o problema com AttachDbFilename


Usando User Instance significa que o SQL Server está criando uma cópia especial desse arquivo de banco de dados para uso pelo seu programa. Se você tiver dois programas diferentes usando a mesma cadeia de conexão, eles obterão duas cópias totalmente diferentes do banco de dados. Isso leva a muito de confusão, pois as pessoas testarão a atualização de dados com seu programa, depois se conectarão a uma cópia diferente de seu banco de dados no Management Studio e reclamarão que sua atualização não está funcionando. Isso os envia por uma série falha de etapas de perseguição de ganso selvagem tentando solucionar o problema errado.

Este artigo se aprofunda sobre como usar esse recurso, mas preste atenção à primeira observação:a User Instance recurso foi descontinuado . No SQL Server 2012, as alternativas preferidas são (nesta ordem, IMHO):

  1. Crie ou anexe seu banco de dados a uma instância real do SQL Server. Sua string de conexão precisará apenas especificar o nome da instância, o nome do banco de dados e as credenciais. Não haverá confusão, pois o Management Studio, o Visual Studio e seus programas estarão todos se conectando a uma única cópia do banco de dados.

  2. Use SqlLocalDb para o desenvolvimento local. Acredito que indiquei este artigo ontem:"Introdução ao SQL Server 2012 Express LocalDB".
  3. Use o SQL Server Compact. Eu gosto menos dessa opção porque a funcionalidade e a sintaxe não são as mesmas - portanto, não necessariamente fornecerá todas as funcionalidades que você deseja implantar. A Compact Edition também está obsoleta, então é isso.

Claro que se você estiver usando uma versão SqlLocalDb não é uma opção - então você deve criar um banco de dados real e usá-lo de forma consistente. Menciono apenas a opção Compactar para completar - acho que pode ser uma ideia quase tão ruim quanto usar AttachDbFileName .

EDITAR: Já escrevi sobre isso aqui:
  • Maus hábitos:usando AttachDBFileName