Questione : Base di dati di assistente di SQL esportazione/copiare per accedere a

Ho una procedura che è denominata con lo scatto di un tasto in VB6. Sto usando l'assistente 2005 del ms SQL espresso e l'accesso del ms 97-2003 basi di dati. La procedura cancella il mio DB attuale di accesso, ricrea vuoto, allora collega attraverso le tabelle nel DB dell'assistente di SQL, generante lei allora che le riempiono di dati della tabella. Funziona perfettamente, a meno che sia lenta sulle tabelle con i grandi numeri dei dati. Quello è perché per ogni tabella di SQL, apre un recordset, costruisce una stringa “dell'inserto„ ed aggiunge la fila all'accesso DB.

I ha commentato fuori il codice che devo essere sostituito. Gradirei questo codice sostituito con una dichiarazione che copia le annotazioni in una va. Ho provato ogni permutazione delle dichiarazioni come “PRESCELTO * in da „ (non funziona perché prova a generare la tabella già-attuale). “INSERTO inoltre provato in PRESCELTO * da „ ed altre milione cose. Ci deve essere un senso, non posso trovarlo appena, o forse ho ma avuto sintassi errors.

This sto andando essere duro. Non voglio generare affatto diversamente le mie tabelle, io non voglio sentire parlare di DTS o SSIS, procedure immagazzinate, o basi di dati collegate. Al punto in cui il codice è commentato fuori, entrambe le basi di dati sono aperte, tutti i nomi della tabella sono conosciuti ed esistono in entrambi i DB e tutto è pronto per la procedura di copiatura. Voglio appena una dichiarazione di SQL/domanda pulite piacevoli che copieranno le annotazioni più velocemente del funzionando attraverso i recordsets. L'unico l'altra risposta che potrei accettare sta tagliando il codice commentato, sta chiudendo le basi di dati e sta copiando le tabelle diversamente. Ma ricordar, perderete i nomi della tabella di che il senso ed avrà bisogno per andarlo a prendere ancora. L'idea di questa procedura è di copiare tutta la base di dati di SQL ad un DB di accesso, senza conoscere qualche cosa circa le tabelle o il loro structure.

sembra facile, ma sta guidandolo nuts. Può chiunque aiutare? Sotto è la procedura: il

