2017-01-31 10 views
2

リンクされたサーバーからManagement Studio内の別のサーバーにテーブルのコピーを作成する方法を理解しようとしています。私は両方のリンクサーバーを作成し、それらを照会することができます。ただし、1つはSQL Serverインスタンスで、もう1つはQuickBooks QODBC接続へのODBC接続です。SELECT * INTO [newdatabase]。[テーブル] FROM [otherdatabase]。[テーブル]

QODBC QuickBooksのデータベースを照会する場合、この

SELECT * 
FROM [MYSERVERNAME\SQLSERVICEINSTANCE].[DATABASENAME].[DBO].[TABLENAME] 

ように私は、クエリを実行するSQL Serverインスタンスを照会するとき、私は私がSQLSERVERに*を選択することができますどのようにこの

SELECT * 
FROM OPENQUERY(QUICKBOOKS, 'SELECT * FROM Invoice') 

のようなクエリを実行します。 QUICKBOOKS.Invoicesからの請求書?

答えて

2

select * into SQLSERVER.Invoices FROM QUICKBOOKS.Invoices実際にはあなたが望むものにかなり近いです。

insert into [DATABASENAME].[DBO].[TABLENAME] 
(column1, columns2) 
SELECT column1, columns2 
FROM OPENQUERY(QUICKBOOKS, 'SELECT * FROM Invoice') 

これは定期的に行いたいと思いますか?最も簡単な方法は、ターゲット表をクリアするには、この最初に実行することです:

TRUNCATE TABLE [DATABASENAME].[DBO].[TABLENAME] 

あなたは正確なコピーがこれを使用したい場合:

USE [DATABASENAME] 


IF EXISTS (
    SELECT * FROM sys.objects 
    WHERE object_id =  OBJECT_ID(N'[DBO].[TABLENAME] ') 
    AND type in (N'U') 
    ) 
DROP TABLE [DBO].[TABLENAME] 


SELECT * 
into [DBO].[TABLENAME] 
FROM OPENQUERY(QUICKBOOKS, 'SELECT * FROM Invoice') 

あなたにこれらのスクリプトのいずれかを開くことができます定期的に更新するSQLエージェントジョブ

+0

これはまさに私がやりたいことですが、列名を指定する必要はありません。 QuickBooksで新しい列が追加された場合は、単にINSERT INTO SELECT * FROM – Phil

+0

を実行したいのですが、QuickBooksのテーブルをSQL Serverデータベースに正確にコピーしたいと思います。カラム – Phil

関連する問題