簡體   English   中英

如何在兩個數據庫上具有相同表名和結構的 Azure SQL 中跨數據庫查詢

[英]How to Cross Database Queries in Azure SQL with Same Table name and structure on both database

我需要有關在具有相同表名和相同結構的兩個不同 Azure SQL 數據庫之間的聯接查詢的 Ur 幫助。 實際上,我有兩個具有相同表名的不同數據庫和具有不同數據的整個字段。

我想將數據從一個數據庫傳輸到 Azure Sql 上的另一個數據庫或加入表(兩個表具有相同的名稱和結構)。 為此,我使用“彈性數據庫查詢”

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

我在創建外部表“CREATE EXTERNAL TABLE [dbo].[Users]”時遇到錯誤消息

錯誤消息:-“數據庫中已經有一個名為‘用戶’的對象。”

示例數據庫 1st

[測試].[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
);


數據庫第二個[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”數據庫上的用戶表,那么它工作正常。 但我想使用相同的表名和結構。

如何將數據從一個數據庫中的一個表遷移到另一個數據庫上的另一個表,並且數據庫表名和結構在 Azure Sql 環境中都相同。

您想將一個表中的數據從一個數據庫遷移到另一個數據庫上的另一個表,並且數據庫表名和結構在 Azure Sql 環境中都相同,只是表到表,對嗎? 由於您的兩個數據庫在同一個 SQL Server 中,因此您可以使用 SSMS(SQL Server Management Studio)來執行此操作。

使用 SSMS 登錄 Azure sql 數據庫,選擇“SQL Server 身份驗證”:

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

選擇您的數據庫並創建一個新查詢,我嘗試使用以下代碼成功地將數據從表 MyDatabase2.dbo.Users 遷移到表 MyDatabase.dbo.Users:

INSERT INTO MyDatabase.dbo.Users (
  FirstName,
  LastName,
  UserID,
  PasswordSalt,
  Password,
  PasswordChanged,
  UserName) 
SELECT 
  FirstName,
  LastName,
  UserID,
  PasswordSalt,
  Password,
  PasswordChanged,
  UserName
  FROM MyDatabase2.dbo.Users

數據傳輸后,需要決定是否需要刪除或刪除另一個數據庫中的表。

您需要創建不同名稱的外部表,並在創建中定義其架構和真實名稱,如下

CREATE EXTERNAL TABLE [dbo].[ExternalUsers] (
  [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,
SCHEMA_NAME = 'dbo',
 OBJECT_NAME = 'Users');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM