2009-06-02 16 views
27

oddzielnym Zasadniczo mam dwie bazy danych SQL Server 2005.skopiować dane z tabeli w jednej bazy danych do innej bazy danych

Chcę podjąć dane z tabeli z jednej bazy danych i skopiować go do innej bazy danych w tabeli.

Próbowałem to:

SELECT * INTO dbo.DB1.TempTable FROM dbo.DB2.TempTable 

To nie działa.

nie chcę użyć przywracania, aby uniknąć utraty danych ...

Jakieś pomysły?

Odpowiedz

44

SELECT ... INTO tworzy nowy stół. Musisz użyć INSERT. Masz również odwróconą nazwę bazy danych i właściciela.

INSERT INTO DB1.dbo.TempTable 
SELECT * FROM DB2.dbo.TempTable 
+0

Myślałem, że mam, ale mam ten błąd. Jakieś roboty za to? Wartość jawna dla kolumny tożsamości w tabeli "DB1.dbo.TempTable " można podać tylko wtedy, gdy używana jest lista kolumn, a identyfikator IDENTITY_INSERT jest ustawiony na WŁ. – Gabe

+0

Próbowałem to: SET IDENTITY_INSERT DB1.dbo.TempTable NA GO INSERT INTO DB1.dbo.TempTable SELECT * FROM DB2.dbo.TempTable - wyłącza IDENTITY_INSERT. SET IDENTITY_INSERT DB1.dbo.TempTable OFF GO – Gabe

8

To db1.dbo.TempTable i db2.dbo.TempTable

The four-part schemat nazewnictwa idzie:

ServerName.DatabaseName.Schema.Object

0

Spróbuj

INSERT INTO dbo.DB1.TempTable 
    (COLUMNS) 
    SELECT COLUMNS_IN_SAME_ORDER FROM dbo.DB2.TempTable 

To się nie powiedzie, jeśli pozycja w dbo.DB2.TempTable znajduje się już w dbo.DB1.TempTable.

9

SELECT * INTO wymaga, aby tabela docelowa nie istniała.

Spróbuj tego.

INSERT INTO db1.dbo.TempTable 
(List of columns here) 
SELECT (Same list of columns here) 
FROM db2.dbo.TempTable 
5

Trudno powiedzieć bez żadnego pojęcia, co masz na myśli przez "to nie zadziałało". Jest wiele rzeczy, które mogą się nie udać, a każda rada, jaką dajemy w rozwiązywaniu jednej z tych ścieżek, może prowadzić cię dalej i dalej od znalezienia rozwiązania, które może być naprawdę proste.

Oto coś będę szukać choć

Identity Insert musi znajdować się na stole importowanego do jeśli tabela zawiera pole tożsamości i dostarczanie go ręcznie. Wstawienie tożsamości można włączyć tylko dla 1 tabeli na raz w bazie danych, więc należy pamiętać, aby włączyć ją dla tabeli, a następnie wyłączyć ją zaraz po zakończeniu importu.

Spróbuj też wymieniając wszystkie swoje pola

INSERT INTO db1.user.MyTable (Col1, Col2, Col3) 
SELECT Col1, COl2, Col3 FROM db2.user.MyTable 
2

Możemy trzyczęściowa nazywania jak database_name..object_name

Poniższa kwerenda będzie utworzyć tabelę w naszej bazie danych (z obecnie ograniczeń)

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

Alternatywnie możesz:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable 

Jeśli tabela docelowa istnieje i jest pusta.

1
INSERT INTO DB1.dbo.TempTable 
SELECT * FROM DB2.dbo.TempTable 

Jeśli używamy tej kwerendy powróci Primary key error .... Więc lepiej wybrać, które muszą zostać przeniesione kolumny, jak

INSERT INTO db1.dbo.TempTable // (List of columns here) 
SELECT (Same list of columns here) 
FROM db2.dbo.TempTable 
1

Nie zapomnij wstawić SET IDENTITY_INSERT MobileApplication1 ON do góry, w przeciwnym razie wystąpi błąd. To jest dla SQL Server

SET IDENTITY_INSERT MOB.MobileApplication1 ON 
INSERT INTO [SERVER1].DB.MOB.MobileApplication1 m 
     (m.MobileApplicationDetailId, 
     m.MobilePlatformId) 
SELECT ma.MobileApplicationId, 
     ma.MobilePlatformId 
FROM [SERVER2].DB.MOB.MobileApplication2 ma 
1

Im preferują ten jeden.

INSERT INTO 'DB_NAME' 
(SELECT * from '[email protected]_LINK') 
MINUS 
(SELECT * FROM 'DB_NAME'); 

co oznacza, że ​​w ogóle nie wkładać zawarte na DB_NAME ale zawarte w [email protected]_LINK. Mam nadzieję, że to pomoże.

0

To działa poprawnie.

INSERT INTO DestinationDB.dbo.DestinationTable (col1,col1) 
SELECT Src-col1,Src-col2 FROM SourceDB.dbo.SourceTable 
Powiązane problemy