SlideShare a Scribd company logo
1 of 8
Download to read offline
1
Microsoft SQL Server ソースエンドポイント
スタンドアロン環境での非 sysadmin ユーザーのセットアップ
この資料では、Microsoft SQL Server のエンドポイント接続設定で sysadmin 以外のユー
ザーを指定できるようにセットアップする方法について説明します。
※ AlwaysOn 環境で sysadmin 以外のユーザーをセットアップする場合は、
AlwaysOn
可用性グループを使用する際の sysadmin 以外のユーザーのセットアップを参照し
てください。
制限事項と考慮事項
• サポートされているのは、SQL Server 2012 以降のみです。
• [Advanced] タブの [ Backup folder preprocessing command ]オプションはサポー
トされていません。
設定の手順
非 sysadmin レプリケートユーザーをサポートするには、次の手順を実行します。
1. レプリケーション用の SQL Server のセットアップ の説明に従ってレプリケーション
用の SQL Server をセットアップします。
2. ソース データベースで MS-REPLICATION を有効にします。これは、手動で実行す
るか、
sysadmin ユーザーを使用してタスクを 1 回実行することによって実行できます。
※ MS-REPLICATION ディストリビュータは、ローカルとして、または関連付け
られたリンク サーバーを介して sysadmin 以外のユーザーにアクセスできる
ように構成する必要があります。(適切な設定がなされていない場合、
“REPLICATION enablement requires SYSADMIN permission rank while user is
PERM_RANK_DBOWNER [1020101]”などのエラーによりタスク実行でエラ
ーが発生します。)
3. [ Exclusively use sp_repldone within a single task] オプションが有効になっている場合
は、MS-REPLICATION Log Reader ジョブを停止します。
4. マスターDB でスキーマ[attrep]を作成します。
5. 次のように、
Master データベースでテーブル値関数[attrep].[split_partition_list]を作成
します。
USE [master]
GO
2
set ansi_nulls on
go
set quoted_identifier on
go
if (object_id('[attrep].[split_partition_list]','TF')) is not null
drop function [attrep].[split_partition_list];
go
create function [attrep].[split_partition_list]
(
@plist varchar(8000), --A delimited list of partitions
@dlm nvarchar(1) --Delimiting character
)
returns @partitionsTable table --Table holding the BIGINT values of the string fragments
(
pid bigint primary key
)
as
begin
declare @partition_id bigint;
declare @dlm_pos integer;
declare @dlm_len integer;
set @dlm_len = len(@dlm);
while (charindex(@dlm,@plist)>0)
begin
set @dlm_pos = charindex(@dlm,@plist);
set @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
insert into @partitionsTable (pid) values (@partition_id)
set @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
end
set @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
insert into @partitionsTable (pid) values ( @partition_id );
return
end
GO
6. 次のように、Master データベースにプロシージャ[attrep].[rtm_dump_dblog]を作成し
ます。
USE [master]
GO
use [MASTER]
go
if (object_id('[attrep].[rtm_dump_dblog]','P')) is not null
drop procedure [attrep].[rtm_dump_dblog];
go
set ansi_nulls on
go
set quoted_identifier on
go
create procedure [attrep].[rtm_dump_dblog]
(
@start_lsn varchar(32),
3
@seqno integer,
@filename varchar(260),
@partition_list varchar(8000), -- A comma delimited list: P1,P2,... Pn
@programmed_filtering integer,
@minPartition bigint,
@maxPartition bigint
)
as begin
declare @start_lsn_cmp varchar(32); -- Stands against the GT comparator
SET NOCOUNT ON -- Disable "rows affected display"
set @start_lsn_cmp = @start_lsn;
if (@start_lsn_cmp) is null
set @start_lsn_cmp = '00000000:00000000:0000';
if (@partition_list is null)
begin
RAISERROR ('Null partition list waspassed',16,1);
return
--set @partition_list = '0,'; -- A dummy which is never matched
end
if (@start_lsn) is not null
set @start_lsn = '0x'+@start_lsn;
if (@programmed_filtering=0)
SELECT
[Current LSN],
[operation],
[Context],
[Transaction ID],
[Transaction Name],
[Begin Time],
[End Time],
[Flag Bits],
[PartitionID],
[Page ID],
[Slot ID],
[RowLog Contents 0],
[Log Record],
[RowLog Contents 1] -- After Image
FROM
fn_dump_dblog (
@start_lsn, NULL, N'DISK', @seqno, @filename,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default)
where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate
SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
and
(
( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
4
or
( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
and
( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context]
= 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,14,28))) ) -- This one filters only TEXT_MIX
of interest.
and [PartitionID] in ( select * from master.attrep.split_partition_list (@partition_list,','))
)
or
([operation] = 'LOP_HOBT_DDL')
)
else
SELECT
[Current LSN],
[operation],
[Context],
[Transaction ID],
[Transaction Name],
[Begin Time],
[End Time],
[Flag Bits],
[PartitionID],
[Page ID],
[Slot ID],
[RowLog Contents 0],
[Log Record],
[RowLog Contents 1] -- After Image
FROM
fn_dump_dblog (
@start_lsn, NULL, N'DISK', @seqno, @filename,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default,
default, default, default, default, default, default, default)
where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate
SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
and
(
( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
or
( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
and
( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context]
= 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,14,28))) ) -- This one filters only TEXT_MIX
of interest.
and ([PartitionID] is not null) and ([PartitionID] >= @minPartition and
[PartitionID]<=@maxPartition)
)
or
5
([operation] = 'LOP_HOBT_DDL')
)
SET NOCOUNT OFF -- Re-enable "rows affected display"
end
GO
7. Master DB で証明書を作成します。(以下の'choose_your_own_pwd'を任意のパスワー
ドに変更します。)
Use [master]
Go
CREATE CERTIFICATE [attrep_rtm_dump_dblog_cert]
ENCRYPTION BY PASSWORD = N'choose_your_own_pwd'
WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions';
8. 次のように、証明書からログインを作成します。
Use [master]
Go
CREATE LOGIN attrep_rtm_dump_dblog_login FROM CERTIFICATE
[attrep_rtm_dump_dblog_cert];
9. 次のように、ログインを sysadmin サーバーロールに追加します。
ALTER SERVER ROLE [sysadmin] ADD MEMBER [attrep_rtm_dump_dblog_login];
10. 次のように、証明書の署名を [master].[attrep].[rtm_dump_dblog]に追加します。(以下
の'choose_your_own_pwd'を任意のパスワードに変更します。)
Use [master]
GO
ADD SIGNATURE
TO [master].[attrep].[rtm_dump_dblog]
BY CERTIFICATE [attrep_rtm_dump_dblog_cert]
WITH PASSWORD = 'choose_your_own_pwd';
※ ストアド プロシージャを再作成する場合は、署名を再度追加する必要があります。
11. 次のように、Master データベースにプロシージャ
[attrep].[rtm_position_1st_timestamp]を作成します。
use [master]
if object_id('[attrep].[rtm_position_1st_timestamp]','P') is not null
DROP PROCEDURE [attrep].[rtm_position_1st_timestamp];
6
go
create procedure [attrep].[rtm_position_1st_timestamp]
(
@dbname sysname, -- Database name
@seqno integer, -- Backup set sequence/position number within file
@filename varchar(260), -- The backup filename
@1stTimeStamp varchar(40) -- The timestamp to position by
)
as begin
SET NOCOUNT ON -- Disable "rows affected display"
declare @firstMatching table
(
cLsn varchar(32),
bTim datetime
)
declare @sql nvarchar(4000)
declare @nl char(2)
declare @tb char(2)
declare @fnameVar sysname = 'NULL'
set @nl = char(10); -- New line
set @tb = char(9) -- Tab separator
if (@filename is not null)
set @fnameVar = ''''+@filename +''''
set @sql='use ['+@dbname+'];'+@nl+
'select top 1 [Current LSN],[Begin Time]'+@nl+
'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @fnameVar+','+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default,'+@nl+
@tb+'default, default, default, default, default, default, default)'+@nl+
'where operation=''LOP_BEGIN_XACT''' +@nl+
'and [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
--print @sql
delete from @firstMatching
insert into @firstMatching exec sp_executesql @sql -- Get them all
select top 1 cLsn as [matching LSN],convert(varchar,bTim,121) as [matching Timestamp] from @firstMatching;
SET NOCOUNT OFF -- Re-enable "rows affected display"
end
GO
12. Master DB で証明書を作成します。
Use [master]
Go
CREATE CERTIFICATE [attrep_rtm_position_1st_timestamp_cert]
ENCRYPTION BY PASSWORD = N'choose_your_own_pwd'
WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
7
13. 次のように証明書からログインを作成します。
Use [master]
Go
CREATE LOGIN attrep_rtm_position_1st_timestamp_login FROM CERTIFICATE
[attrep_rtm_position_1st_timestamp_cert];
14. 次のように、ログインを sysadmin サーバー ロールに追加します。
ALTER SERVER ROLE [sysadmin] ADD MEMBER [attrep_rtm_position_1st_timestamp_login];
15. 証明書によって署名を[master].[attrep].[rtm_position_1st_timestamp]に追加するには、
次のようにします。
(以下の'choose_your_own_pwd'を任意のパスワードに変更します。
)
Use [master]
GO
ADD SIGNATURE
TO [master].[attrep].[rtm_position_1st_timestamp]
BY CERTIFICATE [attrep_rtm_position_1st_timestamp_cert]
WITH PASSWORD = 'choose_your_own_pwd';
※ ストアド プロシージャを再作成する場合は、署名を再度追加する必要があります。
16. 次の各データベースで、次の権限/ロールを持つユーザーを作成します。
• Master DB:
 select on sys.fn_dblog
 view any definition
 view server state (should be granted to the login).
 execute on sp_repldone
 execute on sp_replincrementlsn
 execute on sp_addpublication
 execute on sp_addarticle
 execute on sp_articlefilter
 select on [attrep].[split_partition_list]
 execute on [attrep].[rtm_dump_dblog]
 execute on [attrep].[rtm_position_1st_timestamp]
