1. ホーム
  2. データベース
  3. mssql2008

SQL Server 2008 データベース分散クエリの知識

2022-01-08 05:07:11

ある会社のシステムに接すると、データベースはSQL Server 2008を使用しており、データベース間の問い合わせが多く、データベースは複数のサーバーに分散されており、それぞれのデータベースは異なるモジュール機能のデータの保存を担当しています。これには、データベースの分散クエリも含まれます。

分散クエリに関する知識を深めること。

分散クエリは、複数の異種データソースからデータにアクセスします。これらのデータソースは、同じコンピューターに保存されていることも、異なるコンピューターに保存されていることもあり、Microsoft SQL Serverは、OLE DBを使用することによって分散クエリーをサポートしています。

SQL Server ユーザーは、分散クエリを使用して、以下にアクセスすることができます。

  • 複数のSQL Serverインスタンスに格納されている分散データ。
  • OLE DBアクセスインターフェースを使用してアクセス可能な、様々なリレーショナルおよび非リレーショナルデータソースに格納された異種データ。

OLE DB Access Interfaceは、データを行セットと呼ばれる表形式のオブジェクトで公開します。SQL Serverでは、OLE DB Access Interfaceの行セットをSQL ServerのテーブルのようにTransact-SQLステートメントで参照することができます。

外部データソースのテーブルとビューは、SELECT、INSERT、UPDATE、およびDELETE Transact-SQLステートメントで直接参照することが可能です。分散クエリはOLE DBを基本インターフェースとして使用するため、SQLクエリプロセッサーを備えた従来のDBMSシステムだけでなく、異なる機能を持った複雑なデータソースが管理するデータにもアクセスすることができるようになります。データを所有するソフトウェアがOLE DBアクセスインターフェースを通じて表形式の行セットでデータを公開すれば、分散クエリでそのデータを使用することができる。

会社の業務では、異なるサーバー上のデータベースを頻繁に使用する必要があるため、会社のデータベース用にリンクされたサーバーが大量に作成されている。これらのリンクされたサーバーを作成することによって、これらのリンクされたサーバーのエイリアスを使用して、SQL文の記述とSQLのオーバーヘッドを簡素化することができます。

SQL SERVER 2008の管理ツールを使用すると、直接インターフェースでリンクサーバーを追加することができます。ここでは、SQLステートメントを使用して、システムのストアドプロシージャを使用してリンクサーバーを追加する方法と、使用するストアドプロシージャを2つ紹介します。

sp_addlinkedserver
sp_addlinkedsrvlogin

1つはリンクサーバーの追加、もう1つはリンクサーバーの接続ログイン認証の追加です。この2つの手順のパラメータの意味については、マイクロソフト社のマニュアルを参照してください。この手順を実行するユーザーは、ログインするためにSysadmin権限を持っている必要があることに注意してください。

10.155.24.101上のFlieDB01テーブルの情報を10.155.25.100上のDBで使用したいとします。10.155.25.100上で次のSQLステートメントを実行します。

exec sp_addlinkedserver
@server='SZDB01', - alias of the server to add the link to
@srvproduct='',
@provider='SQLOLEDB',--specify the link through SQLOLEDB
@datasrc='10.155.24.101' - DB address
exec sp_addlinkedsrvlogin
'SZDB01',- alias of the connection server
'false',
NULL,
'szUSER',- login username
'Password@123' -- password for login
-- After execution, you can write a query like this
select * from openquery([SZDB01],'select file_No,file_Name from FileDB01.dbo.getFileList()') as tableA -- Here DZDB01 is the alias of the connection server added above

接続サーバーが複数ある場合は、そのうちの1つを追加します。

もう一つは、SQLの関数であるopendatasourceの使用は、その機能は、指定されたDBを開くには、この関数の実行は非常に低い特権は、技術マニュアルは、誰もがこの関数を実行することができると言うです。この関数は、ハッカーのデータバーストのテーブルの共通の手段、現在表示SQL Server 2008マニュアル、その説明はまだ誰もが実行する権限を持って言うです。

この関数は、使用頻度の低いクエリにのみ使用することができます。

簡単な例として

select * from opendatasource('SQLOLEDB','Data Source=10.155.24.100;User ID="szUSER";Password="Password@123"') as tableA

これも上記を実装したものです。

opendatasourceは、mdbのようなファイルを直接開くこともできます。私は実験していません、このテクニックは本に書かれています。

select * from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="d:/abcd.mdb"') 

概要

この記事の内容が、あなたの勉強や仕事の参考になれば幸いです。また、スクリプトハウスを応援していただきありがとうございます。もっと詳しく知りたい方は、以下のリンク先をご覧ください。