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

Referencer

crossfit

"Team CrossFit Copenhagen takker for støtten fra Azero i vores kamp for at nå til CrossFit Games (VM) i Californien i Juli."

Nikolaj Rønnow

2015-01-19T11:02:53+00:00

Nikolaj Rønnow

crossfit
"Team CrossFit Copenhagen takker for støtten fra Azero i vores kamp for at nå til CrossFit Games (VM) i Californien i Juli."
eyeforimage

Azero has been Eye for Image's ISP from the very beginning. It's reassuring to know that they not only have a great array of products, but that we can always get relevant and timely information from their professional support team, by just picking up the phone and talking to someone.

Matt Coyle, Technical Copywriter / Eye for Image ApS

2015-01-20T03:47:24+00:00

Matt Coyle, Technical Copywriter / Eye for Image ApS

eyeforimage
Azero has been Eye for Image's ISP from the very beginning. It's reassuring to know that they not only have a great array of products, but that we can always get relevant and timely information from their professional support team, by just picking up the phone and talking to someone.

Kontakt Azero

Firmainformationer

AzeroCloud ApS
Nørregade 33
8464 Galten
CVR: 38 70 69 93
VAT: DK38706993

Telefon

Telefon: 38 19 50 17
 

Normal telefontid

Man-tor: 9:30-12:00 og 13:00-15:30
Fredag: 9:30-12:00 og 13:00-14:00