Connection strings
Skrevet af d. 6/12-2017 08:28

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/alternativBeskrivelse
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

LibraryBeskrivelse
dbnmpntw Named Pipes
dbmssocn Winsock TCP/IP
dbmsspxn SPX/IPX
dbmsvinn Banyan Vines
dbmsrpcn Multi-Protocol (Windows RPC)
(0 stemmer)
Denne artikel var til hjælp
Denne artikel var ikke til hjælp

Kommentarer (0)
Opret kommentar
 
 
Navn:
Email:
Kommentarer:
CAPTCHA Verificering 
 
Indtast teksten du ser på billedet i feltet herunder (CAPTCHA). Dette er påkrævet for at undgå automatiske registreringer og form afsendelser.

Referencer |  Om Azero |  Betingelser |  Job |  Presse |  Kontakt Azero

Azero A/S - CVR 28 10 17 59 - Skjørringvej 8 - 8464 Galten - Telefon 38 19 50 17
Danske Bank - Reg 4180 - Konto 0010092027 - SWIFT DABADKKK - IBAN DK7230000010092027

Copyright © 2000-2020. Azero A/S respekterer alle varemærker.
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)