SQL Serverでリンクサーバーを使用するときにユーザー権限を正しく設定しないと性能問題に遭遇する件

投稿者: | 3月 9, 2015

SQL Server 2012以前のSQL Serverでは、リンクサーバーはログインにdd_ddladminまたはdb_owner、sysadminを権限を使用したほうが、良い実行計画の遂行が行われます。

image

上の図のような状態で実験をしてみます。

testリンクサーバーとは、「db_datareader」権限のユーザーを使用。

test1リンクサーバーとは、「db_datareader」と「db_ddladmin」権限のユーザーを使用。

次のクエリを実行する。

select * from [TEST1].[AdventureWorks].[Sales].[SalesOrderDetail]
a INNER JOIN dbo.[SalesOrderHeaderSalesReason] b
ON a.SalesOrderID = b.SalesOrderID
where b.SalesOrderID between 75017 and 75111

select * from [TEST].[AdventureWorks].[Sales].[SalesOrderDetail]
a INNER JOIN dbo.[SalesOrderHeaderSalesReason] b
ON a.SalesOrderID = b.SalesOrderID
where b.SalesOrderID between 75017 and 75111

こんな感じで明らかに実行計画上に差異が発生します。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください