Подготовка БД и данных
Создание демонстрационных БД-источника и БД-приемника
В качестве примера интеграции создадим две БД T2.DemoSourceDB и T2.DemoTargetDB на существующем инстансе MS SQL Server. В каждой такой БД будет создана таблица с именем HelloWorld с полями Id и Text. В БД T2.DemoSourceDB вставим одну запись со значениями Id = 1 и Text = Hello World from T2.DemoSourceDB!. В БД T2.DemoTargetDB таблица HelloWorld изначально будет пустой.
Откройте Microsoft SQL Server Management Studio и выполните следующий скрипт (у пользователя должны быть соответствующие права на создание баз данных; как вариант - роль sysadmin):
SET NOCOUNT ON
GO
-- T2.DemoSourceDB
USE master
GO
IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'T2.DemoSourceDB')
DROP DATABASE [T2.DemoSourceDB];
GO
DECLARE @device_directory NVARCHAR(520);
SELECT
@device_directory = SUBSTRING(filename, 1, CHARINDEX(N'master.mdf', LOWER(filename)) - 1)
FROM
master.dbo.sysaltfiles
WHERE
dbid = 1 AND fileid = 1;
EXECUTE
(
N'CREATE DATABASE [T2.DemoSourceDB]
ON PRIMARY (NAME = N''T2.DemoSourceDB'', FILENAME = N''' + @device_directory + N'T2.DemoSourceDB.mdf'')
LOG ON (NAME = N''T2.DemoSourceDB_log'', FILENAME = N''' + @device_directory + N'T2.DemoSourceDB.ldf'')'
)
GO
IF CAST(SERVERPROPERTY('ProductMajorVersion') AS INT) < 12
BEGIN
EXEC sp_dboption 'T2.DemoSourceDB', 'trunc. log on chkpt.', 'true'
EXEC sp_dboption 'T2.DemoSourceDB', 'select into/bulkcopy', 'true'
END
ELSE
ALTER DATABASE [T2.DemoSourceDB] SET RECOVERY SIMPLE WITH NO_WAIT
GO
SET QUOTED_IDENTIFIER ON
GO
USE [T2.DemoSourceDB]
GO
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id('dbo.HelloWorld') and sysstat & 0xf = 3)
DROP TABLE "dbo"."HelloWorld"
GO
CREATE TABLE "HelloWorld"
(
"Id" INT IDENTITY (1, 1) NOT NULL,
"Text" NVARCHAR (100) NULL
CONSTRAINT "PK_HelloWorld" PRIMARY KEY CLUSTERED
(
"Id"
)
)
GO
INSERT "HelloWorld" ("Text") VALUES('Hello World from T2.DemoSourceDB!');
GO
-- T2.DemoTargetDB
USE master
GO
IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'T2.DemoTargetDB')
DROP DATABASE [T2.DemoTargetDB];
GO
DECLARE @device_directory NVARCHAR(520);
SELECT
@device_directory = SUBSTRING(filename, 1, CHARINDEX(N'master.mdf', LOWER(filename)) - 1)
FROM
master.dbo.sysaltfiles
WHERE
dbid = 1 AND fileid = 1;
EXECUTE
(
N'CREATE DATABASE [T2.DemoTargetDB]
ON PRIMARY (NAME = N''T2.DemoTargetDB'', FILENAME = N''' + @device_directory + N'T2.DemoTargetDB.mdf'')
LOG ON (NAME = N''T2.DemoTargetDB_log'', FILENAME = N''' + @device_directory + N'T2.DemoTargetDB.ldf'')'
)
GO
IF CAST(SERVERPROPERTY('ProductMajorVersion') AS INT) < 12
BEGIN
EXEC sp_dboption 'T2.DemoTargetDB', 'trunc. log on chkpt.', 'true'
EXEC sp_dboption 'T2.DemoTargetDB', 'select into/bulkcopy', 'true'
END
ELSE
ALTER DATABASE [T2.DemoTargetDB] SET RECOVERY SIMPLE WITH NO_WAIT
GO
SET QUOTED_IDENTIFIER ON
GO
USE [T2.DemoTargetDB]
GO
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id('dbo.HelloWorld') and sysstat & 0xf = 3)
DROP TABLE "dbo"."HelloWorld"
GO
CREATE TABLE "HelloWorld"
(
"Id" INT IDENTITY (1, 1) NOT NULL,
"Text" NVARCHAR (100) NULL
CONSTRAINT "PK_HelloWorld" PRIMARY KEY CLUSTERED
(
"Id"
)
)
GO
Выполните команду чтения данных в БД-источнике:
SELECT * FROM [T2.DemoSourceDB].[dbo].[HelloWorld];
Результатом будет строка следующего вида:
Id Text
--- ----------------------------------------------
1 Hello World from T2.DemoSourceDB!
Выполните команду чтения данных в БД-приемнике:
SELECT * FROM [T2.DemoTargetDB].[dbo].[HelloWorld];
Результат будет пустым:
Id Text
--- ----------------------------------------------