8
• MSDB DB:
 select on msdb.dbo.backupset
 select on msdb.dbo.backupmediafamily
 select on msdb.dbo.backupfile
• ソース データベース:
 db_owner ROLE
以下が権限/ロールを持つユーザーを作成するためのスクリプトの例です:
USE [master]
GO
CREATE LOGIN [replicate] WITH PASSWORD=N'Qlik123!', DEFAULT_DATABASE=[master],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
CREATE USER replicate FROM LOGIN [replicate];
Grant select on sys.fn_dblog to replicate;
Grant view any definition to replicate;
Grant view server state to replicate;
Grant execute on sp_repldone to replicate;
Grant execute on sp_replincrementlsn to replicate;
Grant execute on sp_addpublication to replicate;
Grant execute on sp_addarticle to replicate;
Grant execute on sp_articlefilter to replicate;
Grant select on [attrep].[split_partition_list] to replicate;
Grant execute on [attrep].[rtm_dump_dblog] to replicate;
Grant execute on [attrep].[rtm_position_1st_timestamp] to replicate;
use MSDB
GO
CREATE USER replicate FROM LOGIN [replicate];
Grant select on msdb.dbo.backupset to replicate;
Grant select on msdb.dbo.backupmediafamily to replicate;
Grant select on msdb.dbo.backupfile to replicate;
use Source1
GO
CREATE USER replicate FROM LOGIN [replicate];
exec sp_addrolemember 'db_owner', 'replicate';

