sql - 从本地数据库表插入数据到远程数据库表

标签 sql sql-server database

我有一个问题,我使用 SQL Server 2014。我需要将数据从本地表复制到远程服务器上的相同表。现在,我只能将静态数据插入远程表,从远程表中选择数据,但我没有做我想做的事。

这是我的sql代码

IF OBJECT_ID('tempdb..##TempTable') IS NOT NULL
     DROP TABLE ##TempTable

CREATE TABLE ##TempTable 
(
    [Name] [nvarchar](255) NOT NULL,
    [Description] [nvarchar](512) NOT NULL,
    [ARXUrl] [nvarchar](1000) NOT NULL,
    [IsDeleted] [bit] NULL,
    [CreatedDate] [datetime] NOT NULL
);
GO

INSERT INTO ##TempTable 
    SELECT 
        [Name], [Description], [ARXUrl], [IsDeleted], [CreatedDate]
    FROM [dbo].[ARXSystem]
GO

-- destination database
:SETVAR remoteDB [slic-test]
:CONNECT someserver.net\SQLEXPRESS2014 -U user -P password
--source database
USE [SLIC]
GO 

SELECT * 
FROM ##TempTable;

INSERT INTO $(remoteDB).[dbo].[ARXSystem]
    SELECT * 
    FROM #TempTable
GO

这是我收到的消息

(1 row(s) affected)
Connecting to someserver.net\SQLEXPRESS2014 as SLIC...
Msg 208, Level 16, State 0, Line 22
Invalid object name '##TempTable'.
Disconnecting connection from someserver.net\SQLEXPRESS2014 as SLIC...

最佳答案

您需要通过 Openquery 或 Openrowset 使用远程服务器,这可能需要在执行查询的源系统上更改服务器配置。要将数据从源推送到目标查询,将如下所示:

INSERT INTO OPENROWSET('SQLNCLI',
'Server=someserver.net\SQLEXPRESS2014;User=xxxx;Password=xxxx;',
'SELECT [Name], [Description], [ARXUrl], [IsDeleted], [CreatedDate]
FROM [slic-test].[dbo].[ARXSystem]')
SELECT [Name], [Description], [ARXUrl], [IsDeleted], [CreatedDate]
FROM [dbo].[ARXSystem]

OPENROWSET 文档可以在这里找到:https://msdn.microsoft.com/en-us/library/ms190312.aspx

关于sql - 从本地数据库表插入数据到远程数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370660/

相关文章:

参数为空不为空的sql查询

sql - SQL Server 2012 中带有 varchar(max) 字段的最大行大小

sql - 添加非聚集索引会锁定我的表吗?

MySQL 错误 1005 : Can't create table (errno: 150)

python - 在电子邮件上制作 Django 的身份验证跟踪,如何将用户名字段与电子邮件相关联?

c# - In Code first The INSERT 语句与 FOREIGN KEY 约束冲突

mysql - 如何将两列中的不同值计为一个数字

php mysqli_bind_param 函数问题。尝试实现准备好的语句

mysql - 循环遍历mysql表以查找表中缺失的一天

python - SQL与python连接