Frage : Kopieren/Export-SQL-Server-Datenbank, um zurückzugreifen

Ich habe ein Programm, das mit dem Klicken eines Knopfes in VB6 benannt. Ich verwende den Eil Mitgliedstaat-SQL-Server 2005 und Mitgliedstaat-Zugang 97-2003 Datenbanken. Das Programm löscht mein vorhandenes Zugang DB, neu erstellt ein leeres, schlingt dann durch die Tabellen im SQL-Server DB und herstellt sie sie mit den Daten der Tabelle dann füllend e. Es funktioniert tadellos, ausgenommen es auf Tabellen mit großen Mengen Daten langsam ist. Das ist, weil für jede SQL-Tabelle, es ein recordset öffnet, eine „Einsatz“ Schnur errichtet und die Reihe dem Zugang DB.

I kommentiert heraus der Code hinzufügt, den ich ersetzt werden muss. Ich möchte diesen Code ersetzt durch eine Aussage, die die Aufzeichnungen in einer gehen kopiert. Ich versucht jede Permutation von Aussagen wie „AUSERWÄHLTES * IN vom “ (arbeitet nicht, weil es versucht, die bereits-vorhandene Tabelle herzustellen). Auch versuchter „EINSATZ in das AUSERWÄHLT * vom “ und Million andere Sachen. Es muss eine Weise geben, kann ich sie nicht finden gerade, oder möglicherweise habe ich, aber hatte Syntax errors.

This werde ein starkes sein. Ich möchte nicht meine Tabellen irgendwie anders als herstellen, ich möchte nicht über DTS oder SSIS, gespeicherte Verfahren oder verbundene Datenbanken hören. Am Punkt, in dem der Code heraus kommentiert, sind beide Datenbanken geöffnet, bekannt alle Tabellennamen und existieren in beiden DBs, und alles ist zum kopierenverfahren bereit. Ich wünsche gerade eine nette saubere SQL-Aussage/eine Frage, die die Aufzeichnungen schneller als kopieren, laufend durch die recordsets. Das einzige andere Antwort, die ich annehmen konnte, herausschneidet den kommentierten Code erten, schließt die Datenbanken und kopiert die Tabellen anders als. Aber erinnern, verlieren Sie die Tabellennamen, die Weise und benötigt, um sie wieder zu holen. Die Idee dieses Programms ist, jede mögliche SQL-Datenbank zu einem Zugang DB zu kopieren, ohne alles über die Tabellen oder ihr structure.

Sounds zu kennen einfach, aber sie gefahren mich nuts. Kann jemand helfen? Unter ist das Programm:

Function SQLtoAccess () als Boolean
verdunkeln sqlDB als neues ADODB.Connection
schwaches jetDB als neue ADODB.Connection
schwache rs als neue ADODB.Recordset
schwache Funktelegrafie als neues ADODB.Recordset
ReDim Tables$ (0)

auf lokale Störung Goto- Hell

Rem *** Löschung-altem Strahlendatenbank ***
, wenn Len (Dir$ (DBFileSpec$)) Then
CRFO (DBFileSpec$, „k-“, h%, 0) „Tötung file
Ende If

Rem *** verursachen neues Strahlendatenbank ***
Anruf CreateAccessDB (DBFileSpec$)

Rem *** geöffnetes SQL-Server ***
sqlDB.Open SQLFileSpec$

Rem *** Zupacken alles SQL-Tabellen ***
SQL$ = „VORWÄHLEN * vom INFORMATION_SCHEMA.Tables AUFTRAG durch Table_Type, Table_Name "
rs. SQL$, sqlDB öffnen adOpenForwardOnly adLockReadOnly
, während nicht rs.EOF
Rem *** außer Tabellenname ***
ReDim Konserve Tables$ (UBound (Tables$) + 1)
Tables$ (UBound (Tables$)) = rs! Table_Name
      rs.MoveNext
   Wend
   rs.Close

Screen.MousePointer = 11 „hourglass

Rem *** anschließen an Strahlendatenbank ***
jetDB.Provider = „Microsoft.Jet.OLEDB.4.0 "
jetDB.Open DBFileSpec$

Rem *** Zyklus durch die Tabellen ", sie erhalten ***
für i% = 1 UBound (Tables$) bildend und füllend
Rem zum *** Tabelleninfo ***
mesa$ = Tables$ (i%)
SQL$ = „VORWÄHLEN“ „u. mesa$ u.““ VON INFORMATION_SCHEMA.Tables "
rs. SQL$, sqlDB öffnen adOpenForwardOnly adLockReadOnly
, wenn nicht rs.EOF Then
Rem *** erhalten Spalteninfo ***
SQL$ = „AUSERWÄHLTES Column_Name, Data_Type, Character_Maximum_Length, Is_Nullable „
SQL$ = SQL$ u. „VON INFORMATION_SCHEMA.Columns WO „
SQL$ = SQL$ u. „Table_Name = „“ u. mesa$ u. „“ „
Funktelegrafie. SQL$, sqlDB öffnen adOpenForwardOnly adLockReadOnly
tbl$ =“ („
, während nicht rt.EOF
Fallfunktelegraphie vorwählen! Data_Type
Fall „biß "
Rem *** ja/nein ***
txt$ = „YESNO "
Fall „tinyint "
Rem *** Byte ***
txt$ = „BYTE "
Fall „smallint "
Rem *** ganze Zahl ***
txt$ = „GANZE ZAHL "
Fall „int "
Rem *** langes ganze Zahl ***
txt$ = „LANG "
Fall„smallmoney“, „Geld "
Rem *** Währung ***
txt$ = „WÄHRUNG "
Fall „reales "
Rem *** einzelnes ***
txt$ = „AUSSONDERN "
Fall„Hin- und Herbewegung "
Rem *** Doppeltes ***
txt$ = „DOPPELTES "
Fall„Datum/Uhrzeit“, „smalldatetime“, „Zeitstempel "
Rem *** Datum/Zeit ***
txt$ = „DATUM/UHRZEIT-"
Fall 9
Rem *** binäres ***
txt$ = „BINÄRES "
Fall„nvarchar“, „varchar“, „nchar“, „Putzfrau "
Rem *** Text ***
ds$ = CStr (Funktelegrafie! Character_Maximum_Length)
txt$ = „NVARCHAR (“ u. ds$ u. ") „
Fall„Bild "
Rem *** ALTES Gegenstand ***
Fall„Protokoll "
Rem *** Protokoll oder Hyperlink ***
txt$ = „PROTOKOLL "
Ende Select
wenn Funktelegrafie! Is_Nullable = „NICHT“ Then
txt$ = txt$ u.“ NICHT NULL "
Ende If
tbl$ = tbl$ u. „[“ u. Funktelegrafie! Column_Name u. „]“ u. „„u. txt$ u.“, „
Wend
rt.MoveNext
Mid$ (tbl$, Len (tbl$), 1) = ") „
Funktelegrafie. Close
rs. Close
Rem *** verursachen die verfluchte Sache bereits! ***
SQL$ = „VERURSACHEN TABELLE [“ u. mesa$ u. „]“ u. tbl$
jetDB.Execute SQL$, adExecuteNoRecords
Rem *** Entdeckung alles Primärschlüssel ***
SQL$ = „AUSERWÄHLTES s.name ALS TABLE_SCHEMA, t.name ALS TABLE_NAME, k.name ALS CONSTRAINT_NAME, k.type_desc ALS CONSTRAINT_TYPE, „
SQL$ = SQL$ u. „c.name ALS COLUMN_NAME, ic.key_ordinal ALS ORDINAL_POSITION „
SQL$ = SQL$ u. „VON sys.key_constraints ALS k „
SQL$ = SQL$ u. „VERBINDEN sys.tables ALS t AUF t.object_id = k.parent_object_id „
SQL$ = SQL$ u. „sys.schemas ALS s AUF VERBINDEN s.schema_id = t.schema_id „
SQL$ = SQL$ u. „Sys.index_columns ALS IC AUF VERBINDEN ic.object_id = t.object_id UND ic.index_id = k.unique_index_id „
SQL$ = SQL$ u. „VERBINDEN sys.columns ALS c AUF c.object_id = t.object_id UND c.column_id = ic.column_id „
SQL$ = SQL$ u. „AUFTRAG DURCH TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME, ORDINAL_POSITION "
Funktelegrafie. Geöffnetes SQL$, sqlDB adOpenForwardOnly adLockReadOnly
Rem *** einstellte das
*** Primärschlüssel der Tabelle txt$ = ""
während nicht rt.EOF
wenn Funktelegrafie nn! Table_Name = mesa$ Then
wenn Funktelegrafie! Constraint_Type = „PRIMARY_KEY_CONSTRAINT“ Then
ConName$ = Funktelegrafie! Constraint_Name
txt$ = txt$ u.“ [„u. Funktelegrafie! Column_Name u.“], „
Ende If
Ende If
rt.MoveNext
Wend
Funktelegrafie. Close
, wenn Len (txt$) Then
Mid$ (txt$, Len (txt$), 1) = ") „
SQL$ = „TABELLE ÄNDERN [“ u. mesa$ u. „] ADDIEREN BEGRENZUNGS-[“ u. ConName$ u. „] PRIMÄRSCHLÜSSEL (“ u. txt$
jetDB.Execute SQL$, adExecuteNoRecords
Ende If
Ende If
Rem *** Fülle 'äh oben! ***
SQL$ = „VORWÄHLEN * [“ u. mesa$ u. „] „
von den rs. SQL$, sqlDB öffnen adOpenForwardOnly adLockReadOnly
während nicht rs.EOF
SQL$ = „EINSATZ IN [“ u. mesa$ u. „] WERTE („
für f% = 0 zu den rs. Fields.Count - 1
txt$ = SQLStr$ (rs. Auffängt (f%) .value)
, wenn txt$ =““ Then
txt$ = „„ausrichten“ - 1 "
ElseIf txt$ =“ „falsches““ Then
txt$ = „0 "
Ende If
SQL$ = SQL$ u. txt$
wenn nn f% < rs. Fields.Count - 1 Then
SQL$ = SQL$ u.“, „
Ende If
folgendes f%
SQL$ = SQL$ u. ") „
jetDB.Execute SQL$, adExecuteNoRecords
rs.MoveNext
Wend
rs. Close
folgende i%

sqlDB.Close
jetDB.Close

gesetzte rs = Nothing
gesetzt Funktelegrafie = Nothing
gesetztes sqlDB = Nothing
gesetztes jetDB = Nothing

Screen.MousePointer = 0 'normal

SQLtoAccess = True

Ausgang Function

Hell:
wenn rs. Zustand = 1 Then
rs. Close
gesetzte rs = Nothing
Ende If
wenn Funktelegrafie. Zustand = 1 Then
Funktelegrafie. Gesetztes Close
Funktelegrafie = Nothing
Ende If
, wenn sqlDB.State <> Then
ssiDB.Close
gesetztes sqlDB = Nothing
Ende If
adStateClosed, wenn jetDB.State <> Then
jetDB.Close
gesetztes jetDB = Nothing
Ende If
i% = MsgBox („interne Störung“, vbCritical, „SQLtoAccess“ u. vbCrLf u. vbCrLf u. Err.desription)
Screen.MousePointer = 0 'normal

End Function

For Hinweis adStateClosed, ein Beispiel von SQLFileSpec$ ist:
Provider=SQLOLEDB.1; Persist Sicherheit Info=FALSE; Benutzernummer =MyUserName; Password=MyserPassword; AnfangsCatalog=MyDatabase; Datenquelle = (Einheimisch) \ SQLEXPRESS; Connect Timeout=5

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

TIA für jede mögliche Unterstützung jedermann kann lend.

Antwort : Kopieren/Export-SQL-Server-Datenbank, um zurückzugreifen

Ich verstehe dass, wie Sie erklärt, using die IP-Arbeiten aber nicht den „DNS-“ Namen oder FDQN, während ich es benennen mag.
Der Unterschied bezüglich des Prozesses oder „der Wegewahl“ des Antrags zu beglaubigen ist die Ausgabe, wie Sie sie erklärt.
Uns die Unterschiede überprüfen lassen: Die XP VM angemeldet zum Gebiet, und hat folglich eine Bescheinigung am bereiten, und sie kennt des fully-qualified den Namen und Kennwort Benutzers. Folglich der automatische oder „Durchgang“ LOGON.

Wie simulieren wir dieses auf dem Bediener?
Wenn Sie vom Bediener, using das eingebaute IE anmelden, benutzen Sie des Verwalters (oder eine Adminart) für Bescheinigungen.
Zum IIS aussieht dieses wie [email protected] ODER NETBIOSNAME/username ODER username.domain.extension ODER username@NETBIOSNAME ODER CN=administrator, OU=etc, OU=etc, etc.
Dieses lässt viele Wiederholungen, um den korrekten LOGON für einen Benutzer zu finden.
JEDOCH: wenn Sie das IP benutzen, nachschickt das IE nicht die Windows-Bescheinigungen kt. ES LÖSCHT HERAUS JENE FELDER.
Der höchstwahrscheinliche Ausfall ist, dass der Bediener das Gebiet zu einem bereits vorhandenen Domain Name anfügt; so: username.domain.com.domain.com
Dieser Benutzer existiert nicht und kann nicht anmelden. Nevermind, das Sie gerade in username oder in username.domain.com schrieben
Da Sie erklären, dass das XP und die gesammelten Bediener aller Punkt zum genauen die gleiche DNS, dann das Problem in einem von drei Plätzen liegen müssen:
1. Das IE
2. Die Gebietseinstellungen in der NIC-Schnittstelle sind irgendwie unterschiedlich als die XP Maßeinheit. Die DNS-Einstellungen betrachten und die XP VM mit dem Bediener vergleichen. Die Gebietseinstellungen betrachten.
3. Das IIS -- diese konnte eine Ausgabe mit den erforderten Bescheinigungen und den Formen sein sowie das virtuelle Verzeichnis.
Es sollte einen Projektor der Störung im Falle geben, wenn der LOGON ausfällt. Er erklärt Ihnen, welche Ausgabe Sie gegenüberstellen, mindestens in der Richtung, dass er falschen Namen oder Kennwort kennzeichnet (erinnern, ausmacht es nicht, dass Sie es in Recht einsetzen, es ausmacht es, dass es mit dem Format IIS wünscht es übereinstimmt und dass Format geändert, wenn Sie auf dem lokalen Rechner sind), oder etwas wie „erfordert SSH“ oder etwas.

Meine Vermutung ist: Die Bediener addieren Gebietsumbauten oder -etwas, wenn Sie direkt von ihnen anmelden. Wenn Sie ein FQDN benutzen, liefert die DNS das IP, das SRV notiert etc. etc. Diese Informationen Selbst-hinzugefügt zu den Bescheinigungen onen, die Sie eintippen. Dieses genaue Problem geschieht auf nicht-gesammeltem Austausch, wenn Sie zum Bediener als lokaler admin anmelden (wenn der Austauschbediener nicht ein DC ist). Der lokalen Name des admins gefolgt vom Maschinennamen (admin.termserver1) und dann, wenn Sie versuchen, OWA zu verwenden, herauskommt Ihr Name wie administrator.domain.extension@termserver1 kommt
Er ausfällt lt. Das IP benutzen und es annimmt geschrieben in den creds n.
Weitere Lösungen  
 
programming4us programming4us