Fråga : Kopiera/exportdatabas för SQL-serveren för att ta fram

Jag har ett rutinmässigt som kallas med klicka av en knäppas i VB6. Förmiddag I using den uttryckliga serveren 2005 för ms SQL och ms tar fram 97-2003 databaser. De rutinmässiga borttagningsna mitt existerande tar fram DB, skapar tom på nytt, då kretsar till och med bordlägger i SQL-serverDBEN som skapar dem därefter fyllning dem med tabellens data. Den fungerar perfekt, undantar den är långsam bordlägger på med stora belopp av data. Det är, därför att för varje SQL bordlägga, det öppnar en recordset, bygger ”ett mellanlägg” stränger och tillfogar ro till ta fram DB.

I har kommenterat ut kodifiera som jag behöver att bytas ut. Jag skulle något liknande som denna kodifierar bytt ut med ett meddelande, som kopierar rekorden i ett går. Jag har försökt varje permutation av meddelandenågot liknande ”som ÄR VALD * IN I FRÅN ” (inte fungerar, därför att den försök att skapa detexisterande bordlägger). Också försökt ”MELLANLÄGG IN I som ÄR VALD * FRÅN ” och miljon annan saker. Det måste finnas långt, I precis kan inte finna det, eller kanske jag har men hade syntax errors.

This går att vara tuff. Jag önskar inte att skapa mitt bordlägger any olikt, mig önskar inte att höra om DTS eller SSIS, lagrade tillvägagångssätt eller anknöt databaser. På peka, var kodifiera kommenteras ut, båda databaser är öppna, alla bordlägger namnger är bekant och finns i båda DB, och allt är ordnar till för det kopiera tillvägagångssättet. I önskar precis ett trevlig ren SQL-meddelande/query att ska kopiera rekorden snabbare än spring till och med recordsetsna. De enda annan styrka för svar I accepterar är bits kommenterade kodifierar ut, bokslut databaserna, och att kopiera bordlägger olikt. Men minns, du ska förlorar bordlägga namnger ditåt och ska behov att hämta dem igen. Idén av detta rutinmässigt är att kopiera någon SQL-databas till en ta framDB som är ovetande något om, bordlägger eller deras lätta structure.

Sounds, men den har kört mig som är tokig. Kan någon hjälpa? Nedanfört är det rutinmässigt:

Function SQLtoAccess () som Boolean
dunkel sqlDB som ny dunkel jetDB för ADODB.Connection
som nya dunkla rs för ADODB.Connection
som ny ADODB.Recordset
dunkel rt som ny
för
för ADODB.Recordset
ReDim Tables$ (0) på för Hell
för lokalfelet gammal GoTo borttagnings för ***
Rem sprutar ut databas***
, om Len (Dir$ (DBFileSpec$)) Then
CRFO bytefile
(för DBFileSpec$, ”för K”, h%, 0) ”avslutar *** för If

Rem skapar nytt sprutar ut för CreateAccessDB för appellen för databas***
hastigt grepp för *** för
sqlDB.Open SQLFileSpec$

Rem för *** för serveren för SQL för *** för
Rem (DBFileSpec$)
den öppna som all SQL bordlägger ***
SQL$ = ”VALT * FRÅN INFORMATION_SCHEMA.Tables BESTÄLLA vid Table_Type, rs för Table_Name "
. Öppna SQL$, sqlDB, adOpenForwardOnly, räddningen för *** för stunder inte rs.EOF
Rem för adLockReadOnly
bordlägger känd
Tables$ (UBound (Tables$ för sylten Tables$ (UBound (Tables$) + 1) för ***
ReDim)) = rs! Table_Name
      rs.MoveNext
   Wend
   rs.Close

