使用外部表在Azure中将数据从一个SQL数据库传输到另一个SQL数据库

时间:2018-08-10 07:30:45

标签: sql azure-sql-database

我想在SQL 2017 Azure中将数据从一个数据库传输到另一个数据库。 我遵循这种方式:两个数据库都具有相同的架构,但只需要将一个表数据从1 db传输到其他数据库.....

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'e4a421f5-8f73-4c68-8a4c-f5c9dc429dde';

CREATE DATABASE SCOPED CREDENTIAL dbCredential WITH IDENTITY = 'mlsqladmin', SECRET = 'e4a421f5-8f73-4c68-8a4c-f5c9dc429dde';

CREATE EXTERNAL DATA SOURCE restoredDatabase WITH

(

    TYPE=RDBMS,

    LOCATION='sqlazewdmlitbunkerpit001.database.windows.net',

    DATABASE_NAME='sqdazewdmlitbunkerpit001_back',

    CREDENTIAL= dbCredential

);   


CREATE EXTERNAL TABLE [Admin].[Estimates2016] (

    [CommandId] int  NOT NULL,
    [Name] [nvarchar](255) NOT NULL,
    [Active] [int] NOT NULL,
    [CreatedBy] [int] NOT NULL,
    [UpdatedBy] [int] NULL,
    [CreatedTimestamp] [datetime] NOT NULL,
    [UpdatedTimestamp] [datetime] NULL

)

WITH (

     DATA_SOURCE = restoredDatabase,
      SCHEMA_NAME = 'dbo', -- This is the name of the schema on the host database
   OBJECT_NAME = 'Transactions' -- Name of the table on the host database
);   

-这里的事务是其他数据库中具有--Extimates 2016中提到的架构的视图
喜欢 -创建视图事务从Admin.Command中选择* -此处一切正常,除了下面的最后一个insert语句,错误为 -消息116,第16层,状态1,第45行 -子查询不是通过EXISTS引入时,只能在选择列表中指定一个表达式。 -讯息213,第16级,州1,第45行 -列名或提供的值数与表定义不匹配。

SET IDENTITY_INSERT  Command ON   
INSERT INTO Admin.Command  values  ((select  * from Admin.ESTIMATES2016 )  ) 
SET IDENTITY_INSERT  Admin.Command OFF


SELECT * FROM ESTIMATES2016 WHERE YEAR = 2016;

1 个答案:

答案 0 :(得分:0)

将INERT插入Admin.Command值((从Admin.ESTIMATES2016中选择*))

删除值和方括号包括插入参数

对我来说这很简单,但是花了更多时间来找到

将INSERT INTO Admin.Command(CommandId,Name,Active,CreatedBy,UpdatedBy,CreatedTimestamp,UpdatedTimestamp)插入Admin.Estimates2016中选择*,其中CommandId不在(从Admin.Command中选择CommandId)