Solucionando problemas de implantação, desenvolvimento e projeto de banco de dados

Quando você cria, modificar, criar ou implantar projetos de banco de dados, você pode encontrar os seguintes problemas:

  • Erros de objetos de banco de dados

  • Uso de novas palavras reservadas no Microsoft SQL Server 2005

  • Diferenças na compilação de linha de comando

  • As dependências e os Scripts de atualização

  • Identificadores podem causar problemas com o recarregamento do projeto

  • O estado interno do banco de dados é inconsistente com seu conteúdo

  • Desfazer alterações pendentes

  • Windows NT usuário ou grupo não encontrado

  • Nomes de objeto duplicados e arquivos excluídos

  • Nomes qualificados de banco de dados e qualificado do servidor

  • Desempenho do esquema de banco de dados de importação

  • Navegação de erros de compilação

  • Ao usar referências de banco de dados entre os erros de sintaxe

  • Renomeando o SQLCLR projetos e Assemblies

  • Não há suporte para sintaxe STOPLIST de texto completo

  • Cláusula SORT_IN_TEMPDB não é importada.

  • O estado de identificadores entre aspas é perdido quando você importar as funções com valor de tabela que contêm várias instruções

  • Alguns erros de projeto não são limpas depois de compilar o projeto.

  • Incorrect Syntax in Post-Deployment Script

Erros de objetos de banco de dados

Quando um o objeto de banco de dados contém um ou mais erros de sintaxe, o erro associado, as mensagens aparecem na Error List janela.

ObservaçãoObservação

A mensagem de erro aparece no Error List janela deve fornecer informações sobre o que você pode fazer para resolver o erro. Depois de resolver o erro e salvar o objeto de banco de dados, o ícone desse objeto de banco de dados retorna ao estado normal e o erro é removido o Error List janela.

Uso de novas palavras reservadas no Microsoft SQL Server 2005

A seguir estão novas palavras-chave reservadas, em SQL Server 2005: EXTERNAL, PIVOT, , REVERT, TABLESAMPLE, e UNPIVOT. Uma mensagem de erro aparece no saída janela se você usá-los reservado palavras-chave, como nomes de objeto de esquema em um projeto de banco de dados que é direcionada para Microsoft SQL Server 2005 ou SQL Server 2008.

ObservaçãoObservação

Para contornar essa restrição, você pode colocar os nomes de objeto de esquema entre aspas. Por exemplo, você pode usar "CREATE TABLE [externos] (c1 INT)".

Diferenças na compilação de linha de comando

Se você executar uma compilação de linha de comando quando você tem o projeto aberto no Visual Studio, você não poderá receber todos os erros de compilação que você recebe quando você constrói a interface do usuário.

ObservaçãoObservação

Para contornar esse problema, feche o projeto de banco de dados Visual Studio antes de executar uma compilação de linha de comando.

As dependências e os Scripts de atualização

Para gerar a ordem correta de objetos em um script de atualização, a comparação entre esquemas examina dependências entre objetos. Por exemplo, se um modo de exibição depende de uma tabela, a tabela deve ser criada antes da exibição. Se o objeto que depende o segundo objeto usar um nome qualificado do esquema, a dependência não pode ser identificada e o script de atualização ou criação pode ter instruções em uma ordem incorreta. Essa diferença pode causar erros quando você atualiza um destino para corresponder a uma fonte ou implantar alterações em um banco de dados. Esse problema também se aplica aos scripts de compilação do banco de dados.

ObservaçãoObservação

Para contornar esse problema, certifique-se os nomes dos objetos que estão envolvidos em relacionamentos dependentes de qualificar de esquema. Em Visual Studio Premium e Visual Studio Ultimate, você pode usar o banco de dados de refatoração para qualificar totalmente nomes de objeto. Para obter mais informações, consulte Qualificar totalmente os nomes dos objetos de banco de dados.O exemplo a seguir, você pode garantir que a dependência será identificada corretamente se você alterar o final da instrução para referência [dbo].[KeysTable] em vez de apenas KeysTable:

CREATE VIEW [NewUser].[ViewReferencingScalarFunction] AS SELECT Column2, dbo.SimpleMultiplyParamByTwo(PK_Column) AS [Function] FROM KeysTable

Identificadores podem causar problemas com o recarregamento do projeto

Erros será exibido quando você salva objetos ou carrega um banco de dados que contém identificadores entre aspas, se o SET quoted_identifier caixa de seleção é desmarcada nas propriedades do banco de dados. Essa situação pode ocorrer se você importar um esquema de banco de dados de um banco de dados usado identificadores entre aspas.

ObservaçãoObservação

Para contornar esse problema, você tem duas opções. Você pode modificar as definições de objeto, use colchetes em vez de aspas. Por exemplo, você pode alterar o "My Table" para [minha tabela]. Como alternativa, você pode abrir o projeto menu, clique em DatabaseProject Propriedades, clique o Propriedades de banco de dados guia e selecione o SET quoted_identifier caixa de seleção.

O estado interno do banco de dados é inconsistente com seu conteúdo

Você pode receber o seguinte erro quando você trabalha com Visual Studio Premium: "O estado interno do projeto de banco de dados é inconsistente com seu conteúdo. Descarregar o projeto e, em seguida, recarregá-lo para resolver o problema. Este erro indica que, de alguma forma, o projeto, que mantém uma lista dos arquivos que ele acredita que ele contém, não está mais sincronizado com o estado dos arquivos. O motivo mais comum, por que você pode encontrar esse erro é que se um dos arquivos em seu projeto será excluído do disco quando o projeto de banco de dados não estiver aberto. Esse erro também pode resultar se ocorrerem problemas, quando você importa um esquema de banco de dados.

ObservaçãoObservação

Para contornar esse problema, você pode clicar em sincronizar em Visualização Esquema. Se isso não funcionar, você pode descarregar e recarregar o projeto de banco de dados. Para fazer isso, clique em Solution Explorer. Abrir o projeto menu e clique Unload Project. Depois que o projeto é descarregado, abra o projeto menu e clique Reload Project.

Desfazer alterações pendentes

Modo de exibição do esquema não atualiza automaticamente depois que você usa o comando Desfazer alterações pendentes de versão controle do seu sistema. Se, por exemplo, você pode renomear uma tabela ou uma coluna e, em seguida, reverte essas alterações, a mensagem "alteração de arquivo externo, required… de ressincronização" aparece na Visualização Esquema.

ObservaçãoObservação

Para contornar esse problema, você deve clicar em sincronizar sobre o Visualização Esquema barra de ferramentas.

Windows NT usuário ou grupo não encontrado

Se o seu projeto de banco de dados faz referência a um logon que não está disponível, a seguinte mensagem de erro aparece: "Windows NT usuário ou grupo 'domainname\loginname' não foi encontrado. Verifique o nome novamente." Você pode encontrar esse problema se você trabalha em um computador que esteja em um domínio diferente do banco de dados cujo esquema foi importada. Essa situação geralmente ocorre se você trabalha em casa, em um projeto de banco de dados é criado em outro lugar. Nessa situação, você não pode criar ou implantar o projeto de banco de dados.

ObservaçãoObservação

Você pode criar o usuário, omitindo a cláusula de LOGIN. Por exemplo, você pode usar o seguinte: CREATE USER [Domain\someLogin]. O usuário será criado quando você implanta o projeto de banco de dados e será associado com o login [Domain\someLogin], mas você não precisa de uma referência para o logon em seu projeto de banco de dados.

Nomes de objeto duplicados e arquivos excluídos

Se você tiver os nomes de objeto duplicado em seu projeto de banco de dados (por exemplo, duas tabelas que são nomeados de pedidos), uma mensagem de erro aparece no Error List janela. Mesmo se você resolver o problema excluindo o arquivo que contém a definição de um dos objetos, a mensagem de erro não desaparecer imediatamente.

ObservaçãoObservação

Para contornar esse problema, você pode clicar em Atualizar ou modificar o arquivo que contém a definição de objeto, renomear o objeto e salve o arquivo.

Nomes qualificados de banco de dados e qualificado do servidor