Screen.MousePointer = 11 ”*** för
Rem för hourglass
förbinder för att spruta ut databas***
jetDB.Provider = ”Microsoft.Jet.OLEDB.4.0 " *** för
Rem för
jetDB.Open DBFileSpec$
cyklar bordlägger igenom, danande och fyllning dem ***
för i% = 1 till *** för UBound (Tables$)
Rem får bordlägger info-***
mesa$ =
för Tables$ (i%) SQL$ = ”VÄLJER” ”& mesa$ &”” FRÅN rs för INFORMATION_SCHEMA.Tables-"
. Öppna SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
, om inte *** för rs.EOF Then
Rem får *** för kolonn info,
SQL$ = ”VALDA Column_Name, Data_Type, Character_Maximum_Length, Is_Nullable ”
SQL$ = SQL$ & ”FRÅN INFORMATION_SCHEMA.Columns VAR ”
SQL$ = SQL$ & ”Table_Name = ”” & mesa$ & ”” ”
rt. Öppen SQL$, sqlDB, adOpenForwardOnly, adLockReadOnly
tbl$ =” (”
stunder inte rt.EOF
väljer fallet rt!
för *** för byten för *** för
Rem ”för tinyint " för fallet för
för det Data_Type
fallet ”bet "
för *** för *** för
Rem Yes/No txt$ = ”YESNO " txt$ =
för *** för heltalet för *** för
Rem ”för smallint " för fallet ”för BYTE"
txt$ =
för *** för heltalet för *** för
Rem ”för int " för fallet ”för HELTAL"
lång txt$ = ”LONG " för fall”smallmoneyen”, ”pengar " för

för *** för valuta för *** för
Rem txt$ =
verklig " för *** singeln för
Rem
för *** txt$ =
för *** för dubblett för *** för
Rem för den -/>fall”flötet " txt$ = ”DUBBEL " för den fall”datetime”, ”smalldatetime”, ”tidsstämpeln " för
*** för
Rem daterar/Time ***
txt$ =
för *** ”för DATETIME " för
*** för fallet 9
Rem binär txt$ = ”BINÄR "
för *** för text för *** för
Rem ”för rödingen " för fallet ”för
nvarchar”, ”varchar”, ”nchar”, ds$ = CStr (rt! Character_Maximum_Length)
txt$ = ”fall för
””för NVARCHAR (” & ds$ & ”) avbildar " OLE *** för
Rem anmärker memoen för *** för
Rem ”för memoen " för fallet för ***
, eller Hyperlink***
txt$ = ”MEMO"
avslutar Select
om rt! Is_Nullable = ”INTE” Then
txt$ = txt$ &” INTE OGILTIG "
avslutar If
tbl$ = tbl$ & ”[” & rt! Column_Name & ”]” & ””& txt$ &”, ”
rt.MoveNext
Wend
Mid$ (tbl$, Len (tbl$), 1) =”) ”
rt. Close
rs. Close
Rem *** skapar det förbaskade tinget redan! ***
SQL$ = ”SKAPAR BORDLÄGGER [” & mesa$ & ”]”, & tbl$
jetDB.Execute SQL$, *** fyndet för adExecuteNoRecords
Rem allt primärt stämm ***
SQL$ = ”VALD s.name SOM TABLE_SCHEMA, t.name SOM TABLE_NAME, k.name SOM CONSTRAINT_NAME, k.type_desc SOM CONSTRAINT_TYPE, ”
SQL$ = SQL$, & ”c.name SOM COLUMN_NAME, ic.key_ordinal SOM ORDINAL_POSITION-”
SQL$ = SQL$ & ”FRÅN sys.key_constraints SOM K-”
SQL$ = SQL$ & ”SAMMANFOGAR sys.tables SOM t PÅ t.object_id- = k.parent_object_id-”
SQL$ = SQL$, & ”SAMMANFOGA sys.schemas SOM s PÅ s.schema_id- = t.schema_id-”
SQL$ = SQL$ & ”SAMMANFOGA sys.index_columns SOM ic PÅ ic.object_id = t.object_id, OCH ic.index_id- = k.unique_index_id-”
SQL$ = SQL$ & ”SAMMANFOGAR sys.columns SOM c PÅ c.object_id = t.object_id, OCH c.column_id- = ic.column_id-”
SQL$ = SQL$ & ”BESTÄLLER VID TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME, ORDINAL_POSITION-"
rt. Öppen SQL$, sqlDB, adOpenForwardOnly, *** uppsättningen för adLockReadOnly
Rem den primära tabellen stämm ***
txt$ = stunder inte rt.EOF
för ""
om rt! Table_Name = mesa$ Then
om rt! Constraint_Type = ”PRIMARY_KEY_CONSTRAINT” Then
ConName$ = rt! Constraint_Name
txt$ = txt$ &” [”& rt! Column_Name &”], ”
avslutar If
avslutar If
rt.MoveNext
Wend
rt. Close
, om Len (txt$) Then
Mid$ (txt$, Len (txt$), 1) =”) ”
SQL$ = ”FÖRÄNDRAR SIG, BORDLÄGGER [” & mesa$ & ”] TILLFOGAR det PRIMÄRA TVÅNGET [” & ConName$ & ”] STÄMM (” & txt$
jetDB.Execute SQL$, adExecuteNoRecords
avslutar If
avslutar upp den If
Rem *** påfyllningen 'er! ***
SQL$ = ”VÄLJER * FRÅN [” & mesa$ & ”] ”rs för
. Öppen SQL$, sqlDB, adOpenForwardOnly, stunder inte rs.EOF
för adLockReadOnly
SQL$ = ”MELLANLÄGGET IN I [” & mesa$ & ”] VÄRDERAR (”
för f% = 0 till rs. Fields.Count - 1
txt$ = SQLStr$ (rs. Sätter in (f%)
för .value) om txt$ =” ”riktiga”” Then
txt$ = ”- 1 "
ElseIf txt$ =” ”falska”” Then
txt$ = ”0 "
avslutar If
SQL$ = SQL$ & txt$
om f% < rs. Fields.Count - 1 Then
SQL$ = SQL$ &”, ”
avslutar If
nästa f%
SQL$ = SQL$ &”) ”
jetDB.Execute SQL$, rs för adExecuteNoRecords
rs.MoveNext
Wend
. Rs för
för Close
den nästa i%

sqlDB.Close
jetDB.Close
fastställda = Nothing
uppsättningen rt = Nothing
fastställd sqlDB = Nothing
fastställd jetDB = Nothing

Screen.MousePointer = 0 '
SQLtoAccess för normal
= True

går ut Function

Hell:
om rs. Påstå = 1 Then
rs. Close
fastställda rs = Nothing
avslutar If
om rt. Påstå = 1 Then
rt. Den Close
uppsättningen rt = Nothing
avslutar If
, om adStateClosed Then
ssiDB.Close
fastställd sqlDB för sqlDB.State <> = Nothing
avslutar If
, om adStateClosed Then
jetDB.Close
fastställd jetDB för jetDB.State <> = Nothing
avslutar If
i% = MsgBox (”inre fel”, vbCritical, ”SQLtoAccess” & vbCrLf & vbCrLf & Err.desription)
Screen.MousePointer = 0 'normal

End Function

For hänvisar till, ett exempel av SQLFileSpec$ är:
Provider=SQLOLEDB.1; Persist säkerhet Info=FALSE; Användare - ID-=MyUserName; Password=MyserPassword; Initiala Catalog=MyDatabase; Data Source=) (för lokal \ SQLEXPRESS; Connect Timeout=5

And DBFileSpec$ är:

TIA för någon hjälp någon för
C:\Database\MyAccess.mdb kan lend.
" klar "

Svar : Kopiera/exportdatabas för SQL-serveren för att ta fram

Jag förstår, att, som du har påstått, using IP-arbetena men inte ”DNSEN” namnge, eller FDQN, som jag gillar till appellen den.
Skillnaden i det processaa eller ”sändningen” av förfråganen att legitimera är utfärda, som du har påstått den.
Låt oss undersöka skillnaderna: XPEN VM loggas in till området och har därför ett certifikat på ordna till, och den vet att den fully-qualified användaren namnger och lösenordet. Den Hence automatisk eller ”pass-through” inloggningen.

Hur vi simulerar denna på serveren?
(Eller admin-skriva), när du loggar in från serveren, using den inbyggde IEN, du använder administratören för vitsord.
Till IISEN detta ser lik [email protected] ELLER NETBIOSNAME/username ELLER username.domain.extension ELLER username@NETBIOSNAME, ELLER CN=administrator, OU=etc, OU=etc, Etc.
Detta lämnar upprepningar för en radda för att finna den riktiga inloggningen för en användare.
HOWEVER: när du använder IPEN, IEN eftersänder inte de Windows vitsorden. DEN FÖRBIGÅR DE SÄTTER IN UT.
Det mest rimliga felet är att serveren fästar området till ett känt redan existerande område; gilla detta: username.domain.com.domain.com
Denna användare finns inte och kan inte logga in. Nevermind som du skrivade precis i username eller username.domain.com
Sedan du påstår att XPNA och alla de samla i en klunga serverorna pekar till avkräva samma DNS, då problemet måste ligga i en av tre förlägger:
1. Ien
2. Områdesinbrotten som NICEN har kontakt, är somehow olika än XP-enheten. Se DNS-inställningarna och jämför XPEN VM med serveren. Se områdesinställningarna.
3. IISEN -- denna kunde vara en utfärda med de krävda vitsorden, och bildar, såväl som det faktiska arkivet.
Det bör finnas ett fel i händelsetittaren, när inloggningen missar. Den ska berättar dig att vilka utfärdar dig vänder mot, åtminstone i avkänningen som den ska identifierar orätt känt eller, lösenordet (minns, det betyder inte, att du sätter det i rätt, det betyder att det instämm med formatera IIS önskar den och det formaterar förändrar sig, när du är på lokalen bearbetar med maskin) eller något något liknande ”kräver SSH” eller något.

Min gissning är: Serverorna tillfogar område märker eller något, när du loggar in direkt från dem. Om du använder en FQDN, DNSEN ger IPEN, SRV-rekorden Etc. Etc. som denna information auto-tillfogas till vitsorden, du skrivar in. Detta avkräver problem händer på non-samla i en klunga utbyte, om du loggar in till serveren som lokalen admin (när utbytesserveren inte är en DC). Den kända lokalen admin följs av den kända bearbeta med maskin (admin.termserver1) och därefter, när du försök att använda OWA, ditt känt kommer ut lik administrator.domain.extension@termserver1
Den missar. Använd IPEN, och den accepterar som skrivas i creds.
Andra lösningar  
 
programming4us programming4us