DSN es una palabra abreviada del inglés (Data Source Name) (en español, Nombre Fuente de datos o Nombre de origen de datos), que representa todo lo relativo a una fuente de datos configurada por el usuario para conectarse a una Base de datos. Es decir, por cada conexión que el usuario quiera establecer con algún(os) fabricante(s), tiene que especificar una serie de información que permitan al Controlador o Driver saber con qué fabricante(s) se tiene que conectar y la cadena de conexión que tiene que enviarle a dicho fabricante(s) para establecer la conexión con la fuente de datos ODBC accedida por el proveedor en cuestión
Dentro del ODBC, se debe crear un DSN (Data Source Name) de tipo sistema o usuario. Para ello nos colocamos en la solapa correspondiente (DSN sistema o DSN usuario) y seleccionamos "Añadir". A continuación se nos pedirá seleccionar Driver de la aplicación que hemos utilizado para crear la base de datos, el nombre que le queremos asignar (aquel que empleemos en nuestros scripts) y el camino para encontrarla en el disco duro.
Esta DSN permite en realidad definir la base de datos que será interrogada sin necesidad de pasar por la aplicación que hayamos utilizado para construirla, es decir, con simples llamadas y órdenes desde un programa podremos obtener los datos que buscamos sin necesidad de ejecutar el manejador de la base de datos como Microsoft Access o el MySQL los cuales, evidentemente, no tendrán por qué encontrarse en el servidor donde trabajemos.
Existen dos tipos de DSN:
/etc/odbc.ini, ~/.odbc.ini) y/o recursos del sistema (por ejemplo, Registro de Windows HKLM\Software\ODBC\odbc.ini)Estos se desglosan aún más en
/etc/odbc.ini, /etc/odbc_file_dsns/<filename>)~/.odbc.ini, ~/odbc_file_dsns/<filename>)Los usuarios de software (por ejemplo, Crystal Reports, Microsoft Excel, PHP, Perl, Python, Ruby) pueden enviar consultas CRUD (Crear, Leer, Actualizar, Eliminar) a una fuente de datos estableciendo una conexión con la DSN.
El código ASP (VBScript) para abrir una conexión DSN podría ser lo siguiente:
Dim DatabaseObject1
Set DatabaseObject1 = Server.CreateObject("ADODB.Connection")
DatabaseObject1.Open("DSN=example;")
En PHP usando el paquete PEAR::D B para abrir una conexión sin un DSN externo (una "conexión sin DSN", es decir, usando una cadena de conexión), el código podría parecerse a lo siguiente:
require_once("DB.php");
//$dsn = "<driver>://<username>:<password>@<host>:<port>/<database>";
$dsn = "mysql://john:pass@localhost:3306/my_db";
$db = DB::connect($dsn);
PHP con PDO:
$dsn = "mysql:host=localhost;dbname=example";
$dbh = new PDO($dsn, $username, $password);
En Perl, usando el módulo Perl DBI, cada controlador tiene su propia sintaxis para los atributos DSN. El único requisito que establece DBI es que toda la información, excepto el nombre de usuario y la contraseña, se proporcione en una sola cadena de argumentos.
my $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,'username','password');