I access har jag provat att länka till, samt importerat in en SQL-databas via ODBC... Du har inte gjort en användar DSN. Då asp körs med ett annat användarkonto så hittar den inte den. Tack Andreas, Du ange användarnamn och lösenord för access inte för SQL servern. Ursäkta min okusnkap, men nu är jag mer vilse än jag var innan... jaha, nu fattade jag vad du menade med länken.. den leder ju till "ODBC-administrera datakälla" som jag själv var inne på.. I ODBC-administrera datakälla har du flera flikar. Okej, vi försöker igen då... Jag har satt upp et exempel hos mig. Har själv inte lyckas fått det att fungera under ASP. Vilket konto-namn lade du till i SQLn när du körde från VB?? Jag har fått det att fungera med SQL server Användarnamn och lösenord sparat i Access tabellen. Jag såg nu att när man väljer tabell vid länkning finns det en liten kryssruta nere till höger som motsvarar dbAttachSavePWD. Vilket tillåter dig att spara användarnamn och lösenord. HAHA... sååå lätt var det.. Länka vs importera en SQLdb via ODBC i access
Problemet är att jag kommer åt den importerade, men inte den länkade databasen från min ASP-sida. Det är exakt samma databas, samt samma tabell jag testar emot:
Feltyp:
Microsoft JET Database Engine (0x80004005)
ODBC: anslutning till 'Hogia_HBAS_ritline' misslyckades.
/HRMintranet/tid/tid_inmat.asp, line 455
strSQL = " SELECT kontoInst.ID, Projekt.id AS pID, Projekt.Nr AS pNr, Projekt.Benamning AS pNamn, ProjektGrupp.id AS pgID, ProjektGrupp.Nr AS pgNr, ProjektGrupp.Benamning AS pgNamn "&_
" FROM (kontoInst INNER JOIN Projekt ON kontoInst.projectID_P = Projekt.id) INNER JOIN ProjektGrupp ON Projekt.Grupp = ProjektGrupp.Nr "&_
" WHERE (((kontoInst.UserID)=" & UserID & ") AND hidden=false) " &_
" ORDER BY kontoInst.ID; "
objRS.Open strSQL, objConn,3,3 <- rad 455
Ngn som har nån ide varför dessa skiljer sig?
Jag loggar in som sa på SQL-databasen, om det spelar nån roll. SQL-servern finns på en annan dator inom nätverket.Sv: Länka vs importera en SQLdb via ODBC i access
Om du istället gör en system DNS eller en fil dns så borde det fungera.Sv:Länka vs importera en SQLdb via ODBC i access
Jag tror jag är med på vad du menar, men vet inte hur jag ska lösa det. Innan hade jag:
<code>
Set objConn = Server.CreateObject("ADODB.Connection")objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\db\tid.mdb") & ";User Id=admin;Password=;"
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = " SELECT * FROM ProjektGrupp;"
objRS.Open strSQL, objConn,3,3
</code>
med id=admin och fick felmeddelandet ovan.
testade att byta till: id=sa passwors=<lösen>, men då fick jag istället:
Feltyp:
Microsoft JET Database Engine (0x80040E4D)
Det går inte att starta programmet. Informationsfilen för arbetsgrupper saknas eller är exklusivt öppnad av någon annan användare.
tid_DBconnect.asp, line 8
Rad 8 är mitt objConn.Open.....
Jag blandar ju ODBC-länkar och statiska tabeller i databasfilen, men det kanske inte gör ngt?
Vet heller inte om jag kan lägga upp en användare på SQL-servern, eftersom jag kör med MSDE där.. ngn som vet hur isf?Sv: Länka vs importera en SQLdb via ODBC i access
Du får sedan på IIS servern lägga till en sytem DSN:
%SystemRoot%/system32/odbcad32.exe
Länka sedan din tabell mot denna i ODBC dialogen.
Du skulle kunna lagra användarnamn och lösenord i DSN.
Alternativt kan du låta din applikation kör under en egen användare som har ett konto på SQL servern vilket den bara har tillåtelse att läsa en tabell från er databas.
Vet inte vilket man kan anses vara säkrast.Sv:Länka vs importera en SQLdb via ODBC i access
Jag har provat lite olika varianter nu, utan resultat...
vad ska jag göra med detta:
%SystemRoot%/system32/odbcad32.exe ??
Det är ju en HTML-tagg, menar du att jag ska använda det i min ASP-sida?
"Du skulle kunna lagra användarnamn och lösenord i DSN."
Provade att (i kontrollpanelen/administr.verktyg/datakäkkor (ODBC)/Fil-DSN/SQL-server->Avancerat skriva in :
"Driver={SQL Server};Server=minserver\SQLDB;Database=pubs;Uid=sa;Pwd=<lösen>;"
Vet inte om det var så du menade? detta hjälpte iaf inte.... Finns även en "SQL NAtive Client", ngn skillnad?
odbcad32exe som du nämnde hittar jag under: "OM", där står det "autostart av kontrollpanelen"-version3.525.1117.0.... WHAT!? säger jag då....
_____________________________________________________________________________
Nu tror jag att jag hittade hur man lägger till användare i SQL-databasen (som körs via MSDE)... vad är det för konto jag ska köra med? IUSER_webbservernamn eller?
Kanske har du ngn bra länk som beskriver allt detta? jag hittade inget på google iaf (vet inte vad jag ska söka på)Sv: Länka vs importera en SQLdb via ODBC i access
Under System-DNS kan man ju som sagt välja mellan SQL-server och SQL native client, jag chansar på SQL-server. Skriver i namn och servernamn och väljer sedan att verifiera "med SQL server-verifiering baserat på ID och lösenord....."
Där nere fyller jag i Inloggnings-ID: sa och lösenord..
klickrutan "asnlut till SQL server för att erhålla standardinställningar...." låter bra, så jag klickar i den.klientkonfiguration står fö på TCP/IP och bestäm port dynamiskt...
<code>
ODBC-drivrutin för Microsoft SQL Server version 03.85.1117
Namn på datakälla: Ha_HBAS
Beskrivning av datakälla:
Server: server\HBAS
Databas: Ha_Rest_0001
Språk: (Default)
Konvertera teckensträng: Yes
Logga tidskrävande frågor: No
Logga drivrutinsstatistik: No
Använd integrerad säkerhet: No
Använd nationella inställningar: No
Alternativ för förberedda uttryck: Släpp tillfälliga procedurer vid frånkoppling
Använd reservserver: No
Använd ANSI-identifierare med citattecken: Yes
Använd ANSI-null, -utfyllnad och -varningar: Yes
Datakryptering: No
</code>
några klick senare kan jag testa datakällan...
<code>
ODBC-drivrutin för Microsoft SQL Server version 03.85.1117
Testar anslutningsbarhet...
Försöker ansluta
Ansluten
Verifierar inställningar
Kopplar från servern
TESTEN SLUTFÖRDES!
</code>
so far so good..
Jag har ju valt att logga in med ett sa-konto som tydligen fungerade..
Använder ASP-sidan ett annat login alltså?
(IIS och access-databasen finns på samma dator medans SQL-servern finns på en server i samma nätverk)...Sv:Länka vs importera en SQLdb via ODBC i access
User DSN, System DSN, File DSN, etc.
Om du skapar DSN under din användare så hittar inte ASP den.
Du skall gå in under fliken System DSN. Då hittar du och alla andra konton, inklusive ASP's konto den.Sv: Länka vs importera en SQLdb via ODBC i access
Jag är med på att jag ska använda mig av en system-DNS, så långt är jag med.
Vad jag däremot inte lyckas lista ut är VILKET konto som ASP använder...
Ifrån access går det jättebra att connecta mot SQL genom att länka in tabellen. Ifrån ASP-sidan däremot går det inte.
Så då är frågan, vad är det för konto som skall skapas på SQL-sidan för att IIS-servern skall få behörighet????
Andreas: du skriver:"Då hittar du och alla andra konton, inklusive ASP's konto den."
Nu vet jag inte om jag har en gammal version, men jag kan inte "se"/"bläddra bland* några konton, utan får lägga till dem själv genom att skriva in dem.
se här
Ska jag välja windows eller mix-authentisering här? Vad anger jag som inloggnings-id?
På SQL-sidan har jag provat att lägga till ett gäng konton, tex:
Mitt eget konto som jag är inloggad med på IIS:en
Har lagt till IIS-maskinen.
sa-konto
admin-konto
Däremot finns inget domän\IUSR_<IISDator> konto, så detta har jag inte kunnat testa...
Connectar fortfarande med:
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\db\tid.mdb") & ";User Id=admin;Password=;"
Felet jag får:
Feltyp:
Microsoft JET Database Engine (0x80004005)
ODBC: anslutning till 'HBAS' misslyckades.
/intra/tid/tid_inmat.asp, line 86
HBAS är alltså namnet på SQL-servern-namnet.Sv:Länka vs importera en SQLdb via ODBC i access
Att skapa en OLEDB anslutning till databasen i VB och läsa från tabellen fungerar utmärkt. Men inte från ASP sidan.
Jag har testat ODBC länkade tabeller med DSN och utan DSN.
Jag kanske har lett in dig på återvändsgränd då jag inte använd denna teknik på ASP utan bara i VB.Sv: Länka vs importera en SQLdb via ODBC i access
Någonstans borde det väl gå att se vilket Konto ASP försöker använda? i nån logg-fil eller liknande kanske? Känns som att det är ngt där som felar.
Tycker det är lite konstigt att man kommer åt SQL via access, men inte via ASP.Tycker access borde fungera som en "tolk" här...
För inte kan det väl vara så illa att det inte går alls?Sv:Länka vs importera en SQLdb via ODBC i access
Men det är inte så enkelt som det verkar. Jag var tvungen att skapa Tabellen med kod(i access):
Public Sub CreateTable(TableName As String, DSN As String, DataBase As String, UID As String, PWD As String, ODBCTableName As String)
Dim db As DAO.DataBase
Dim tbl As DAO.TableDef
Dim ConnectionString As String
ConnectionString = "ODBC;" + _
"DSN=" & DSN & ";" + _
"APP=Microsoft Access;" + _
"DATABASE=" & DataBase & ";" + _
"UID=" & UID & ";" + _
"PWD=" & PWD & ";" + _
"TABLE=" & ODBCTableName
Set db = CurrentDb
Set tbl = db.CreateTableDef(TableName, _
dbAttachSavePWD, ODBCTableName, _
ConnectionString)
db.TableDefs.Append tbl
db.TableDefs.Refresh
End Sub
MEn skapa eytt konto på SQL servern som bara har tillgång till den önskate databasen och tabellen.
Då informationen finns lagrad tillgäånglig i Access databasen.
Se oxå till att Access databasen inte går att ladda ned från internet, genom att inte placera den i en katalog som inte är publicerad.
Sv: Länka vs importera en SQLdb via ODBC i access
Sv:Länka vs importera en SQLdb via ODBC i access
Fattar inte hur jag kunnat missa den ckeckboxen....:)
Men nu funkar det iaf, ett stort tack Andreas....
Nu kan jag skjuta upp migreringen till SQL.server ett tag, har visserligen påbörjat arbetet, men det ser ut att vara mkt jobb med det. Har använt mig av IIF, timevalue och liknande i Access, vilket msSQL inte stöder...