More Related Content

What's hot

Global Rule(変換・フィルターなど)の詳細
Global Rule(変換・フィルターなど)の詳細Global Rule(変換・フィルターなど)の詳細
Global Rule(変換・フィルターなど)の詳細QlikPresalesJapan
 
Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細QlikPresalesJapan
 
Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理QlikPresalesJapan
 
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用QlikPresalesJapan
 
ODBCのソース・ターゲットエンドポイントとしての利用
ODBCのソース・ターゲットエンドポイントとしての利用ODBCのソース・ターゲットエンドポイントとしての利用
ODBCのソース・ターゲットエンドポイントとしての利用QlikPresalesJapan
 
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用QlikPresalesJapan
 
Qlik Replicate - サーバー設定(Server Settings)の詳細
Qlik Replicate - サーバー設定(Server Settings)の詳細Qlik Replicate - サーバー設定(Server Settings)の詳細
Qlik Replicate - サーバー設定(Server Settings)の詳細Masaki Hamano
 
Qlik Replicateのファイルチャネルの利用
Qlik Replicateのファイルチャネルの利用Qlik Replicateのファイルチャネルの利用
Qlik Replicateのファイルチャネルの利用QlikPresalesJapan
 
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用するQlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用するQlikPresalesJapan
 
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)QlikPresalesJapan
 
Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用QlikPresalesJapan
 
Qlik composeを利用したDWH構築の流れ
Qlik composeを利用したDWH構築の流れQlik composeを利用したDWH構築の流れ
Qlik composeを利用したDWH構築の流れQlikPresalesJapan
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Masayuki Ozawa
 
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜Michitoshi Yoshida
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことSatoshi Suzuki
 
SAP HANAのターゲットエンドポイントとしての利用
SAP HANAのターゲットエンドポイントとしての利用SAP HANAのターゲットエンドポイントとしての利用
SAP HANAのターゲットエンドポイントとしての利用QlikPresalesJapan
 
