San*_*rof 2 sql database sql-server
我有一个问题,我使用 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
Run Code Online (Sandbox Code Playgroud)
这是我收到的消息
(1 行受影响)
正在作为 SLIC 连接到 someserver.net\SQLEXPRESS2014...
消息 208,级别 16,状态 0,第 22 行
对象名称“##TempTable”无效。
正在断开与 someserver.net\SQLEXPRESS2014 作为 SLIC 的连接...
小智 5
您需要通过 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]
Run Code Online (Sandbox Code Playgroud)
OPENROWSET 文档可以在这里找到:https://msdn.microsoft.com/en-us/library/ms190312.aspx