Connection strings



Include filer

Det smarteste er at gemme ens datakald i en include fil eller i global.asa. På denne måde skal du kun ændre det et sted hvis du ønsker at skifte database, f.eks. fra Access til en MySQL database. For at bruge et af nedenstående kald skal du fjerne ' tegnet. Et ' tegn foran linien gør at ASP ved at det er en bemærkning og bruger ikke linien.

Access
<% 
  ' *** MS Access, DSNless

  'OLEDB kald til Access 2000
  strConnect = _
    "Provider=Microsoft.Jet.OLEDB.4.0;" &_
    "Data Source=d:\home\FTPBrugernavn\db\database.mdb;"

  'OLEDB kald til Access 97
  strConnect = _
    "Provider=Microsoft.Jet.OLEDB.3.51;" &_
    "Data Source=d:\home\FTPBrugernavn\db\database.mdb;"

  'ODBC til alle Access versioner. 
  'Er langsom og virker IKKE til servere der kører MDAC 2.6.
  strConnect = _
    "Driver={Microsoft Access Driver (*.mdb)};" &_
    "DBQ=d:\home\FTPBrugernavn\db\database.mdb;"

  'ODBC. Simpel metode hvis databasen ligger i samme mappe 
  'som siden det kaldes fra. Ikke anbefalet.
  strConnect = _
    "Driver={Microsoft Access Driver (*.mdb)};" &_
    "DBQ=" & Server.Mappath("database.mdb") & ";"
%>
MySQL
<% 
  ' *** MySQL, DSNless
  strConnect = _
    "Driver={MySQL ODBC 3.51 Driver};" & _ 
    "Server=mysql.dit-domaene.dk;" &_
    "Port=3306;" & _
    "Option=131072;" & _
    "Stmt=;" & _
    "Database=SQLBrugernavn;" & _
    "Uid=SQLBrugernavn;" & _
    "Pwd=SQLKodeord"
%>
MS SQL (Microsoft SQL Server)
<% 
  ' *** MS SQL, OLEDB, DSNless til lokal server
  strConnect = _
    "Provider=SQLOLEDB.1;" &_
    "Data Source=(local);" &_
    "Initial Catalog=SQLBrugernavn;" &_
    "User ID=SQLBrugernavn;" &_
    "Password=SQLKodeord;"

  ' *** MS SQL, OLEDB, DSNless til remote server
  strConnect = _
    "Provider=SQLOLEDB.1;" &_
    "Data Source=mssql.dit-domaene.dk,1433;" &_
    "Initial Catalog=SQLBrugernavn;" &_
    "User ID=SQLBrugernavn;" &_
    "Password=SQLKodeord;"
    "Network Library=DBMSSOCN"

' Hvis du skal bruge named instance, så brug i stedet strengen:
' "Data Source=mssql.dit-domaene.dk\MSDE01SERVERNAVN;" & _
%>
DSN
<% 
  ' *** DSN kald for alle typer datakilder
  ' DSN: Eksempler på DSN kald. For at bruge et DSN skal du have 
  ' oprettet et ODBC link på serveren. Bemærk at dette er langsomt, 
  ' upraktisk og bestemt ikke anbefales.

  strConnect = _
    "Dsn=Brugernavn;" &_
    "Uid=Brugernavn;" &_
    "Pwd=Kodeord;"

  'strConnect = _
    "Dsn=sk5kndf8"
%>
Tekstfiler
<%
  ' *** DSN-less forbindelse til en tekstfil (text file):
  strConnect = _
    "Provider=Microsoft.Jet.OLEDB.4.0;" &_
    "Data Source=d:\home\FTPBrugernavn\db\textfile.txt;" &_
    "Extended Properties=""text;HDR=Yes;FMT=Delimited"""
%>
Excel
<%
  ' *** DSN-less forbindelse til en Excel file:
  strConnect = _
    "Provider=Microsoft.Jet.OLEDB.4.0;" &_
    "Data Source=c:\somepath\mySpreadsheet.xls;" &_
    "Extended Properties=""Excel 8.0;HDR=Yes"""

  ' HDR=Yes betyder at øverste række indeholder 
  ' overskrifter og derfor skal springes over.
%>

Hvis du vil læse mere om OLEDB, System DSN osv. så prøv at læse: System DSN or DSN-less Connection? og OLEDB for Me.

FAQ

Hvorfor virker min connection string ikke efter serverflytning?

Ved overgang fra f.eks. MDAC (MSDASQL) 2.5 til 2.6 er der en del gamle connection strings der ikke længere virker. Tjek at du bruger den sidste nye connection string som specificeret ovenfor.

Tjek også at du ved boolean (true/false) kald i Access, altid bruger true/false og ikke tjekker på om værdien er lig med -1/0/1: SELECT * FROM tabel WHERE felt = TRUE. Tjekker du på værdien, vil du få forskellige resultater i OLEDB og ODBC, samt MS SQL/Access. For eksempel er True=1 i MS SQL, men i Access er True=-1, afhængigt af connection string. Du bør derfor altid bruge: SELECT * FROM tabel WHERE felt = TRUE/FALSE i Access.

