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 );
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') ;