IBM DB2 for iSeriesのソースエンドポイントとしての利用
IBM DB2 for iSeriesのソースエンドポイントとしての利用IBM DB2 for iSeriesのソースエンドポイントとしての利用
IBM DB2 for iSeriesのソースエンドポイントとしての利用QlikPresalesJapan
 
Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用QlikPresalesJapan
 
Qlik Tips 20210420 スクリプトエディターのデバッグ機能
Qlik Tips 20210420 スクリプトエディターのデバッグ機能Qlik Tips 20210420 スクリプトエディターのデバッグ機能
Qlik Tips 20210420 スクリプトエディターのデバッグ機能QlikPresalesJapan
 
Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用QlikPresalesJapan
 

What's hot (20)

Global Rule(変換・フィルターなど)の詳細
Global Rule(変換・フィルターなど)の詳細Global Rule(変換・フィルターなど)の詳細
Global Rule(変換・フィルターなど)の詳細
 
Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細Qlik Replicate - Control Tableの詳細
Qlik Replicate - Control Tableの詳細
 
Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理
 
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
 
ODBCのソース・ターゲットエンドポイントとしての利用
ODBCのソース・ターゲットエンドポイントとしての利用ODBCのソース・ターゲットエンドポイントとしての利用
ODBCのソース・ターゲットエンドポイントとしての利用
 
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
 
Qlik Replicate - サーバー設定(Server Settings)の詳細
Qlik Replicate - サーバー設定(Server Settings)の詳細Qlik Replicate - サーバー設定(Server Settings)の詳細
Qlik Replicate - サーバー設定(Server Settings)の詳細
 
Qlik Replicateのファイルチャネルの利用
Qlik Replicateのファイルチャネルの利用Qlik Replicateのファイルチャネルの利用
Qlik Replicateのファイルチャネルの利用
 
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用するQlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
 
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
 
Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用Qlik ReplicateでのLog Streamの利用
Qlik ReplicateでのLog Streamの利用
 
Qlik composeを利用したDWH構築の流れ
Qlik composeを利用したDWH構築の流れQlik composeを利用したDWH構築の流れ
Qlik composeを利用したDWH構築の流れ
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
 
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
 
SAP HANAのターゲットエンドポイントとしての利用
SAP HANAのターゲットエンドポイントとしての利用SAP HANAのターゲットエンドポイントとしての利用
SAP HANAのターゲットエンドポイントとしての利用
 
IBM DB2 for iSeriesのソースエンドポイントとしての利用
IBM DB2 for iSeriesのソースエンドポイントとしての利用IBM DB2 for iSeriesのソースエンドポイントとしての利用
IBM DB2 for iSeriesのソースエンドポイントとしての利用
 
Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用
 
Qlik Tips 20210420 スクリプトエディターのデバッグ機能
Qlik Tips 20210420 スクリプトエディターのデバッグ機能Qlik Tips 20210420 スクリプトエディターのデバッグ機能
Qlik Tips 20210420 スクリプトエディターのデバッグ機能
 
Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用
 

Similar to Microsoft SQL Serverソースエンドポイント-スタンドアロン環境での非sysadminユーザーのセットアップ

MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較Shinya Sugiyama
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門だいすけ さとう
 
MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要Shinya Sugiyama
 
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4Ransui Iso
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較Shinya Sugiyama
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)Satoshi Yamada
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0Wataru Kani
 
activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介Kevin Toyoda
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...Insight Technology, Inc.
 
MySQL(RDB)入門 => PHPでアクセス
MySQL(RDB)入門 => PHPでアクセスMySQL(RDB)入門 => PHPでアクセス
MySQL(RDB)入門 => PHPでアクセスKimiyuki Yamauchi
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろTakuya Tsuchida
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形yoku0825
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類Tetsuya Hasegawa
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方Soudai Sone
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
MySQL5.6検証レポート
MySQL5.6検証レポートMySQL5.6検証レポート
MySQL5.6検証レポートHironori Miura
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門Yu Iwama
 

Similar to Microsoft SQL Serverソースエンドポイント-スタンドアロン環境での非sysadminユーザーのセットアップ (20)

MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
 
MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要
 
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0
 
activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
 
MySQL(RDB)入門 => PHPでアクセス
MySQL(RDB)入門 => PHPでアクセスMySQL(RDB)入門 => PHPでアクセス
MySQL(RDB)入門 => PHPでアクセス
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
MySQL5.6検証レポート
MySQL5.6検証レポートMySQL5.6検証レポート
MySQL5.6検証レポート
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門
 

