2010-06-06 27 views
5

Tengo una base de datos "temp" con la tabla "A". Creé una nueva base de datos "temp2". Quiero copiar la tabla "A" de "temp" a una nueva tabla en "temp2". Probé esta declaración pero dice que tengo una sintaxis incorrecta, aquí está la declaración:crear tabla desde otra tabla en una base de datos diferente en el servidor sql 2005

CREATE TABLE B IN 'temp2' 
    AS (SELECT * FROM A IN 'temp'); 

Aquí está el error:

Msg 156, nivel 15, estado 1, línea 2 sintaxis incorrecta cerca de la palabra clave 'EN'. Msg 156, nivel 15, estado 1, línea 3 Sintaxis incorrecta cerca de la palabra clave 'IN'.

¿Alguien sabe cuál es el problema?

Gracias de antemano,

Greg

+0

¿Qué sucede si la tabla "A" está ubicada en otro servidor? – Chella

Respuesta

17

no he visto que la sintaxis anterior. Esto es lo que normalmente uso.

SELECT * 
INTO temp2.dbo.B 
FROM temp.dbo.A 
+0

Gracias, eso lo hizo: D – Greg

1

de consulta debe ser:

SELECT * INTO temp2.dbo.b 
FROM temp.dbo.a 
+1

Veo que las respuestas de mi y @ Martin evolucionaron entre sí :) – egrunin

+0

¡Tan bien como creo que solo hay una sintaxis correcta para esto! –

4

que necesita para calificar lo suficiente del nombre de la tabla de SQL Server para poder identificar la tabla correcta.

La estructura del nombre es <server name>.<database name>.<schema>.<table>. Como ambas tablas viven en el mismo servidor se puede prescindir de eso, pero todavía necesitan el resto:

SELECT * 
INTO temp2.dbo.B 
FROM temp.dbo.A 
+0

Gracias! Eso hizo el truco :) – Greg

0

Tenga en cuenta que SELECT INTO suele copiar los índices. Si los quieres demasiado, puede generar la escritura de la fuente; ejecutar en el PP de destino y qué insertar en

inserción en temp2.dbo.b (columnas) seleccionar las columnas de temp.dbo.a

0

si no desea que los datos que usted puede hacer:

SELECT TOP 0 * INTO temp2.dbo.b 
FROM temp.dbo.a 
1

Si Don, t desea que los datos y sólo desea que el shcema de mesa sin datos entonces u puede utilizar este enfoque también ...

SELECT * INTO temp2.dbo.b 
FROM temp.dbo.a where 1=0 
0

La manera más fácil es haciendo clic con el botón derecho en la tabla A de la base de datos temp, luego haga clic en Script Table as =>CREATE to =>New Query Editor Window. Esto creará la secuencia de comandos.

Luego, cambie las siguientes 2 líneas. y ejecutarlo para la nueva base de datos.

USE [temp2] 

.... 

CREATE TABLE [dbo].[B] 

..... 
0

Si desea crear una nueva tabla en otro DB a partir de la base de datos actual, ejecute la consulta.

CREATE TABLE `destination_database_name`.table_dummy AS (
SELECT * FROM currentDB.table 
) 
Cuestiones relacionadas