如何在两个数据库中具有相同表名和结构的Azure SQL中交叉数据库查询

时间:2018-10-15 14:38:44

标签: sql-server azure azure-devops azure-sql-database

我需要有关具有相同表名和相同结构的两个不同Azure SQL数据库之间的Join查询的Ur帮助。实际上,我有两个具有相同表名的不同数据库,以及具有不同数据的整个字段。

我想将数据从一个数据库转移到Azure Sql上的另一个数据库或联接表(两个表都具有相同的名称和结构)。 为此,我正在使用“弹性数据库查询”

https://ppolyzos.com/2016/07/30/cross-database-queries-in-azure-sql-databases/

我在创建外部表“ CREATE EXTERNAL TABLE [dbo]。[用户]”时遇到错误消息

错误消息:- “数据库中已经有一个名为'Users'的对象。”

第一个样本数据库

[测试]。[dbo]。[用户]

CREATE TABLE [Users] (
  [UserGuid] uniqueidentifier NOT NULL
, [FirstName] nvarchar(90)  NOT NULL
, [LastName] nvarchar(90)  NOT NULL
, [UserID] nvarchar(50)  NOT NULL
, [PasswordSalt] nvarchar(90)  NOT NULL
, [Password] nvarchar(90)  NOT NULL
, [PasswordChanged] datetime NULL
, [UserName] nvarchar(50)  NOT NULL
);

GO


第二数据库 [TestAnother]。[dbo]。[用户]

CREATE TABLE [Users] (
  [UserGuid] uniqueidentifier NOT NULL
, [FirstName] nvarchar(90)  NOT NULL
, [LastName] nvarchar(90)  NOT NULL
, [UserID] nvarchar(50)  NOT NULL
, [PasswordSalt] nvarchar(90)  NOT NULL
, [Password] nvarchar(90)  NOT NULL
, [PasswordChanged] datetime NULL
, [UserName] nvarchar(50)  NOT NULL
);
GO

我写了如下的弹性数据库查询:

Use TestAnother
Go

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'ABCmn!A4F43';

CREATE DATABASE SCOPED CREDENTIAL MyDbCredential 
WITH IDENTITY = 'TestID',
SECRET = 'ABC9mn!A4F43';

CREATE EXTERNAL DATA SOURCE Connect2Test
WITH (
TYPE=RDBMS,
LOCATION='XXXX.database.windows.net',
DATABASE_NAME='Test',
CREDENTIAL= MyDbCredential,);

CREATE EXTERNAL TABLE [dbo].[Users] (
  [UserGuid] uniqueidentifier NOT NULL
, [FirstName] nvarchar(90)  NOT NULL
, [LastName] nvarchar(90)  NOT NULL
, [UserID] nvarchar(50)  NOT NULL
, [PasswordSalt] nvarchar(90)  NOT NULL
, [Password] nvarchar(90)  NOT NULL
, [PasswordChanged] datetime NULL
, [UserName] nvarchar(50)  NOT NULL 
)
WITH ( 
        DATA_SOURCE = Connect2Test);
GO

如果我删除或重命名“ TestAnother”数据库上的Users表,则其工作正常。但我想使用相同的表名和结构。

如何将数据从一个表从一个数据库迁移到另一个数据库上的另一个表,并且在Azure Sql环境中数据库表名称和结构都相同。

2 个答案:

答案 0 :(得分:0)

您要将数据从一个表从一个数据库迁移到另一个数据库上的另一个表,并且在Azure Sql环境中,数据库表名称和结构都相同,只是表对表,对吗? 由于两个数据库位于同一SQL服务器中,因此您可以使用SSMS(SQL Server Management Studio)进行此操作。

使用SSMS登录Azure sql数据库,选择“ SQL Server身份验证”:

https://i.stack.imgur.com/G6h2Q.png

选择您的数据库并创建一个新查询,我尝试使用以下代码将表MyDatabase2.dbo.Users中的数据成功迁移到表MyDatabase.dbo.Users中:

'-f', '1',

数据传输后,您需要确定是否需要删除或删除其他数据库中的表。

答案 1 :(得分:0)

您需要使用不同的名称创建外部表,并在创建时定义其架构和真实名称

Services[0].Fn1