More from QlikPresalesJapan

Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQLTalend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQLQlikPresalesJapan
 
2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptx
2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptx2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptx
2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptxQlikPresalesJapan
 
Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介
Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介
Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介QlikPresalesJapan
 
Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法
Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法
Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法QlikPresalesJapan
 
Qlik Tips - 2024/04/16 Capacity データ消費の確認
Qlik Tips - 2024/04/16 Capacity データ消費の確認Qlik Tips - 2024/04/16 Capacity データ消費の確認
Qlik Tips - 2024/04/16 Capacity データ消費の確認QlikPresalesJapan
 
Talend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJar
Talend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJarTalend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJar
Talend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJarQlikPresalesJapan
 
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説QlikPresalesJapan
 
Talend Cloudの管理プラットフォーム Talend Management Consoleのご紹介
Talend Cloudの管理プラットフォームTalend Management Consoleのご紹介Talend Cloudの管理プラットフォームTalend Management Consoleのご紹介
Talend Cloudの管理プラットフォーム Talend Management Consoleのご紹介QlikPresalesJapan
 
【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用
【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用
【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用QlikPresalesJapan
 
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法QlikPresalesJapan
 
Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)
Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)
Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)QlikPresalesJapan
 
Talend Studioの汎用JDBCコンポーネントを使う - JDBC API
Talend Studioの汎用JDBCコンポーネントを使う - JDBC APITalend Studioの汎用JDBCコンポーネントを使う - JDBC API
Talend Studioの汎用JDBCコンポーネントを使う - JDBC APIQlikPresalesJapan
 
20240319 Qlik Tips 折れ線チャートの時系列予測についての説明
20240319  Qlik Tips  折れ線チャートの時系列予測についての説明20240319  Qlik Tips  折れ線チャートの時系列予測についての説明
20240319 Qlik Tips 折れ線チャートの時系列予測についての説明QlikPresalesJapan
 
どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析
どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析
どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析QlikPresalesJapan
 
TECH TALK Talend Administration Center の紹介
TECH TALK Talend Administration Center の紹介TECH TALK Talend Administration Center の紹介
TECH TALK Talend Administration Center の紹介QlikPresalesJapan
 
【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-
【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-
【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-QlikPresalesJapan
 
Qlik What's New - February 2024 リリースの新機能のご紹介
Qlik What's New - February 2024 リリースの新機能のご紹介Qlik What's New - February 2024 リリースの新機能のご紹介
Qlik What's New - February 2024 リリースの新機能のご紹介QlikPresalesJapan
 
20240213_TechTalk_TalendStudio.pptx
20240213_TechTalk_TalendStudio.pptx20240213_TechTalk_TalendStudio.pptx
20240213_TechTalk_TalendStudio.pptxQlikPresalesJapan
 
20240206 Qlik Tips Pivot Straight TBL の改善
20240206 Qlik Tips Pivot Straight TBL の改善20240206 Qlik Tips Pivot Straight TBL の改善
20240206 Qlik Tips Pivot Straight TBL の改善QlikPresalesJapan
 
新しいテキストオブジェクト
新しいテキストオブジェクト新しいテキストオブジェクト
新しいテキストオブジェクトQlikPresalesJapan
 

More from QlikPresalesJapan (20)

Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQLTalend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
 
2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptx
2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptx2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptx
2024/04/25 Qlik医療データ活用勉強会_第36回_202404.pptx
 
Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介
Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介
Qlik TECH TALK 組織のメタデータを一元管理「Talend Data Catalog」のご紹介
 
Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法
Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法
Qlik Tips 20240416 Qlik Senseのトレンド線の係数の計算方法
 
Qlik Tips - 2024/04/16 Capacity データ消費の確認
Qlik Tips - 2024/04/16 Capacity データ消費の確認Qlik Tips - 2024/04/16 Capacity データ消費の確認
Qlik Tips - 2024/04/16 Capacity データ消費の確認
 
Talend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJar
Talend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJarTalend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJar
Talend Studioで独自関数を実装して呼び出す - グローバルルーチンとカスタムルーチンJar
 
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
Qlik TECHTALK Qlik Cloud 日本リージョン開設!テナント作成と移行方法を解説
 
Talend Cloudの管理プラットフォーム Talend Management Consoleのご紹介
Talend Cloudの管理プラットフォームTalend Management Consoleのご紹介Talend Cloudの管理プラットフォームTalend Management Consoleのご紹介
Talend Cloudの管理プラットフォーム Talend Management Consoleのご紹介
 
