Как выполнять кросс-запросы к базе данных в SQL Azure с одинаковым именем таблицы и структурой в обеих базах данных - PullRequest
0 голосов
/ 15 октября 2018

Мне нужна помощь Ur относительно запроса на соединение между двумя разными базами данных SQL Azure с одинаковым именем таблицы и одинаковой структурой.На самом деле у меня есть две разные базы данных с тем же именем таблицы и целые поля с разными данными.

Я хотел бы перенести данные из одной базы данных в другую в Azure Sql или присоединиться к таблице (обе таблицы имеют одинаковое имя и структуру).Для этого я использую «Elastic Database Query»

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

При создании внешней таблицы «CREATE EXTERNAL TABLE [dbo]. [Users]» * 1008 я сталкиваюсь с сообщением об ошибке.*

Сообщение об ошибке: - «В базе данных уже есть объект с именем« Пользователи ».»

Пример базы данных 1-й

[Тест]. [dbo]. [Users]

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


База данных 2-ая [TestAnother]. [dbo]. [Users]

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

Я написал Elastic Query Database следующим образом:

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

Если я удаляю или переименовываю таблицу Users в базе данных «TestAnother», то она работает нормально.Но я хочу использовать одно и то же имя и структуру таблицы.

Как я могу перенести данные из одной таблицы из одной базы данных в другую таблицу в другой базе данных, и имя, и структура таблицы базы данных совпадают в среде Azure Sql.

1 Ответ

0 голосов
/ 05 декабря 2018

Вы хотите перенести данные из одной таблицы из одной базы данных в другую таблицу в другой базе данных, и имя и структура таблицы базы данных в среде Azure Sql одинаковы, просто таблица-таблица, я прав?Поскольку две базы данных находятся на одном и том же сервере SQL, вы выполняете эту операцию с помощью SSMS (SQL Server Management Studio).

Войдите в базу данных SQL Azure с помощью SSMS, выберите «Аутентификация 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

После того, как данные переданы, вам нужно решить, нужно ли удалить или удалить таблицу в другой базе данных.

...