Pergunta

Então, eu só estou confuso aqui.

Eu tenho que migrar meu banco de dados do MySQL para MS SQL Server 2008. Eu já transferiu os dados por meio do app "Assistente de dados MS SQL" do SQL Maestros. Levou os dados + estrutura do meu banco de dados MySQL "gk" e copiados-lo em um banco de dados "gk" no meu exemplo MS SQL Express.

Mas quando eu ligar a instância MS SQL e tentar executar uma consulta SQL, eu só obter resultados quando eu executar "select * from gk.TABLENAME" ou "select * from gk.gk.TABLENAME" ... Se eu executar "select * from TABLENAME" depois de executar "use gk", I obter:

Erro: Nome de objecto inválido 'TABLENAME'
SQLState: S0002
Código de erro: 208

Como posso fazer isso se comportam "normalmente"? Ou seja, eu conectar a um banco de dados específico, que eu não tenho que lhe dizer isso explicitamente em qual banco de dados / esquema para encontrar a mesa?

UPDATE: I deverá especificar a estrutura que foi criado pelo aplicativo Assistente de dados SQL. Olhando para a árvore de objetos do navegador no SQL Server Management Studio, há esta:

[HOSTNAME]\SQLEXPRESS (SQL Server ...)
  |-- Databases
       |-- System Databases
       |-- gk
            |...
            |-- Tables   
                  |-- TABLE1
                  |-- TABLE2
                  |-- TABLE3

... e assim por diante.

Graças. -dan

Foi útil?

Solução

Na caixa de diálogo Propriedades de Login para o seu usuário há uma página "Mapeamento de Usuário", onde você pode definir o esquema padrão do usuário. Definindo-o como "gk" (no banco de dados "gk") deve permitir que você escrever consultas sem qualificar totalmente as tabelas.

Outras dicas

Tente isso, se você já não o fez:

USE gk
GO

SELECT * FROM tablename

Parece que o assistente criou um banco de dados chamado de "gk", e em seguida, colocar todas as tabelas em um esquema intitulado "gk".

Se existirem as tabelas em um esquema chamado (ou seja, algo além do esquema padrão de "dbo"), então você sempre terá de especificar o esquema ao consultar-lo.

NOTA: Em algumas situações, há uma penalidade de desempenho significativo para não especificar explicitamente o esquema / proprietário. Mais significativo em versões mais antigas do SQL, mas ainda está lá. Não pode haver uma diferença grande o suficiente para a matéria em seu aplicativo, mas ainda vale a pena conhecer:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top