Implantação de Xcopy (SQL Server Express)

Xcopy é um modo simplificado de implantar seus aplicativos e bancos de dados do SQL Server Express. A implantação de Xcopy permite que você copie um novo aplicativo (.exe) e o arquivo de banco de dados (.mdf) para outro computador ou para um local diferente no mesmo computador. Nenhuma configuração adicional é necessária.

Para distribuir o aplicativo a usuários, envie apenas os arquivos .exe e .mdf. Cada usuário pode salvar os arquivos localmente e, com apenas um clique duplo no .exe, iniciar o aplicativo. Se o aplicativo usar replicação, não use a implantação de Xcopy.

Para usar a implantação de Xcopy, o SQL Server Express deve ser instalado no computador de destino e deve ter uma instância em execução. Para obter mais informações, consulte Instâncias de usuário para não administradores.

Como eu uso a implantação de Xcopy?

Quando um aplicativo estabelece uma conexão pela primeira vez a partir de uma instância em execução do SQL Server Express, o SQL Server Express anexa automaticamente um arquivo .mdf. Quando o usuário fecha ou sai do aplicativo, o SQL Server Express desanexa o arquivo .mdf da instância. O recurso Xcopy faz com que o arquivo .mdf seja totalmente portátil. Você pode copiar e mover o arquivo e, ao mesmo tempo, executar várias cópias dele na mesma instância.

Nomenclatura lógica de banco de dados

Ao anexar um banco de dados, o SQL Server Express gera automaticamente um nome lógico para o banco de dados, exceto quando a cadeia de conexão no aplicativo especifica um nome lógico. Esse nome lógico deve ser exclusivo. O SQL Server Express usará a letra de unidade, o nome do diretório e o nome do arquivo de banco de dados como nome lógico. Por exemplo, se o arquivo .mdf estiver no caminho C:\Arquivos de Programas\Meus Aplicativos\Data\MainData.mdf, o SQL Server Express atribuirá um nome lógico de banco de dados que corresponda exatamente ao caminho: C:\Arquivos de Programas\Meus Aplicativos\Data\MainData.mdf.

ObservaçãoObservação

Se a extensão do caminho completo e o nome de arquivo exceder 127 caracteres, o nome lógico do banco de dados será reduzido e prefixado com um GUID. Isso garante um nome lógico exclusivo.

Criação e nomenclatura do arquivo de log

Ao implantar o aplicativo, você deve incluir no Xcopy apenas os arquivos do aplicativo e o arquivo .mdf. O arquivo de log (.ldf) não deve ser incluído. O SQL Server Express irá criar um novo arquivo de log automaticamente ao anexar o banco de dados. O SQL Server Express nomeará o arquivo de log como nome_do_banco_de_dados_log.ldf. Se já existir um arquivo com o mesmo nome no mesmo diretório do arquivo .mdf, será utilizado o arquivo existente.

Limitações ao usar a implantação de Xcopy

Ao usar a implantação de Xcopy em seus aplicativos, alguns recursos do SQL Server Express podem não funcionar conforme se espera. A lista a seguir descreve as limitações que podem ocorrer:

  • Todo código Transact-SQL que contenha nomes lógicos de banco de dados não irá funcionar.

    Como o nome lógico de banco de dados depende do local do arquivo, que mudará em cada Xcopy, todo código que especificar um nome lógico de banco de dados irá falhar.

  • Cenários de replicação não funcionam.

    A replicação requer um nome lógico persistente de banco de dados. Se o aplicativo usar replicação, você não deverá usar a implantação de Xcopy.

Implantação de Xcopy para administradores em uma instância do SQL Server Express

Para que o aplicativo funcione com o recurso de implantação de Xcopy do SQL Server Express, certifique-se de que a cadeia de conexão utilizada no aplicativo contenha os parâmetros apropriados:

  • Use o parâmetro data source, mas altere o nome do computador para um ponto (.). ou (local). Também é preciso especificar o nome da instância, a menos que você tenha certeza de que o SQL Server Express sempre esteja instalado em um instância não nomeada.

  • Use o parâmetro initial catalog ou database, mas não defina o parâmetro para um valor.

  • Adicione o parâmetro AttachDBFileName e defina-o com o nome e o caminho do arquivo .mdf. Attachdbfilename é uma opção de cadeia de conexão do SqlClient que permite anexar bancos de dados em tempo de execução e gerar o nome desse banco de dados automaticamente. A palavra-chave DataDirectory permite que você especifique o caminho relativo de um arquivo de banco de dados. O Attachdbfilename também ajuda na portabilidade do banco de dados. Para obter mais informações sobre Attachdbfilename, consulte a documentação de Visual Studio 2005.

A cadeia de conexão a seguir irá anexar o arquivo de banco de dados MyDb.mdf, que se encontra na mesma pasta do executável do aplicativo, à instância do SQL Server Express em execução no computador local.

@"Data Source='.\SQLExpress'; Initial Catalog=; Integrated 
Security=true; AttachDBFileName='" |DataDirectory| + 
@"\MyDb.mdf'"

Implantação de Xcopy para não administradores em uma instância do SQL Server Express

Para implantar um aplicativo para usuários que não têm direitos de usuário administrativo na instância do SQL Server Express, você deve especificar o seguinte:

  • Os parâmetros na cadeia de conexão para a implantação de Xcopy.

  • O parâmetro user instance.

Para obter mais informações, consulte Instâncias de usuário para não administradores.

Consulte também

Outros recursos