Hvorfor virker min connection string ikke i Javascript?

I Javascript og lignende scriptsprog skal du angive filplaceringer med dobbelte backslashes, som for eksempel:
"Data Source= d:\\home\\FTPBRUGERNAVN\\db\\database.MDB;".

Hvorfor ikke bruge en System DSN i stedet for en DSN-LESS

En del mennesker der har brugt System DSN (almindeligvis kun kaldet DSN) i lang tid vil fortælle dig at dette er den bedste metode (og det var det også engang). Ifølge tests på Access, MySQL og MS SQL databaser er dette ikke sandt længere. At bruge en System DSN er betragtelig langsommere end et OLEDB kald, koster penge i oprettelse og er meget upraktisk hvis du ønsker at skifte database. Hvis muligt anbefaler vi derfor klart at vores brugere bruger en DSN-LESS forbindelse, som beskrevet nedenstående.

Hvordan kodeordsbeskytter jeg en Access database?

Via Jet OLEDB, kan man sende ekstra parametre, så hvis du tilføjer følgende til din connection string Jet OLEDB:Database Password=KODEORD; kan du bruge kodeordsbeskyttede databaser. Bemærk at dette kodeord er kendt for at være let at bryde, så du bør stadig ikke på nogen måde gøre din database tilgængelig for tredjepart.

Hvad med andre connecters end ovenstående?

Her er flere der sjældent bliver brugt.

' Microsoft ISAM 1.1 OLE DB Provider
Provider=Microsoft.ISAM.OLEDB.1.1

' Microsoft OLE DB Provider for Indexing Service
Provider=MSIDXS.1

' Internet Publishing
Provider=MSDAIPP.DSO.1

' Microsoft OLE DB Provider for ODBC Drivers
Provider=MSDASQL.1

' Microsoft OLE DB Provider for OLAP Services
Provider=MSOLAP.1

' Microsoft OLE DB Provider for Oracle
Provider=MSDAORA.1

' MSDataShape
' Kan bruges til SQL og giver meget vide rammmer
Provider=MSDataShape.1

' OLE DB Provider for Microsoft Directory Services
Provider=ADsDSOObject

PHP eksempler

<?
  # DSN-lss forbindelse til Access
  $db = ADONewConnection('access');
  $dsn = .
    "Driver={Microsoft Access Driver (*.mdb)};" .
    "Dbq=d:\home\FTPBrugernavn\db\database.mdb;" .
    "Uid=Admin;" .
    "Pwd=;";
  $db->Connect($dsn); 
  
  #DSN-less forbindelse til MS SQL Server: 
  $db = ADONewConnection('odbc_mssql');
  $dsn = .
    "Driver={SQL Server};" .
    "Server=localhost;" .
    "Database=northwind;";
  $db->Connect($dsn,'userid','password'); 
  
  # Forbindelse til MySQL: 
  function connect() {
    mysql_connect("IP/SERVER","USERNAME","PASSWORD") 
      or die("Problem DataBase Connection");
    mysql_select_db("DATABASENAME") 
      or die("Could not select database");
  } 

  # DSN forbindelse: Forbind til en DSN der hedder 
  # "mindb" med brugernavn Navn og kodeord Kode
  $connect = odbc_connect("mindb", "Navn", "Kode"); 
?>

Ekstern hjælp

MS Universal Data Access Web Site
Alverdens connectionstrings

Forklaringer

Kommando/alternativ Beskrivelse
Initial Catalog=TABLE Sætter standard databasen.
Database=SQLBrugernavn Vælg databasen.
Uid/User ID=SQLBrugernavn Sætter brugernavnet.
Pwd/Password=SQLKodeord Sætter kodeordet.
Persist Security Info=[True|False] Sikkerhed.
Network Library/Network=xxx Vælg Network Library (protokol), se tabellen nedenfor.

Netværksprotokoller

Library Beskrivelse
dbnmpntw Named Pipes
dbmssocn Winsock TCP/IP
dbmsspxn SPX/IPX
dbmsvinn Banyan Vines
dbmsrpcn Multi-Protocol (Windows RPC)

Azero A/S - CVR 28 10 17 59 - Naverland 1C - 2600 Glostrup - Telefon 38 19 50 17 -
Danske Bank - Reg 4180 - Konto 0010092027 - SWIFT DABADKKK - IBAN DK7230000010092027
(Udskrevet fra http://azero.dk/support/windows/connection/default.asp)

Copyright © 2000-2012. Azero A/S respekterer alle varemærker. Denne side blev sidst opdateret 23-04-2009 13:57:22.
Priser er angivet eksklusive moms i DKK, der tages forbehold for trykfejl. Alt salg sker i henhold til vores betingelser.
1. Domaincheck - 2. Search - 3. NScheck - 4. NSlookup - 5. Lookup - 6. TraceRoute - 7. Query - 8. CheckWeb - (9. Flere)