【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用
【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用
【Qlik 医療データ活用勉強会】-速報-令和4年度DPC「退院患者調査」データの活用
 
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
 
Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)
Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)
Direct QueryのカスタムSQL(Qlik Tips ~ Qlik を使いこなす!スキルアップ勉強会)
 
Talend Studioの汎用JDBCコンポーネントを使う - JDBC API
Talend Studioの汎用JDBCコンポーネントを使う - JDBC APITalend Studioの汎用JDBCコンポーネントを使う - JDBC API
Talend Studioの汎用JDBCコンポーネントを使う - JDBC API
 
20240319 Qlik Tips 折れ線チャートの時系列予測についての説明
20240319  Qlik Tips  折れ線チャートの時系列予測についての説明20240319  Qlik Tips  折れ線チャートの時系列予測についての説明
20240319 Qlik Tips 折れ線チャートの時系列予測についての説明
 
どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析
どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析
どうしてそうなったのか?機械学習モデルで「結果」の「理由」を知るキードライバー分析
 
TECH TALK Talend Administration Center の紹介
TECH TALK Talend Administration Center の紹介TECH TALK Talend Administration Center の紹介
TECH TALK Talend Administration Center の紹介
 
【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-
【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-
【Qlik 医療データ活用勉強会】機能評価係数Ⅱの内訳データの分析  -その2-
 
Qlik What's New - February 2024 リリースの新機能のご紹介
Qlik What's New - February 2024 リリースの新機能のご紹介Qlik What's New - February 2024 リリースの新機能のご紹介
Qlik What's New - February 2024 リリースの新機能のご紹介
 
20240213_TechTalk_TalendStudio.pptx
20240213_TechTalk_TalendStudio.pptx20240213_TechTalk_TalendStudio.pptx
20240213_TechTalk_TalendStudio.pptx
 
20240206 Qlik Tips Pivot Straight TBL の改善
20240206 Qlik Tips Pivot Straight TBL の改善20240206 Qlik Tips Pivot Straight TBL の改善
20240206 Qlik Tips Pivot Straight TBL の改善
 
新しいテキストオブジェクト
新しいテキストオブジェクト新しいテキストオブジェクト
新しいテキストオブジェクト
 

