我正在尝试弄清楚如何在管理工作室中创建一个表的副本,从一个链接服务器到另一个链接服务器。我创建了两个链接服务器,我可以查询它们。但是,一个是 SQL Server 实例,另一个是到 QuickBooks QODBC 连接的 ODBC 连接。
查询 SQL Server 实例时,我运行如下查询
SELECT *
FROM [MYSERVERNAMESQLSERVICEINSTANCE].[DATABASENAME].[DBO].[TABLENAME]
查询QODBC QuickBooks数据库时,我运行这样的查询
SELECT *
FROM OPENQUERY(QUICKBOOKS, 'SELECT * FROM Invoice')
如何在 SQL 服务器中选择 *。来自快速簿的发票。发票?
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 代理作业中以定期刷新