Usar referências em projetos de banco de dados
Você pode adicionar vários tipos de referências em os projetos de banco de dados para lidar com situações diferentes. Os procedimentos que você use variam um pouco para diferentes tipos de referências.
A tabela a seguir mostra os tipos de referências que você pode adicionar e as situações em que os endereços de cada tipo.
Tipo de referência |
Motivo do uso |
---|---|
Um projeto de banco de dados (.dbproj) na solução atual |
Você adicionaria esse tipo de referência para permitir que vários cenários.
Se você adiciona uma referência a outro projeto, mas não define nenhuma variável, você cria um projeto de composição. Quando você implanta esse tipo de projeto, você também implantar os objetos em outros projetos. Para obter mais informações, consulte Redigir projetos por referências usando posteriormente neste tópico. |
A saída de um projeto de banco de dados (arquivo de .dbschema), a solução atual ou em uma solução diferente |
Se você precisa se referir a objetos em outro banco de dados, mas você quer isolar esse banco de dados de outros desenvolvedores, você adicionaria uma referência a um banco de dados esquema arquivo. Você pode levar a essa abordagem porque você deseja impedir alterações ou não é possível atualizar o banco de dados. Por exemplo, você pode adicionar uma referência a um arquivo de .dbschema se o seu projeto de banco de dados deve se referir a logins ou chaves que são compartilhadas e definidas no servidor, mas usadas por vários projetos de banco de dados. Para obter mais informações, consulte Iniciando a equipe de desenvolvimento de bancos de dados para essa referência objetos de servidor compartilhados. Talvez você queira fazer referência a um arquivo de .dbschema que contém as definições para os objetos de servidor e talvez você não queira verificar as configurações no servidor quando você implanta seu projeto de banco de dados. Para esse cenário, você pode adicionar uma referência ao arquivo master.dbschema e definir um literal para a variável de banco de dados cujo valor é "mestre". Fazendo isso, as referências de objetos definidos no "mestre" banco de dados pode ser resolvido sem erros. Para obter mais informações sobre como literais, consulte Referenciando a bancos de dados por usando literais posteriormente neste tópico. |
Um arquivo de master.dbschema que contém definições de objetos do sistema |
Se você deseja fazer referência a objetos do sistema como, por exemplo, procedimentos armazenados do sistema, tabelas de sistema, modos de exibição do sistema ou catálogos de sistema, você deve adicionar uma referência a master.dbschema apropriada para resolver essas referências. Por exemplo, convém fazer referência a sys.sysobjects em um procedimento armazenado. Um arquivo de master.dbschema é fornecido com Visual Studio Premium para cada versão suportada do SQL Server. Você pode localizar os arquivos de .dbschema na 10.0\VSTSDB\Extensions\SqlServer\ de Visual Studio [arquivos de programa] \Microsoftversão\DBSchemas, onde versão é a versão do SQL Server que você está usando (como, por exemplo, 2005 ou 2008). Para esse cenário, adicione uma referência ao arquivo apropriado de master.dbschema e definir um literal para a variável de banco de dados cujo valor é "mestre". Fazendo isso, as referências de objetos definidos no "mestre" banco de dados pode ser resolvido sem erros. Para obter mais informações sobre como literais, consulte Referenciando a bancos de dados por usando literais posteriormente neste tópico. |
Um SQL common language runtime (CLR) do projeto na solução atual |
Você faria referência a um projeto do SQLCLR na solução atual se você estiver desenvolvendo um ou mais objetos SQLCLR com seu projeto de banco de dados que você deseja implantar. Quando você implanta o projeto de banco de dados, você também implantar o assembly que é produzido pelo projeto SQLCLR para o qual você se referir. A instrução CREATE ASSEMBLY é criada a partir de propriedades que você especificar para essa referência. Para obter mais informações, consulte Iniciando a equipe de desenvolvimento de bancos de dados que objetos de referência SQLCLR e Usando referências de banco de dados entre posteriormente neste tópico. |
Um assembly do SQLCLR, de um projeto na solução atual ou de uma fonte diferente |
Se o seu projeto de banco de dados deve se referir a objetos que são definidos no assembly, mas que não estão sendo desenvolvidas ao mesmo tempo, ou pela mesma equipe, você adicionaria uma referência a um conjunto SQLCLR. Quando você implanta o projeto de banco de dados, você também implantar o assembly para o qual você se referir. |
Uma definição de esquema XML, conforme definido em um arquivo. xsd |
Você deve registrar um esquema antes de você pode associá-lo uma variável, um parâmetro ou uma coluna para criar variáveis XML digitado, parâmetros e colunas. Convém usar XML digitado se qualquer uma das seguintes afirmativas é verdadeira:
Para obter mais informações, consulte Iniciando a equipe de desenvolvimento de bancos de dados que coleções de esquema XML de uso. |
Definindo referências entre banco de dados
Se você criar ou importar objetos de banco de dados que se referem a objetos em outros bancos de dados, você deve definir uma referência correspondente nas propriedades de seu projeto de banco de dados. Para cada banco de dados ao qual você se referir, você pode definir variáveis SETVAR que correspondem ao servidor e banco de dados ao qual você deseja se referir. Quando você modifica uma definição de objeto para incluir a referência, você pode defini-la usando essas variáveis em vez dos nomes explícitos do servidor e o banco de dados. Quando você constrói o projeto de banco de dados, os valores que você especificou substituirão as variáveis.
Cenários de referências cruzadas banco de dados
Visual Studio Premiumsuporta os seguintes cenários:
Você criou um projeto de banco de dados e importado o esquema de um banco de dados existente. O esquema contém objetos que se referem a objetos em um ou mais outros bancos de dados. Nas propriedades do projeto, você pode define uma referência correspondente e substituir os nomes de explícitos do servidor e o banco de dados com variáveis SETVAR. Devido essa definição, as referências entre bancos de dados podem ser validadas em tempo de design. Você também pode implantar o projeto de banco de dados para um o ambiente de desenvolvimento isolado, onde o nome da destino server pode diferir do nome do servidor de destino em seu ambiente de produção.
Você tem um projeto de banco de dados que contém o banco de dados entre referências e essas referências usam variáveis SETVAR para identificar os servidores e bancos de dados. Você deseja alterar os nomes dessas variáveis e atualize as definições de objeto que contêm essas referências.
Você que se referir aos esquemas de banco de dados adicionais do projeto de banco de dados que você está desenvolvendo. Você deseja compartilhar apenas desses esquemas com a equipe, sem a necessidade de compartilhar os outros projetos de banco de dados com eles. Você pode adicionar uma referência para os arquivos de esquema de banco de dados (.dbschema) para os outros projetos e verifique os arquivos de esquema controle de versão. Usando essa abordagem, você pode restringir o acesso aos projetos de banco de dados que contêm os esquemas para o qual você deseja se referir. Você também deve usar essa abordagem se você desejar implantar um projeto de banco de dados mas não todos os projetos que dependem dele.
Você pode usar a refatoração de banco de dados para executar tarefas adicionais com referências cruzadas banco de dados. Para obter mais informações, consulte Como: Renomear referências a um servidor ou banco de dados.
Referências a projetos de banco de dados e arquivos de esquema
Quando você adiciona uma referência em um projeto de banco de dados, você pode especificar outro projeto de banco de dados ou de um arquivo de esquema é produzido quando você constrói um projeto de banco de dados.
Você deve consultar a outro projeto de banco de dados, se a instrução a seguir for verdadeira:
- Você deve alterar os esquemas de banco de dados que irá conter a referência e o banco de dados ao qual você está se referindo. Quando você implanta o projeto de banco de dados que contém a referência, você implantará também o projeto de banco de dados ao qual você está se referindo.
Você deve consultar um arquivo de esquema se qualquer uma das seguintes afirmativas é verdadeira:
Você deve consultar um banco de dados cujo projeto não está na solução atual.
Você deve implantar um único projeto sem implantar os projetos dos quais ele depende.
Você está se referindo a um esquema de banco de dados não é provável que mudem. Nesse cenário, você pode verificar o arquivo de esquema controle de versão.
Limitações do banco de dados entre referências
Quando você importa um esquema de banco de dados, referências a outros bancos de dados de definições de objetos produzem avisos, porque o projeto de banco de dados não pode validar essas referências antes de implantá-lo. Depois de definir referências de banco de dados nas propriedades do projeto, você pode validar as definições de objeto e resolver os avisos. Você pode atualizar as definições de objeto, substituindo os nomes dos servidores e bancos de dados com variáveis. Você também pode usar a refatoração para realizar essa substituição. Para obter mais informações, consulte Como: Adicionar referências a projetos de banco de dados e Como: Renomear referências a um servidor ou banco de dados.
As variáveis e valores para os servidores e bancos de dados ao qual você se referir não são específicos para uma configuração de compilação. Para especificar o servidor e banco de dados em um prompt de comando, você deve se referir a eles em termos de MSBuild variáveis, que podem ser substituídas em tempo de implantação.
Também aplicam as seguintes limitações:
Você pode adicionar uma referência a um banco de dados somente se ele tiver um projeto de banco de dados correspondente.
Você deve construir um projeto de banco de dados antes de adicionar uma referência para o arquivo de esquema para o projeto de banco de dados.
Você deve construir os projetos de banco de dados ao qual você está se referindo, para que entre bancos de dados referências a eles resolverá sem avisos.
Se você alterar a configuração de compilação da solução ou projetos de banco de dados ao qual você está se referindo, talvez você precise recriar a solução para que o banco de dados entre a referências a eles resolverá sem avisos.
Se você fizer referência a um objeto em um projeto de banco de dados em outro servidor, você deve defini-la como um servidor vinculado no seu servidor de destino. Para obter mais informações, consulte Como: Adicionar referências a projetos de banco de dados.
Você não precisa de uma referência entre bancos de dados para se referir a banco de dados mestre.
Referências que incluem variáveis SETVAR devem sempre levar o formulário "[$ (NomeDaVariável)]". Se você omitir os colchetes, talvez não consiga implantar o projeto de banco de dados.
Nomes de variáveis SETVAR devem ser exclusivos. Se seu servidor tem o mesmo nome de seu banco de dados, você deve definir as variáveis que têm nomes diferentes, mas resolver para o mesmo valor.
Considerações sobre segurança
O arquivo de esquema é criado quando você constrói um projeto de banco de dados contém informações de esquema para o projeto. Você deve limitar o acesso a esse tipo de arquivo para proteger essas informações de esquema. Você pode compartilhar arquivos de esquema com a equipe verificando-os o controle de versão, em vez de por implantá-los para o servidor de destino. Se o projeto de banco de dados do banco de dados ao qual você está se referindo estiver na mesma solução, outros desenvolvedores no projeto terão acesso ao sincronizar-se ao controle de versão e criar a solução.
Exemplo de uma referência entre bancos de dados
Se você tiver dois projetos de banco de dados, ReportDb e DependentDb, convém para se referir a objetos no DependentDb de ReportDb. Comece adicionando uma referência nas propriedades do projeto de banco de dados DependentDb e a definição de variáveis da seguinte maneira:
RefServer
RefDatabase
O valor para RefServer é o nome do servidor no qual reside o DependentDb. O valor para RefDatabase é o nome do banco de dados de destino que é implantado pelo projeto DependentDb. Neste exemplo, RefServer tem o valor de StageSvr e RefDatabase possui o valor DepDb.
Você pode adicionar um modo de exibição para ReportDb que mostra todas as colunas da tabela de funcionários a DependentDb. Você pode implantar a tabela no banco de dados chamado DepDb no servidor chamado StageSvr. Você deve criar a definição de objeto para esse modo de exibição adicionando as seguintes instruções:
CREATE VIEW [dbo].[DependentView]
AS
SELECT * FROM [$(RefServer)].[$(RefDatabase)].[dbo].[Employee]
;
Criando projetos composto usando referências
Projetos de banco de dados e o servidor não podem resolver todos os cenários que podem ocorrer durante o desenvolvimento de banco de dados. Para lidar com cenários mais complexos, que você pode criar composto de dois ou mais outros projetos.
Você pode criar um projeto composto quando você adiciona uma referência em um projeto de banco de dados para outro projeto de banco de dados ou servidor, mas não fornece valores para as variáveis de servidor e banco de dados nos projetos ao qual você está se referindo. Quando você adiciona esse tipo de referência, o projeto ao qual você adicionou a referência inclui todos os objetos e configurações do projeto para o qual a referência aponta.
Criando um projeto composto, você pode ativar os seguintes cenários:
Você pode gerenciar esquemas de banco de dados que se referem os logins compartilhados ou chaves. Para obter mais informações, consulte Iniciando a equipe de desenvolvimento de bancos de dados para essa referência objetos de servidor compartilhados.
Você pode quebrar um banco de dados grande em subprojetos, para aumentar o desempenho ou para separar os esquemas ou tipos de objeto. Convém também fazer essa alteração se vários bancos de dados compartilham alguns objetos, mas diferem de outras maneiras. Você pode quebrar um projeto em subprojetos de dois ou mais somente se essa alteração não criará uma referência circular.
Quando você implanta o projeto composto, você também implantar os objetos em todos os projetos de banco de dados ao qual se refere. Para obter mais informações, consulte Iniciando o desenvolvimento da equipe de grandes bancos de dados.
Fazendo referência a um banco de dados usando literais
Você pode definir variáveis de referência de banco de dados para especificar o nome de um banco de dados referenciado no seu ambiente de implantação de destino. Se você não quiser usar variáveis SQLCMD, porque o nome do banco de dados de destino é sempre o mesmo em seu ambiente de implantação, em vez disso, você pode especificar a uma literal cujo valor é o nome do banco de dados referenciado.
Se você usar variáveis, sua sintaxe pode aparecer como segue:
CREATE VIEW [dbo].[View1] AS SELECT * FROM [($MasterDbVar)].[dbo].[spt_values].
Se você usar um literal, sua sintaxe pode aparecer como segue:
CREATE VIEW [dbo].[View1] AS SELECT * FROM [master].[dbo].[spt_values]
Para obter mais informações sobre como especificar um valor literal, consulte Como: Adicionar referências a projetos de banco de dados.
Consulte também
Tarefas
Como: Renomear referências a um servidor ou banco de dados
Como: Adicionar referências a projetos de banco de dados