[Access VBA] Beste manier om een T-SQL database te maken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 48079

Topicstarter
Beste allemaal,

Middels onderstaande code probeer ik vanuit Access VBA via ODBC een T-SQL database aan te maken.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim CreateDBSQL As String, qdf As DAO.QueryDef, MyDB As DAO.Database
    
CreateDBSQL = "USE [master];" & vbCrLf & _
                    "GO" & vbCrLf & _
                    "CREATE DATABASE [" & txtDatabase.Value & "];" & vbCrLf & _
                    "GO"   
  
Set MyDB = CurrentDb()
Set qdf = MyDB.CreateQueryDef("qrySQLpass")
     
qdf.Connect = stConnect
qdf.ReturnsRecords = False
qdf.SQL = CreateDBSQL

DoCmd.OpenQuery "qrySQLpass", acViewNormal, acEdit


Mijn vraag is, of dit de meest optimale manier is om vanuit Access 2007 een nieuwe database aan te maken op een SQL Server (veiligheid, efficientie)? Hebben jullie tips ter verbeteringen van deze aanpak / code ?

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Behalve die sql injection dmv txtDatabase.Value zie ik niet zoveel problemen hiermee. En iemand die tabellen mag maken heeft meestal toch tamelijk veel rechten, waardoor die sql injection niet eens zo heel erg is (want tabelnamen met gekke tekens erin zijn toch niet aan te raden). Efficiëntie lijkt me niet echt een issue bij het maken van nieuwe databases ;)

Met andere woorden, wat is het probleem? :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 04-07 15:03

NMe

Quia Ego Sic Dico.

Hoe had je het anders willen doen dan met zo'n create statement? :? Je zal inderdaad dat gapende SQL-injectiegat op moeten lossen, maar verder doe je niks bijzonders. Buiten je query heb je de rest van de code nodig om überhaupt een query te kunnen runnen en veel efficiënter dan een create statement ga je het niet krijgen.

Blijft de vraag: waarom moet je databases toevoegen aan een bestaande applicatie? Meestal als iemand zoiets doet is hij het verkeerde probleem op aan het lossen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 48079

Topicstarter
Uiteindelijk komt na het create database statement nog 414 regels aan CREATE TABLE statements, ik vind dit niet erg handig om dit in de code te zetten. Daarnaast creeert deze code daadwerkelijk een passthrough query, die dus ook weer moet worden verwijdert, bestaat er geen functie voor?

De reden voor het toevoegen van een nieuwe database is omdat de applicatie als front end dient om aan te loggen op meerdere verschillende opdrachtdatabases

[ Voor 21% gewijzigd door Anoniem: 48079 op 31-07-2012 12:35 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 04-07 15:03

NMe

Quia Ego Sic Dico.

Een functie die op magische wijze precies die database en tabellen aanmaakt die jij nodig hebt?

[ Voor 17% gewijzigd door NMe op 31-07-2012 12:35 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 48079

Topicstarter
Omdat de applicatie als front end dient voor verschillende logisch van elkaar gescheiden klantdatabases, met de functionaliteit om te connecten naar een bestaande klantdatabase, maar dus ook de mogelijkheid om een nieuwe klantdatabase aan te maken ('New database')..

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je kunt eventueel ook een de model database aanpassen. Deze wordt gebruikt als template bij het maken van een nieuwe database. Dan hoef je niet alle CREATE TABLE statements uit te voeren.

Oops! Google Chrome could not find www.rijks%20museum.nl

Pagina: 1