Quando você cria um objeto em Visual Studio Premium, o objeto é nomeado de acordo com o [esquema]. [objeto].convenção de nomenclatura [filho]. Se você deseja se referir a um objeto em outro banco de dados ou em outro servidor, você pode incluir o nome do banco de dados e o servidor da seguinte maneira: [servidor].[banco de dados].esquema.objeto.filho. Se você criar um procedimento armazenado ou um modo de exibição que se refere a um objeto que requer um nome qualificado do banco de dados ou qualificado do servidor, será exibido um aviso.

ObservaçãoObservação

Para resolver esse aviso, você deve definir uma referência entre bancos de dados. Para obter mais informações sobre referências cruzadas banco de dados, consulte Usar referências em projetos de banco de dados e Como: Adicionar referências a projetos de banco de dados.

Observação importanteImportante

Implantação falhará se o seu projeto possui não resolvidas avisos sobre nomes qualificados de banco de dados ou qualificado do servidor e você selecionar o tratar avisos como erros caixa de seleção do Build guia das propriedades do projeto de banco de dados. Esta falha ocorre porque o nomes qualificados de banco de dados ou qualificado do servidor geram avisos. Se você estiver usando nomes qualificados de banco de dados ou qualificado do servidor, você deve limpar o tratar avisos como erros caixa de seleção.

Desempenho do esquema de banco de dados de importação

Se você importar um esquema de banco de dados enquanto o Editor de lista de teste janela ou Test View janela aberta, levará muito mais tempo para concluir a operação de importação. Essa diminuição ocorrerá no Assistente de novo banco de dados do projeto (se você optou por importar um esquema de banco de dados) e durante a operação de importar o esquema de banco de dados. O problema ocorre mesmo se você fechar o Editor de lista de teste e Test View windows antes de importar o esquema de banco de dados.

ObservaçãoObservação

Para contornar esse problema, você deve fechar o Editor de lista de teste e Test View windows, desligue e reinicie Visual Studioe em seguida, importar o esquema de banco de dados. Para esquemas menores, talvez você não precise executar essas etapas; para o banco de dados de exemplo AdventureWorks, a operação de importação de esquema levou 27 segundos, sem a Editor de lista de teste janela aberta e 48 segundos com o Editor de lista de teste janela aberta.

Se a distribuição falhar, você não pode corrigir o erro, atualizando o script de construção gerado. Você deve corrigir o arquivo de origem que é usado para gerar o que o script de construção. Se você clicar duas vezes em um erro de implantação do Error List janela, o script de construção é exibido no editor, exibindo a linha que causou o erro.

ObservaçãoObservação

Para contornar esse problema, você deve exibir o script de construção para determinar a causa da falha, mas, em seguida, você deve modificar o arquivo de origem no projeto de banco de dados que contém o erro. Por exemplo, se o script de pós-implantação Script.PostDeployment.sql contém um erro, você deve modificar o Script.PostDeployment.sql em vez do script de construção.

Ao usar referências de banco de dados entre os erros de sintaxe

Quando você salva uma definição de objeto que contém uma referência a um objeto em outro banco de dados, você poderá receber um ou mais erros de sintaxe. Por exemplo, adicione uma referência ao projeto de banco de dados, defina variáveis que são denominadas RefServer e RefDatabase e atribuir valores a eles. Em seguida, você poderia definir um modo de exibição da seguinte maneira:

CREATE VIEW [dbo].[MyView]
AS
SELECT * FROM $(RefServer).$(RefDatabase).dbo.TableName

Quando você salvar esta definição, você poderá receber uma ou mais mensagens de erro que indicam a sintaxe incorreta. As mensagens de erro podem referenciar o nome do seu banco de dados de validação em tempo de design, o que pode ser confuso.

ObservaçãoObservação

Para resolver esse problema, você deverá colocar os nomes de variável entre colchetes. Para corrigir este exemplo, alterá-lo da seguinte maneira:

CREATE VIEW [dbo].[MyView]
AS
SELECT * FROM [$(RefServer)].[$(RefDatabase)].dbo.TableName

Renomeando o SQLCLR projetos e Assemblies

Não será capaz de implantar um projeto de banco de dados que contém uma referência a um projeto do SQLCLR ou assembly, se você renomeá-lo, mas não atualizar a referência.

