2010-06-06 8 views
5

Ich habe eine Datenbank "Temp" mit Tabelle "A". Ich habe eine neue Datenbank "temp2" erstellt. Ich möchte die Tabelle "A" von "temp" in eine neue Tabelle in "temp2" kopieren. Ich diese Aussage versucht, aber es sagt, dass ich eine falsche Syntax haben, hier ist die Aussage:Tabelle aus einer anderen Tabelle in einer anderen Datenbank in SQL Server 2005 erstellen

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

Hier wird der Fehler:

Msg 156, Ebene 15, Status 1, Zeile 2 Falsche Syntax nahe dem Schlüsselwort 'IM'. Nachricht 156, Ebene 15, Status 1, Zeile 3 Falsche Syntax in der Nähe des Schlüsselworts 'IN'.

Wer weiß, was das Problem ist?

Vielen Dank im Voraus,

Greg

+0

Was ist, wenn sich die Tabelle "A" in einem anderen Server befindet? – Chella

Antwort

17

Ich habe diese Syntax nicht gesehen. Dies ist, was ich normalerweise verwende.

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

Danke, das ist es: D – Greg

1

sollte Abfrage sein:

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

Ich sehe meine und @ Martins Antworten haben sich ineinander entwickelt :) – egrunin

+0

Genauso gut wie ich denke es gibt nur eine richtige Syntax dafür! –

4

Sie müssen für SQL Server genug von den Tabellennamen qualifizieren zu können, die richtige Tabelle identifizieren.

Die Struktur des Namens lautet <server name>.<database name>.<schema>.<table>. Da beide Tabellen auf dem gleichen Server leben können Sie damit verzichtet werden kann, müssen aber noch den Rest:

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

Danke! Das hat den Trick gemacht :) – Greg

0

Hinweis, der in gewohnt die Indizes kopieren SELECT. laufen in der Ziel db und füge in

Einsatz in temp2.dbo.b (Spalten) wählen Sie Spalten aus temp.dbo.a

0

Wenn, wenn Sie sie auch wollen, können Sie Skript von der Quelle erzeugen Sie wollen nicht auf die Daten, die Sie tun können:

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

Wenn Sie don t die Daten und wollen nur die shcema der Tabelle ohne Daten dann u kann auch diesen Ansatz ...

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

Der einfachste Weg ist mit der rechten Maustaste auf die Tabelle A aus der Datenbank temp, dann klicken Sie Script Table as =>CREATE to =>New Query Editor Window. Dies wird das Skript erstellen.

Dann ändern Sie die folgenden 2 Zeilen. und führe es für eine neue Datenbank aus.

USE [temp2] 

.... 

CREATE TABLE [dbo].[B] 

..... 
0

Wenn Sie eine neue Tabelle in einer anderen DB aus der aktuellen DB erstellen möchten, führen Sie die Abfrage aus.

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