コンピューティングにおいて、データ ソース名( DSN 、データベース ソース名と呼ばれることもありますが、「データ ソース」はデータベース以外のリポジトリで構成されることもあります) は、データ ソースへの接続を記述するために使用される関連データ構造を持つ文字列です。 ODBCとの接続で最も一般的に使用されますが、 DSN はJDBCやその他のデータ アクセス メカニズムにも存在します。 この用語は「接続文字列」と重複することがよくあります。 ほとんどのシステムでは DSN と接続文字列を区別せず、この用語は多くの場合同じ意味で使用されます。[1]
DSN属性には以下のものが含まれますが、これらに限定されるわけではありません。[2]
- データソースの名前
- データソースの場所
- データソースにアクセスできるデータベースドライバの名前
- データアクセス用のユーザーID(必要な場合)
- データアクセス用のユーザーパスワード(必要な場合)
通常、クライアント マシンのシステム管理者は、関連するデータ ソースごとに個別の DSN を作成します。
DSN を標準化すると間接レベルが提供され、さまざまなアプリケーション ( Apache / PHPやIIS / ASPなど) が共有データ ソースにアクセスする際にこれを活用できます。
データソース名の種類
DSN には 2 種類あります。
- マシン DSN – 集合構成ファイル (例: /etc/odbc.ini、~/.odbc.ini) および/またはシステム リソース (例: Windows レジストリ HKLM\Software\ODBC\odbc.ini) に保存されます。
- ファイル DSN – ファイルごとに 1 つの DSN でファイルシステムに保存されます
これらはさらに以下のように分類されます
- システム DSN – システムのすべてのプロセスとユーザーがアクセス可能で、集中管理された場所 (例:
/etc/odbc.ini、//etc/odbc_file_dsns/<filename>)に保存されます。 - ユーザー DSN – DSN を作成したユーザーのみがアクセスでき、ユーザー固有の場所 (例:
/~/.odbc.ini、/~/odbc_file_dsns/<filename>)に保存されます。
使用例
ソフトウェア (Crystal Reports、Microsoft Excel、PHP、Perl、Python、Ruby など) ユーザーは、DSN への接続を確立することで、データ ソースに CRUD (作成、読み取り、更新、削除) クエリを送信できます。
DSN 接続を開くための ASP ( VBScript ) コードは次のようになります。
Dim DatabaseObject1を設定します。DatabaseObject1 = Server.CreateObject ( " ADODB.Connection " ) DatabaseObject1.Open ( " DSN=example;" )
PHPでPEAR::DB パッケージを使用して外部 DSN なしで接続を開く場合 (「DSN なしの接続」、つまり接続文字列を使用する場合)、コードは次のようになります。
require_once ( "DB.php" );
//$dsn = "<driver>://<username>:<password>@<host>:<port>/<database>";
$dsn = "mysql://john:pass@localhost:3306/my_db" ;
$db = DB :: connect ( $dsn );
[説明が必要]
PDO を使用した PHP。
$dsn = "mysql:host=localhost;dbname=example" ;
$dbh = 新しい PDO ( $dsn 、 $username 、 $password );
Perlでは、Perl DBIモジュールを使用して、各ドライバーに DSN 属性の独自の構文があります。DBI の唯一の要件は、ユーザー名とパスワードを除くすべての情報が単一の文字列引数で提供されることです。
私の$dsn = "DBI:Pg:database=finance;host=db.example.com;port=$port" ; $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port" ; $dsn = "DBI:Oracle:host=$host;sid=$sid;port=$port" ; $dsn = "DBI:SQLite:dbname=$dbfilename" ;
my $dbh = DBI -> connect ( $dsn 、'ユーザー名' 、'パスワード' );
参照
参考文献
- ^ 接続文字列と DSN
- ^ ODBC DSN接続文字列