ObservaçãoObservação

Para corrigir esse problema, remova a referência antiga e adicionar uma referência ao assembly com o nome atualizado ou projeto do SQLCLR.

Não há suporte para sintaxe STOPLIST de texto completo

Visual Studio Premiummodelo opcional não FROM { [DatabaseName.] SourceStoplistName } | SYSTEM STOPLIST ] sintaxe para o CREATE FULLTEXT STOPLIST instrução. Essa sintaxe é ignorado se você importar um objeto que o utiliza.

ObservaçãoObservação

Para corrigir esse problema, você deve adicionar manualmente stopwords ao seu script pós-implantação. Para obter mais informações, consulte Como: Especificar a pré-implantação ou pós-implantação Scripts.

Cláusula SORT_IN_TEMPDB não é importada.

Visual Studio Premiumnão é possível importar a cláusula SORT_IN_TEMPDB para índices. Por exemplo, você pode ter o seguinte código:

CREATE TABLE [dbo].[IndexTable]
{
[Column1] [INT] NOT NULL
}
GO
CREATE NONCLUSTERED INDEX [SortInTempDbOn] ON [dbo].[IndexTable]
{
[Column1] ASC
} 
WITH (SORT_IN_TEMPDB = ON)
GO

O índice é importado sem a cláusula SORT_IN_TEMPDB.

ObservaçãoObservação

Para corrigir esse problema, você deve corrigir manualmente a definição de índice sempre que você importar as alterações do banco de dados para seu projeto.

O estado de identificadores entre aspas é perdido quando você importar as funções com valor de tabela que contêm várias instruções

Você pode importar as funções com valor de tabela que contêm várias instruções, mas o estado da seqüência de caracteres de identificador citado não é salva em SQL Server. Quando você importa essas funções, erros podem ser exibidos porque a configuração padrão para identificadores entre aspas está ativado.

ObservaçãoObservação

Para corrigir esse problema, você deve alterar a configuração de identificadores entre aspas para todas as funções com valor de tabela que contêm várias instruções após a importação de objetos e configurações ou depois de escrever as atualizações do banco de dados ao seu projeto.

Alguns erros de projeto não são limpas depois de recriar o projeto.

Alguns erros que você pode encontrar no seu projeto de banco de dados não desaparecem depois de corrigir a causa do erro, mesmo se você reconstruir seu projeto. Por exemplo, se você excluir o arquivo .sqlpermissions que é referenciado pelo seu projeto usando o Windows Explorer, ocorrerá um erro, conforme o esperado. Se você usar o Solution Explorer para remover o arquivo do seu projeto e compile novamente, o erro permanecerá, mesmo que você o tiver corrigido.

ObservaçãoObservação

Para corrigir esse problema, você deve clicar analisar novamente para criar o projeto na barra de ferramentas, no Solution Explorer.

Sintaxe incorreta no Script pós-implantação

Por padrão, o modo SQLCMD está desativada no Transact-SQL editor do Visual Studio 2010. Essa alteração foi feita porque o Intellisense não está ativo quando o modo SQLCMD é ativado. Quando você implanta, você pode ver o seguinte erro se você incluiu instruções no script pós-implantação.

Incorrect syntax near ':'. C:\MySandbox\MySolution\MyProject\Scripts\Post-Deployment\Script.PostDeployment.sql
ObservaçãoObservação

Para corrigir esse problema, você deve habilitar o modo SQLCMD. Para habilitar o modo SQLCMD, clique em Modo SQLCMD na Editor do Transact-SQL barra de ferramentas.

Consulte também

Tarefas

Como: Modificar objetos de banco de dados

Como: Comparar e sincronizar os dados de dois bancos de dados

Conceitos

Renomear todas as referências a um objeto de banco de dados

Renomear todas as referências a um objeto de banco de dados

Histórico de alterações

Date

History

Motivo

Julho de 2010

Adicionada uma entrada para avisar aos usuários uma alteração no comportamento padrão no Visual Studio 2010 e pode causar problemas para o seu script de pós-implantação.

Comentários do cliente.