Microsoft SQL Serverソースエンドポイント-スタンドアロン環境での非sysadminユーザーのセットアップ

  • 1. 1 Microsoft SQL Server ソースエンドポイント スタンドアロン環境での非 sysadmin ユーザーのセットアップ この資料では、Microsoft SQL Server のエンドポイント接続設定で sysadmin 以外のユー ザーを指定できるようにセットアップする方法について説明します。 ※ AlwaysOn 環境で sysadmin 以外のユーザーをセットアップする場合は、 AlwaysOn 可用性グループを使用する際の sysadmin 以外のユーザーのセットアップを参照し てください。 制限事項と考慮事項 • サポートされているのは、SQL Server 2012 以降のみです。 • [Advanced] タブの [ Backup folder preprocessing command ]オプションはサポー トされていません。 設定の手順 非 sysadmin レプリケートユーザーをサポートするには、次の手順を実行します。 1. レプリケーション用の SQL Server のセットアップ の説明に従ってレプリケーション 用の SQL Server をセットアップします。 2. ソース データベースで MS-REPLICATION を有効にします。これは、手動で実行す るか、 sysadmin ユーザーを使用してタスクを 1 回実行することによって実行できます。 ※ MS-REPLICATION ディストリビュータは、ローカルとして、または関連付け られたリンク サーバーを介して sysadmin 以外のユーザーにアクセスできる ように構成する必要があります。(適切な設定がなされていない場合、 “REPLICATION enablement requires SYSADMIN permission rank while user is PERM_RANK_DBOWNER [1020101]”などのエラーによりタスク実行でエラ ーが発生します。) 3. [ Exclusively use sp_repldone within a single task] オプションが有効になっている場合 は、MS-REPLICATION Log Reader ジョブを停止します。 4. マスターDB でスキーマ[attrep]を作成します。 5. 次のように、 Master データベースでテーブル値関数[attrep].[split_partition_list]を作成 します。 USE [master] GO
  • 2. 2 set ansi_nulls on go set quoted_identifier on go if (object_id('[attrep].[split_partition_list]','TF')) is not null drop function [attrep].[split_partition_list]; go create function [attrep].[split_partition_list] ( @plist varchar(8000), --A delimited list of partitions @dlm nvarchar(1) --Delimiting character ) returns @partitionsTable table --Table holding the BIGINT values of the string fragments ( pid bigint primary key ) as begin declare @partition_id bigint; declare @dlm_pos integer; declare @dlm_len integer; set @dlm_len = len(@dlm); while (charindex(@dlm,@plist)>0) begin set @dlm_pos = charindex(@dlm,@plist); set @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint); insert into @partitionsTable (pid) values (@partition_id) set @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist)); end set @partition_id = cast (ltrim(rtrim(@plist)) as bigint); insert into @partitionsTable (pid) values ( @partition_id ); return end GO 6. 次のように、Master データベースにプロシージャ[attrep].[rtm_dump_dblog]を作成し ます。 USE [master] GO use [MASTER] go if (object_id('[attrep].[rtm_dump_dblog]','P')) is not null drop procedure [attrep].[rtm_dump_dblog]; go set ansi_nulls on go set quoted_identifier on go create procedure [attrep].[rtm_dump_dblog] ( @start_lsn varchar(32),
  • 3. 3 @seqno integer, @filename varchar(260), @partition_list varchar(8000), -- A comma delimited list: P1,P2,... Pn @programmed_filtering integer, @minPartition bigint, @maxPartition bigint ) as begin declare @start_lsn_cmp varchar(32); -- Stands against the GT comparator SET NOCOUNT ON -- Disable "rows affected display" set @start_lsn_cmp = @start_lsn; if (@start_lsn_cmp) is null set @start_lsn_cmp = '00000000:00000000:0000'; if (@partition_list is null) begin RAISERROR ('Null partition list waspassed',16,1); return --set @partition_list = '0,'; -- A dummy which is never matched end if (@start_lsn) is not null set @start_lsn = '0x'+@start_lsn; if (@programmed_filtering=0) SELECT [Current LSN], [operation], [Context], [Transaction ID], [Transaction Name], [Begin Time], [End Time], [Flag Bits], [PartitionID], [Page ID], [Slot ID], [RowLog Contents 0], [Log Record], [RowLog Contents 1] -- After Image FROM fn_dump_dblog ( @start_lsn, NULL, N'DISK', @seqno, @filename, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default) where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator. and ( ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
  • 4. 4 or ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW') and ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,14,28))) ) -- This one filters only TEXT_MIX of interest. and [PartitionID] in ( select * from master.attrep.split_partition_list (@partition_list,',')) ) or ([operation] = 'LOP_HOBT_DDL') ) else SELECT [Current LSN], [operation], [Context], [Transaction ID], [Transaction Name], [Begin Time], [End Time], [Flag Bits], [PartitionID], [Page ID], [Slot ID], [RowLog Contents 0], [Log Record], [RowLog Contents 1] -- After Image FROM fn_dump_dblog ( @start_lsn, NULL, N'DISK', @seqno, @filename, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default) where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator. and ( ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') ) or ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW') and ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,14,28))) ) -- This one filters only TEXT_MIX of interest. and ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition) ) or
  • 5. 5 ([operation] = 'LOP_HOBT_DDL') ) SET NOCOUNT OFF -- Re-enable "rows affected display" end GO 7. Master DB で証明書を作成します。(以下の'choose_your_own_pwd'を任意のパスワー ドに変更します。) Use [master] Go CREATE CERTIFICATE [attrep_rtm_dump_dblog_cert] ENCRYPTION BY PASSWORD = N'choose_your_own_pwd' WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions'; 8. 次のように、証明書からログインを作成します。 Use [master] Go CREATE LOGIN attrep_rtm_dump_dblog_login FROM CERTIFICATE [attrep_rtm_dump_dblog_cert]; 9. 次のように、ログインを sysadmin サーバーロールに追加します。 ALTER SERVER ROLE [sysadmin] ADD MEMBER [attrep_rtm_dump_dblog_login]; 10. 次のように、証明書の署名を [master].[attrep].[rtm_dump_dblog]に追加します。(以下 の'choose_your_own_pwd'を任意のパスワードに変更します。) Use [master] GO ADD SIGNATURE TO [master].[attrep].[rtm_dump_dblog] BY CERTIFICATE [attrep_rtm_dump_dblog_cert] WITH PASSWORD = 'choose_your_own_pwd'; ※ ストアド プロシージャを再作成する場合は、署名を再度追加する必要があります。 11. 次のように、Master データベースにプロシージャ [attrep].[rtm_position_1st_timestamp]を作成します。 use [master] if object_id('[attrep].[rtm_position_1st_timestamp]','P') is not null DROP PROCEDURE [attrep].[rtm_position_1st_timestamp];
  • 6. 6 go create procedure [attrep].[rtm_position_1st_timestamp] ( @dbname sysname, -- Database name @seqno integer, -- Backup set sequence/position number within file @filename varchar(260), -- The backup filename @1stTimeStamp varchar(40) -- The timestamp to position by ) as begin SET NOCOUNT ON -- Disable "rows affected display" declare @firstMatching table ( cLsn varchar(32), bTim datetime ) declare @sql nvarchar(4000) declare @nl char(2) declare @tb char(2) declare @fnameVar sysname = 'NULL' set @nl = char(10); -- New line set @tb = char(9) -- Tab separator if (@filename is not null) set @fnameVar = ''''+@filename +'''' set @sql='use ['+@dbname+'];'+@nl+ 'select top 1 [Current LSN],[Begin Time]'+@nl+ 'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @fnameVar+','+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default,'+@nl+ @tb+'default, default, default, default, default, default, default)'+@nl+ 'where operation=''LOP_BEGIN_XACT''' +@nl+ 'and [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl --print @sql delete from @firstMatching insert into @firstMatching exec sp_executesql @sql -- Get them all select top 1 cLsn as [matching LSN],convert(varchar,bTim,121) as [matching Timestamp] from @firstMatching; SET NOCOUNT OFF -- Re-enable "rows affected display" end GO 12. Master DB で証明書を作成します。 Use [master] Go CREATE CERTIFICATE [attrep_rtm_position_1st_timestamp_cert] ENCRYPTION BY PASSWORD = N'choose_your_own_pwd' WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
  • 7. 7 13. 次のように証明書からログインを作成します。 Use [master] Go CREATE LOGIN attrep_rtm_position_1st_timestamp_login FROM CERTIFICATE [attrep_rtm_position_1st_timestamp_cert]; 14. 次のように、ログインを sysadmin サーバー ロールに追加します。 ALTER SERVER ROLE [sysadmin] ADD MEMBER [attrep_rtm_position_1st_timestamp_login]; 15. 証明書によって署名を[master].[attrep].[rtm_position_1st_timestamp]に追加するには、 次のようにします。 (以下の'choose_your_own_pwd'を任意のパスワードに変更します。 ) Use [master] GO ADD SIGNATURE TO [master].[attrep].[rtm_position_1st_timestamp] BY CERTIFICATE [attrep_rtm_position_1st_timestamp_cert] WITH PASSWORD = 'choose_your_own_pwd'; ※ ストアド プロシージャを再作成する場合は、署名を再度追加する必要があります。 16. 次の各データベースで、次の権限/ロールを持つユーザーを作成します。 • Master DB:  select on sys.fn_dblog  view any definition  view server state (should be granted to the login).  execute on sp_repldone  execute on sp_replincrementlsn  execute on sp_addpublication  execute on sp_addarticle  execute on sp_articlefilter  select on [attrep].[split_partition_list]  execute on [attrep].[rtm_dump_dblog]  execute on [attrep].[rtm_position_1st_timestamp]
  • 8. 8 • MSDB DB:  select on msdb.dbo.backupset  select on msdb.dbo.backupmediafamily  select on msdb.dbo.backupfile • ソース データベース:  db_owner ROLE 以下が権限/ロールを持つユーザーを作成するためのスクリプトの例です: USE [master] GO CREATE LOGIN [replicate] WITH PASSWORD=N'Qlik123!', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO CREATE USER replicate FROM LOGIN [replicate]; Grant select on sys.fn_dblog to replicate; Grant view any definition to replicate; Grant view server state to replicate; Grant execute on sp_repldone to replicate; Grant execute on sp_replincrementlsn to replicate; Grant execute on sp_addpublication to replicate; Grant execute on sp_addarticle to replicate; Grant execute on sp_articlefilter to replicate; Grant select on [attrep].[split_partition_list] to replicate; Grant execute on [attrep].[rtm_dump_dblog] to replicate; Grant execute on [attrep].[rtm_position_1st_timestamp] to replicate; use MSDB GO CREATE USER replicate FROM LOGIN [replicate]; Grant select on msdb.dbo.backupset to replicate; Grant select on msdb.dbo.backupmediafamily to replicate; Grant select on msdb.dbo.backupfile to replicate; use Source1 GO CREATE USER replicate FROM LOGIN [replicate]; exec sp_addrolemember 'db_owner', 'replicate';