Avatar billede neess Nybegynder
24. august 2010 - 21:13 Der er 6 kommentarer

Konvatere over til en mssql db

Jeg har en gammel acces database,som jeg godt kunne tænke mig at få over på en mssql.

Det nuværende setop er:
1: acces database hvor data ligger i.
2: acces database hvor GUI(forms) er opbygget og henter data fra db1.

Jeg kan se det ser ud til at der er inbyggede værktøjer til dette i acces(2000 og frem efter), til at flytte data over.

Vil man kunne flytte data fra db1 over til en mssql database, ogbagefter sige at DB2 skal hente data fra en mssql istedet for db1.

Grunden til jeg gerne vil dette, er at viderudvikling af systemet vil være nemmere at gøre fra en mssql,hvis det f.eks. skal kobles op på .net i fremtiden.
Avatar billede arne_v Ekspert
24. august 2010 - 21:20 #1
Man kan godt have en Access applikation som henter data fra en SQLServer database.

Det er endda meget almindeligt.

Men det kan maaske godt kraeve nogle aendringer i app. Specielt hvis den er meget gammel.
Avatar billede neess Nybegynder
24. august 2010 - 21:47 #2
Det er en acces 2003 den køre på.
Hvordan skifter man så nemmest over så den kører på mssql istedet for?
Avatar billede arne_v Ekspert
24. august 2010 - 22:06 #3
upsize wizard
Avatar billede Slettet bruger
25. august 2010 - 12:15 #5
Inden du gør det, så sørg som minimum for at du har et autogeneret id nr som primær nøgle i alle tabeller. Derefter skal du have de relevante id numre ind i alle forespørgsler, som skal være opdaterbare.

Når du så har upsized, så connecter du således:

Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)
    On Error GoTo AttachDSNLessTable_Err
    Dim td As TableDef
    Dim stConnect As String
   
    For Each td In CurrentDb.TableDefs
        If td.Name = stLocalTableName Then
            CurrentDb.TableDefs.Delete stLocalTableName
        End If
    Next
     
    If Len(stUsername) = 0 Then
        '//Use trusted authentication if stUsername is not supplied.
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
    Else
        '//WARNING: This will save the username and the password with the linked table information.
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword
    End If
    Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
    CurrentDb.TableDefs.Append td
    AttachDSNLessTable = True
    Exit Function

AttachDSNLessTable_Err:
   
    AttachDSNLessTable = False
    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description

End Function

Public Function ConnectAll()
Call AttachDSNLessTable("TabelNavnAccessDb", "dbo.tabelNavnSqlServer", "Servernavn eller ip", "SqlDatabaseNavn", "SqlDbBrugernavn", "SqlDbPassword")
End Function

..som du nok bemærker, så skal der oprettes en bruger med de relevante rettigheder til din db på SQL serveren!~)
Avatar billede arne_v Ekspert
26. september 2010 - 20:55 #6
Tid at få afsluttet her?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester