Vraag : SQL van het exemplaar/van de Uitvoer het Gegevensbestand van de Server aan Toegang

Ik heb een routine die met de klik van een knoop in VB6 wordt geroepen. Ik gebruik de Server 2005 van lidstaten SQL uitdruk, en de gegevensbestanden van MS-Access 97-2003. De routine schrapt mijn bestaande OB van de Toegang, ontspant lege, toen lijnen door de lijsten in SQL OB van de Server, die tot hen leiden die dan hen vullen met de gegevens van de lijst. Het werkt volkomen, maar langzaam is het op lijsten met hopen gegevens. Dat is omdat voor elke SQL lijst, het een recordset opent, een „tussenvoegsel“ koord, bouwt en toevoegt de rij aan de Toegang DB.

I uit code I behoefte heeft becommentari�ërd om worden vervangen. Ik zou van deze die code houden met één verklaring wordt vervangen die de verslagen in één gaat kopi�ërt. Ik heb elke permutatie van verklaringen als „UITGEZOCHT * IN VAN “ geprobeerd (werkt niet omdat het probeert om tot de reeds-bestaat lijst) te leiden. Ook geprobeerd „TUSSENVOEGSEL IN UITGEZOCHT * VAN “, en miljoen andere dingen. Er moet een manier zijn, kan ik enkel niet het vinden, of misschien heb ik maar had syntaxis errors.

This ga zijn taaie. Ik wil mijn lijsten creëren geen verschillend, wil ik niet over DTS of SSIS, opgeslagen procedures, of met elkaar verbonden gegevensbestanden horen. Op het punt waar de code uit wordt becommentari�ërd, zijn beide gegevensbestanden open, zijn alle lijstnamen gekend en bestaan in zowel db's, als alles is klaar voor de het kopiëren procedure. Ik wil enkel een aardige schone SQL verklaring/vraag die sneller de verslagen dan doornemend recordsets zullen kopiëren. Het enige andere antwoord ik zou kunnen goedkeuren verwijdert de becommentari�ërde code, sluit de gegevensbestanden, en kopi�ërt verschillend de lijsten. Maar herinner me, zult u de lijstnamen verliezen die de manier en hen zal moeten opnieuw halen. Het idee van deze routine is om het even welk SQL gegevensbestand aan een OB te kopiëren van de Toegang, zonder om het even wat over de gemakkelijke lijsten of hun structure.

Sounds te kennen, maar het heeft me noten gedreven. Kan iedereen helpen? Hieronder is de routine:

Function SQLtoAccess () als/> Schemerige sqlDB Boolean
Schemerige jetDB ADODB.Connection
Schemerige rs ADODB.Connection
Schemerig rechts als Nieuwe ADODB.Recordset
ReDim Tables$ (0)

op Lokale Fout GoTo Hell

Rem *** schrapt oud Straalgegevensbestand ***
als Len (Dir$ (DBFileSpec$)) Then
het het killfile
Eind If

Rem *** van de Vraag CRFO (DBFileSpec$, „k“, h%, 0) „leidt tot de nieuwe StraalGreep van de Server ***
sqlDB.Open SQLFileSpec$

Rem *** van CreateAccessDB van de gegevensbestand***/> Vraag
)

Rem *** Open SQL alle SQL lijsten ***
SQL$ = „SELECTEERT * UIT ORDE INFORMATION_SCHEMA.Tables door Table_Type, Table_Name "
rs. Open SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
terwijl niet rs.EOF
Rem *** het Domein Tables$ (UBound (Tables$) + 1)
Tables$ sparen van de lijstnaam ***
ReDim (UBound (Tables$)) = rs! Table_Name
      rs.MoveNext
   Wend
   rs.Close

Screen.MousePointer = 11 „hourglass

Rem *** verbindt met Straalgegevensbestand ***
jetDB.Provider = „Cyclus van Microsoft.Jet.OLEDB.4.0 de "
jetDB.Open DBFileSpec$

