MS SQL Server 2008 - Confusión al migrar desde MySQL re: & # 8220; seleccione XYZ de TABLE & # 8221;

StackOverflow https://stackoverflow.com/questions/611850

Pregunta

Así que estoy confundido aquí.

Tengo que migrar mi base de datos de MySQL a MS SQL Server 2008. He transferido los datos a través del "Asistente de datos MS SQL". aplicación de SQL Maestros. Tomó la estructura de datos + de mi base de datos MySQL " gk " y lo copió en una base de datos " gk " en mi instancia de MS SQL Express.

Pero cuando me conecto a la instancia de MS SQL e intento ejecutar una consulta SQL, solo obtengo resultados cuando ejecuto " select * from gk.TABLENAME " o " select * from gk.gk.TABLENAME " ... Si ejecuto " select * from TABLENAME " después de ejecutar " use gk " ;, obtengo:

  

Error: Nombre de objeto no válido 'TABLENAME'
  SQLState: S0002
  Código de error: 208

¿Cómo hago que esto se comporte " normalmente " ;? Es decir, ¿me conecto a una base de datos específica de modo que no tenga que decirle explícitamente en qué base de datos / esquema encontrar la tabla?

ACTUALIZACIÓN: Debo especificar la estructura que fue creada por la aplicación SQL Data Wizard. Mirando el árbol del navegador de objetos en SQL Server Management Studio, hay esto:

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

... y así sucesivamente.

Gracias. -dan

¿Fue útil?

Solución

En el cuadro de diálogo Propiedades de inicio de sesión para su usuario hay una "Asignación de usuario" página donde puede establecer el esquema predeterminado del usuario. Ajustándolo a '' gk '' (en la base de datos " gk ") debería permitirle escribir consultas sin calificar completamente las tablas.

Otros consejos

Prueba esto, si aún no lo has hecho:

USE gk
GO

SELECT * FROM tablename

Parece que el asistente creó una base de datos llamada " gk " ;, y luego puso todas las tablas en un esquema titulado " gk " ;.

Si las tablas existen en un esquema con nombre (es decir, algo además del esquema predeterminado de "dbo"), siempre tendrá que especificar el esquema al consultarlo.

NOTA: En algunas situaciones, existe una penalización de rendimiento significativa por NO especificar explícitamente el esquema / propietario. Más significativo en versiones anteriores de SQL, pero aún está ahí. Puede que no sea una diferencia lo suficientemente grande como para importar en su aplicación, pero aún así vale la pena saberlo:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top