Datakällans namn

Inom datoranvändning är ett datakällnamn ( DSN , ibland känt som ett databaskällnamn , även om " datakällor " kan omfatta andra förråd förutom databaser ) en sträng som har en associerad datastruktur som används för att beskriva en anslutning till en datakälla. Oftast används i samband med ODBC , DSN:er finns också för JDBC och för andra dataåtkomstmekanismer. Termen överlappar ofta med " anslutningssträng ". De flesta system gör ingen skillnad mellan DSN eller anslutningssträngar och termen kan ofta användas omväxlande.

DSN-attribut kan innefatta, men är inte begränsade till:

  • namnet på datakällan
  • platsen för datakällan
  • namnet på en databasdrivrutin som kan komma åt datakällan
  • ett användar-ID för dataåtkomst (om det krävs)
  • ett användarlösenord för dataåtkomst (om det krävs)

Systemadministratören för en klientmaskin skapar i allmänhet ett separat DSN för varje relevant datakälla.

Standardisering av DSN erbjuder en nivå av inriktning ; olika applikationer (till exempel: Apache / PHP och IIS / ASP ) kan dra fördel av detta för att komma åt delade datakällor.

Typer av datakällans namn

Det finns två typer av DSN:

  • DSN:er för maskin – lagrade i samlade konfigurationsfiler (t.ex. /etc/odbc.ini, ~/.odbc.ini) och/eller systemresurser (t.ex. Windows-registret HKLM\Software\ODBC\odbc.ini)
  • Fil-DSN – lagras i filsystemet med ett DSN per fil

Dessa är ytterligare uppdelade i

  • System-DSN – tillgängliga för alla processer och användare av systemet, lagrade på en centraliserad plats (t.ex. /etc/odbc.ini , //etc/odbc_file_dsns/<filnamn> )
  • Användar-DSN – endast tillgänglig för användaren som skapade DSN, lagrad på en användarspecifik plats (t.ex. /~/.odbc.ini , /~/odbc_file_dsns/<filnamn> )

Exempel på användning

Programvaruanvändare (t.ex. Crystal Reports, Microsoft Excel, PHP, Perl, Python, Ruby) kan skicka CRUD-frågor (Skapa, Läs, Uppdatera, Ta bort) till en datakälla genom att upprätta en anslutning till DSN.

ASP ( VBScript )-kod för att öppna en DSN-anslutning kan se ut så här:

 
   
 Dim  DatabaseObject1  Set  DatabaseObject1  =  Server  .  CreateObject  (  "ADODB.Connection"  )  DatabaseObject1  .  Öppna  (  "DSN=exempel;"  ) 

I PHP som använder PEAR::DB-paketet för att öppna en anslutning utan en extern DSN (en "DSN-fri anslutning", dvs med en anslutningssträng), kan koden likna följande



  
   require_once  (  "DB.php"  );  //$dsn = "<drivrutin>://<användarnamn>:<lösenord>@<värd>:<port>/<databas>";  $dsn  =  "mysql://john:pass@localhost:3306/my_db"  ;  $db  =  DB  ::  connect  (  $dsn  ); 

[ förtydligande behövs ]

PHP med PDO.

  
      $dsn  =  "mysql:host=localhost;dbname=exempel"  ;  $dbh  =  ny  PDO  (  $dsn  ,  $användarnamn  ,  $password  ); 

I Perl , med hjälp av Perl DBI- modulen, har varje drivrutin sin egen syntax för DSN-attributen. Det enda kravet som DBI ställer är att all information, förutom användarnamn och lösenord, tillhandahålls i ett enda strängargument.

   
     
     
     

    my  $dsn  =  "DBI:Pg:database=finance;host=db.example.com;port=$port"  ;  $dsn  =  "DBI:mysql:databas=$databas;värd=$värdnamn;port=$port"  ;  $dsn  =  "DBI:Oracle:host=$host;sid=$sid;port=$port"  ;  $dsn  =  "DBI:SQLite:dbname=$dbfilnamn"  ;  min  $dbh  =  DBI  ->  anslut  (  $dsn  ,  'användarnamn'  ,  'lösenord')  ; 

Se även