Rem *** door lijsten, makend en vullend hen „SELECTEERT“ ***
voor i% = 1 aan UBound (Tables$)
Rem *** lijstinfo ***
krijgen mesa$ = Tables$ (i%)
SQL$ = „& mesa$ &““ VAN INFORMATION_SCHEMA.Tables "
rs. Open SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
als niet rs.EOF Then
Rem *** info *** van de Kolom krijgen
SQL$ = „UITGEZOCHTE Column_Name, Data_Type, Character_Maximum_Length, Is_Nullable „
SQL$ = SQL$ & „VAN INFORMATION_SCHEMA.Columns WAAR „
SQL$ = SQL$ & „Table_Name = „“ & mesa$ & „“ „
rechts. Open SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
tbl$ =“ („
terwijl niet rt.EOF
Uitgezocht Geval rechts! Het Geval van Data_Type
„beetje "
Rem *** Ja/nee ***
txt$ = Byte van het Geval de „tinyint "
Rem *** van „YESNO "
***
txt$ = Geheel van het Geval het „smallint "
Rem *** van de „BYTE "
***
txt$ = Geheel van het Geval „int. "
Rem *** van het „GEHEEL "
het Lange ***
txt$ = „LANG "
Geval „smallmoney“, „geld "
Rem *** Munt ***
txt$ = het Geval van de „MUNT "
„echte "
Rem *** Enige ***
txt$ = „ENIGE "
geval „vlotter "
Rem *** Dubbele ***
txt$ = „DUBBEL "
Geval „datetime“, „smalldatetime“, „timestamp "
Rem *** Datum/Tijd ***
txt$ = „DATETIME "
Geval 9
Rem *** Binaire ***
txt$ = „BINAIR "/> „nvarchar“ Geval Rem ***- Tekst ***
ds$ = CStr (rechts! Character_Maximum_Length)
txt$ = „& „) „
Geval NVARCHAR (“ & ds$ het Geval
„memorandum "
Rem *** Memorandum van „beeld "
Rem *** OLE Objecten *** of Hyperlink ***
txt$ = het Eind van het „MEMORANDUM "
Select
als rechts! Is_Nullable = „GEEN“ Then
txt$ = txt$ &“ NIET ONGELDIG "
Eind If
tbl$ = tbl$ & „[“ & rechts! Column_Name & „]“ & „„& txt$ &“, „
rt.MoveNext
Wend
Mid$ (tbl$, Len (tbl$), 1) =“) „
rechts. Close
rs. Close
Rem *** leidt reeds tot het vloekding! ***
SQL$ = „LEIDT tot LIJST [“ & mesa$ & „]“ & tbl$
jetDB.Execute SQL$, adExecuteNoRecords
Rem *** vindt alle Primaire Sleutels ***
SQL$ = „UITGEZOCHTE s.name ALS TABLE_SCHEMA, SLUITEN aan t.name zich ALS TABLE_NAME, k.name ALS CONSTRAINT_NAME, k.type_desc ALS CONSTRAINT_TYPE, „
SQL$ = SQL$ & „c.name ALS COLUMN_NAME, ic.key_ordinal ALS ORDINAL_POSITION „
SQL$ = SQL$ & „VAN sys.key_constraints ALS k „
SQL$ = SQL$ & „bij sys.tables ALS t OP t.object_id = k.parent_object_id „
SQL$ = SQL$ & „SLUIT me aan bij sys.schemas ALS s OP s.schema_id = t.schema_id „
SQL$ = SQL$ & „SLUIT me aan bij sys.index_columns ALS ic OP ic.object_id = t.object_id EN ic.index_id = k.unique_index_id „
SQL$ = SQL$ & „SLUIT me aan bij sys.columns ALS c OP c.object_id = t.object_id EN c.column_id = ic.column_id „
SQL$ = SQL$ & „ORDE DOOR TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME, ORDINAL_POSITION "
rechts. Open SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
Rem *** plaatste de Primaire Sleutels van de lijst ***
txt$ = ""
terwijl niet rt.EOF
als rechts! Table_Name = mesa$ Then
als rechts! Constraint_Type = „PRIMARY_KEY_CONSTRAINT“ Then
ConName$ = rechts! Constraint_Name
txt$ = txt$ &“ [„& rechts! Column_Name &“], „/> het Eind If
rt.MoveNext
Wend
rechts van If
. Close
als Len (txt$) Then
Mid$ (txt$, Len (txt$), 1) =“) „
SQL$ = „LIJST [“ & mesa$ & „] TOEVOEGT de PRIMAIRE SLEUTEL van de BEPERKING [“ & ConName$ & „] (“ VERANDERT & vullen txt$
jetDB.Execute SQL$, adExecuteNoRecords
het Eind If
Rem *** van If
'ER op! ***
SQL$ = „SELECTEERT * UIT [“ & mesa$ & „] „
rs. Open SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
terwijl niet rs.EOF
SQL$ = „IN [“ & mesa$ & „] WAARDEN („OPNEMEN
voor f% = 0 aan rs. Fields.Count - 1
txt$ = SQLStr$ (rs. Gebieden (f%) .value)
als txt$ =“ „Ware““ Then
txt$ = „- 1 "
ElseIf txt$ =“ „Valse““ Then
txt$ = „0 "
Eind If
SQL$ = SQL$ & txt$
als f% < rs. Fields.Count - 1 Then
SQL$ = SQL$ &“, „
Eind If
Volgende f%
SQL$ = SQL$ &“) „
jetDB.Execute SQL$, adExecuteNoRecords
rs.MoveNext
Wend
rs. Close
Volgende i%

sqlDB.Close
jetDB.Close

plaatste rs = Vastgestelde Nothing
rechts = Geplaatste Nothing
sqlDB = Geplaatste Nothing
jetDB = Nothing

Screen.MousePointer = 0 'normal

SQLtoAccess = de Uitgang Function

Hell van True

:
als rs. Staat = 1 Then
rs. Close
plaatste rs = Nothing
Eind If
als rechts. Staat = 1 Then
rechts. Vastgestelde Close
rechts = Nothing
Eind If
als sqlDB.State <> Then
ssiDB.Close
adStateClosed plaatste sqlDB = Nothing
Eind If
als jetDB.State <> Geplaatste Then
jetDB.Close
jetDB = Nothing
Eind If
i% = MsgBox („Interne fout“, vbCritical, „SQLtoAccess“ & vbCrLf & vbCrLf & Err.desription)
Screen.MousePointer = verwijzing adStateClosed 0 'normal

End Function

For, is een voorbeeld van SQLFileSpec$:
Provider=SQLOLEDB.1; De Veiligheid Info=FALSE van Persist; Gebruiker - identiteitskaart =MyUserName; Password=MyserPassword; Aanvankelijke Catalog=MyDatabase; Gegevens Source= (lokale) \ SQLEXPRESS; Connect Timeout=5

And DBFileSpec$ is:
C:\Database\MyAccess.mdb

TIA voor om het even welke hulp iedereen kan lend.

Antwoord : SQL van het exemplaar/van de Uitvoer het Gegevensbestand van de Server aan Toegang

Ik begrijp dat, zoals u hebt verklaard, gebruikend de IP werken maar niet de „DNS“ naam, of FDQN aangezien ik houd van het te roepen.
Het verschil in het proces of „het verpletteren“ van het verzoek voor authentiek te verklaren is de kwestie aangezien u het hebt verklaard.
Onderzoek de verschillen: XP VM wordt het programma geopend aan het domein, en heeft daarom een certificaat bij klaar, en het kent de volledig-gekwalificeerde naam en het wachtwoord van de gebruiker. Vandaar „ervaart“ automatisch of login.

Hoe simuleren wij dit op de server?
Wanneer u van de server het programma opent, gebruikend ingebouwd D.W.Z., gebruikt u de beheerder (of een admin-type) voor geloofsbrieven.
Aan IIS kijkt dit als [email protected] OF NETBIOSNAME/username OF username.domain.extension OF username@NETBIOSNAME, OF CN=administrator, OU=etc, OU=etc, enz.
Dit verlaat heel wat herhalingen om juiste login voor een gebruiker te vinden.
NOCHTANS: wanneer u IP gebruikt, D.W.Z. door:sturen niet de geloofsbrieven van Vensters. HET SPATIES UIT DIE GEBIEDEN.
De most likely mislukking is dat de server het domein aan een reeds bestaande domeinnaam toevoegt; als dit: username.domain.com.domain.com
Deze gebruiker bestaat niet, en kan niet login. Nevermind die u enkel in gebruikersbenaming of username.domain.com typte
Aangezien u dat XP en de gegroepeerde servers verklaart al punt aan nauwkeurige zelfde DNS, dan het probleem in één van drie plaatsen moet liggen:
1. D.W.Z.
2. De domeinmontages in de NIC interface zijn op de een of andere manier verschillend dan de eenheid XP. Bekijk de DNS montages en vergelijk XP VM met de server. Bekijk de domeinmontages.
3. IIS -- dit zou een kwestie met de vereiste geloofsbrieven en de vormen evenals de virtuele folder kunnen zijn.
Er zou een fout in de gebeurteniskijker moeten zijn wanneer login ontbreekt. Het zal u welke kwestie u onder ogen ziet, op zijn minst in de betekenis vertellen dat het identificeren=zal= verkeerd naam of wachtwoord (herinner me, het van belang is niet dat u het in recht zet, het van belang is dat het akkoord gaat met het formaat IIS het wil en dat het formaat wordt veranderd wanneer u op de lokale machine) bent, of iets als „vereist SSH“ of iets.

Mijn gissing is: De servers voegen domeinmarkeringen of iets toe wanneer u login direct van hen. Als u een FQDN gebruikt, verstrekt DNS IP, de Srv- verslagen enz. enz. Deze informatie wordt auto-toegevoegd aan de geloofsbrieven u binnen typt. Dit nauwkeurige probleem gebeurt op niet-gegroepeerde Uitwisseling als u aan de server als lokale admin het programma opent (wanneer de server van de Uitwisseling geen gelijkstroom is). De naam van lokale admin wordt gevolgd door de machinenaam (admin.termserver1) en toen wanneer u probeert om OWA te gebruiken, komt uw naam uit als administrator.domain.extension@termserver1
Het ontbreekt. Gebruik IP, en het keurt getypt in creds goed.
Andere oplossingen  
 
programming4us programming4us