Function SQLtoAccess () come Boolean
oscura lo sqlDB come nuovo jetDB fioco di ADODB.Connection
come nuovi rs fiochi di ADODB.Connection
come nuovo ADODB.Recordset
rt fioco come nuovo 0)
del
di ADODB.Recordset
ReDim Tables$ (
del *** della base di dati del getto di Hell
di errore locale sul vecchio del
rem di cancellazione di avanzamento del *** se Len (Dir$ (DBFileSpec$)) Then
di chiamata CRFO (il *** del
rem di If
di conclusione del file
di uccisione di K “, di DBFileSpec$„, h%, 0) “genera la gru a benna aperta del *** del
sqlDB.Open SQLFileSpec$

rem del *** dell'assistente di SQL del nuovo del getto della base di dati del *** del
di chiamata di CreateAccessDB (DBFileSpec$) del
*** del
rem tutto il
del *** delle tabelle di SQL SQL$ = “SELEZIONA * A PARTIRE DA ORDINE di INFORMATION_SCHEMA.Tables da Table_Type, rs del
di Table_Name ". Aprire SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
mentre non *** di rs.EOF
rem salvo la conserva Tables$ (UBound (Tables$) del
ReDim del *** di nome della tabella + 1)
Tables$ (UBound (Tables$)) = rs! Table_Name
      rs.MoveNext
   Wend
   rs.Il
di Close
Screen.MousePointer = 11 “*** del
rem del hourglass
si collega al
del *** della base di dati del getto jetDB.Provider = “Microsoft.Jet.OLEDB.4.0 " ciclo del *** del
rem del
jetDB.Open DBFileSpec$
attraverso le tabelle, facente lei e riempienti il
del *** per i% = 1 al *** del
rem di UBound (Tables$) ottiene il
del *** della tabella Info mesa$ =
di Tables$ (i%) SQL$ = “SELEZIONA„ “& mesa$ &„„ A PARTIRE i rs del
da INFORMATION_SCHEMA.Tables ". SQL$ aperti, sqlDB, adOpenForwardOnly, *** del adLockReadOnly
se non rs.EOF Then
rem ottengono il
SQL$ = “Column_Name PRESCELTO, Data_Type, Character_Maximum_Length,
di Is_Nullable “SQL$ = SQL$ & “da INFORMATION_SCHEMA.Columns DOVE “
SQL$ = SQL$ & “Table_Name = “„ & mesa$ & “„ “
rt. Aprire SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
tbl$ =„ ("
mentre non rt.EOF
selezionano il caso rt!
del *** di byte del *** del
rem “del tinyint " di caso del
di caso “ha morso " il
del *** del *** del
rem txt$ = “YESNO " di Data_Type
txt$ =
del *** di numero intero del *** del
rem “dello smallint " di caso del
“di BYTE " txt$ =
del *** di numero intero del *** del
rem “di int " di caso del
“di NUMERO INTERO " txt$ = “LUNGAMENTE "
del *** di valuta del *** del
rem “dei soldi " di caso “del
smallmoney„, txt$ =
del *** del *** “reale " del
rem di caso del
“di VALUTA " singolo txt$ = “SCELGONO " il
del *** del doppio del *** del
rem “del galleggiante " di caso di/> txt$ =
del *** della data/ora del *** del
rem “del timestamp " di caso “del
“del DOPPIO " datetime„, “smalldatetime„, txt$ =
del *** del
del *** “DATETIME " di caso 9
rem txt$ =
del *** del testo del *** del
rem “del carbone " di caso “del
nvarchar„, “varchar„, “nchar„, ds$ = CStr (rt!
di Character_Maximum_Length) txt$ = “
dell'oggetto del *** del
rem “di immagine " di caso del
ds$ &„ (di NVARCHAR & ") “del *** del
di caso “dell'appunto " del
rem del *** del *** OLE dell'appunto o di Hyperlink txt$ = estremità Select
del
“dell'APPUNTO " se rt! Is_Nullable = “NO„ Then
txt$ = txt$ &„ estremità If
del
NON di POSIZIONE DI SEGNALE MINIMO " tbl$ = tbl$ & “[„ & rt! Column_Name & “]„ & ““& txt$ &„, “
rt.MoveNext
Wend
rt di/> Mid$ (tbl$, Len (tbl$), 1) = ") “. Rs di Close
. Il *** di Close
rem genera già la cosa maledetta! il
del *** SQL$ = “GENERA LA TABELLA [„ & mesa$ & “]„ & tbl$
jetDB.Execute SQL$, ritrovamento del *** del adExecuteNoRecords
rem tutto il
del *** di chiavi primarie SQL$ = “s.name PRESCELTO COME TABLE_SCHEMA, t.name COME TABLE_NAME, k.name COME CONSTRAINT_NAME, k.type_desc COME CONSTRAINT_TYPE, “
SQL$ = SQL$ & “c.name COME COLUMN_NAME, ic.key_ordinal COME
di ORDINAL_POSITION “SQL$ = SQL$ & “da sys.key_constraints COME
di K “SQL$ = SQL$ & “UNISCONO sys.tables COME t SU
di k.parent_object_id = di t.object_id “SQL$ = SQL$ & “UNIRE sys.schemas COME s SU
di t.schema_id = di s.schema_id “SQL$ = SQL$ & “UNIRE sys.index_columns COME CI SU ic.object_id = t.object_id E il
di k.unique_index_id = di ic.index_id “SQL$ = SQL$ & “UNISCE sys.columns COME c SU
di c.object_id = di t.object_id E di c.column_id = di ic.column_id “SQL$ = SQL$ & “ORDINE DA TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME, il
rt di ORDINAL_POSITION ". SQL$ aperto, sqlDB, adOpenForwardOnly, *** del adLockReadOnly
rem ha regolato il
del *** di chiavi primarie della tabella txt$ =
del "" mentre non rt.EOF
se rt! Table_Name = mesa$ Then
se rt! Constraint_Type = “PRIMARY_KEY_CONSTRAINT„ Then
ConName$ = rt! Constraint_Name
txt$ = txt$ &„ [“& rt! Column_Name &„], “estremità If
rt.MoveNext
Wend
rt di If
di conclusione del
. Close
se Len (txt$) Then
di/> Mid$ (txt$, Len (txt$), 1) = ") “SQL$ = “ALTERA LA TABELLA [„ & mesa$ & “] AGGIUNGE LA CHIAVE PRIMARIA ConName$ &„ [di VINCOLO & “] (" & txt$
jetDB.Execute SQL$, materiale di riempimento del *** di If
rem di conclusione di If
di conclusione del adExecuteNoRecords
'er in su! il
del *** SQL$ = “SELEZIONA * A PARTIRE [„ & mesa$ & “] “dai rs del
. Aprire SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
mentre non rs.EOF
SQL$ = “INSERTO IN [„ & mesa$ & “] STIMA il ("
per f% = 0 ai rs. Fields.Count - 1
txt$ = SQLStr$ (rs. Sistema (f%) .value)
se txt$ =„ “allineano„„ Then
txt$ = “- 1 "
ElseIf txt$ =„„ Then
txt$ = “0 " estremità If
del
SQL$ = SQL$ & txt$
se f% < rs. Fields.Count - 1 Then
SQL$ = SQL$ &„, “estremità If
f%
del
SQL$ = SQL$ & ") “
jetDB.Execute SQL$, rs del adExecuteNoRecords
rs.MoveNext
Wend
. Rs stabiliti seguenti del
del
sqlDB.Close
jetDB.Close
di Close
i%
= Nothing
stabilito rt = sqlDB stabilito di Nothing
= jetDB di Nothing
=
di Nothing
Screen.MousePointer = 0 '
SQLtoAccess del normal
=
Hell di Function
dell'uscita del
di True
:
se rs. Condizione = 1 rs di Then
. Rs di Close
= estremità stabiliti If
di Nothing
se rt. Condizione = 1 Then
rt. Close
stabilito rt = estremità If
di Nothing
se il <> di sqlDB.State adStateClosed lo sqlDB di Then
ssiDB.Close
= estremità stabiliti If
di Nothing
se il <> di jetDB.State adStateClosed il jetDB di Then
jetDB.Close
= estremità stabiliti If
i% di Nothing
=
di MsgBox (“errore„, vbCritical interni, “SQLtoAccess„ & vbCrLf & vbCrLf & Err.desription) Screen.MousePointer = 0 'riferimenti del normal

End Function

For, un esempio di SQLFileSpec$ è:
Provider=SQLOLEDB.1; Sicurezza Info=FALSE di Persist; =MyUserName di identificazione usuario; Password=MyserPassword; Catalog=MyDatabase iniziale; Dato Source= (locale) \ SQLEXPRESS; il Connect Timeout=5

And DBFileSpec$ è: il

TIA per tutta l'assistenza chiunque del
C:\Database\MyAccess.mdb può lend.
class= del

Risposta : Base di dati di assistente di SQL esportazione/copiare per accedere a

Capisco che, poichè avete dichiarato, using gli impianti del IP ma non il nome “di DNS„, o FDQN mentre gradico denominarlo.
La differenza nel processo o “nel percorso„ della richiesta di autenticare è l'edizione come la avete indicata.
Esaminiamo le differenze: Il XP VM è entrato al dominio e quindi ha un certificato al pronto e conosce il nome fully-qualified e la parola d'accesso dell'utente. L'inizio attività del pass-through “o quindi automatico„.

Come simuliamo questo sull'assistente?
Quando entrate dall'assistente, using lo IE incorporato, state usando il coordinatore (o un admin-tipo) per le credenziali.
Allo IIS questo assomiglia a [email protected] O NETBIOSNAME/username O username.domain.extension O username@NETBIOSNAME, O CN=administrator, OU=etc, OU=etc, ecc.
Ciò lascia molte ripetizioni per trovare l'inizio attività adeguato per un utente.
PER QUANTO: quando usate il IP, lo IE non trasmette le credenziali di Windows. SOPPRESSIONE FUORI QUEI CAMPI.
Il guasto più probabile è che l'assistente sta aggiungendo il dominio ad un Domain Name già attuale; come questo: username.domain.com.domain.com
Questo utente non esiste e non può entrare. Nevermind che a macchina avete scriv appena in username o in username.domain.com
Da voi dichiarare che il XP e gli assistenti ragruppati tutto il punto all'esatto lo stesso DNS, quindi il problema devono trovarsi in uno di tre posti:
1. Lo IE
2. Le regolazioni di dominio nell'interfaccia del NIC sono in qualche modo differenti che l'unità di XP. Esaminare le regolazioni di DNS e paragonare il XP VM all'assistente. Esaminare le regolazioni di dominio.
3. Lo IIS -- ciò ha potuto essere un'edizione con le credenziali richieste e le forme così come l'indice virtuale.
Ci dovrebbe essere un visore di errore nel caso quando l'inizio attività viene a mancare. Lo dirà quale edizione state affrontando, almeno nel senso che identificherà il nome o la parola d'accesso errato (ricordar, non importa che la mettiate nella destra, esso importa che sia d'accordo con la disposizione IIS la voglia e che la disposizione sia alterata quando siete sulla macchina locale), o qualcosa come “richiede SSH„ o qualcosa.

La mia congettura è: Gli assistenti stanno aggiungendo le modifiche o qualcosa di dominio quando entrate direttamente da loro. Se usate un FQDN, il DNS fornisce il IP, lo SRV registra ecc. ecc. Questi informazioni auto-stanno aggiungendosi alle credenziali che scriv dentro. Questo problema esatto accade sullo scambio non-ragruppato se entrate all'assistente come admin locale (quando l'assistente di scambio non è una CC). Il nome del admin locale è seguito dal nome della macchina (admin.termserver1) ed allora quando provate ad usare OWA, il vostro nome esce come administrator.domain.extension@termserver1
Viene a mancare. Usare il IP ed accetta scriv nei creds.
Altre soluzioni  
 
programming4us programming4us