Ъ пак търся помощ, ...
24 отговора
19 прегледа
Ъ пак търся помощ, ...
съвети, идеи, предложения,.... всичко е добро дошло.
Та значи блъскам си главата над следното:
Искам с Transfer Method да копирам една съществуваща Баа данни на друг сервер. С тоз метод туй нещо ставало както четох из разни хелпове. Кода ми е нещо такова:
Dim MyServer As SQLDMO.SQLServer
Dim SQLDB, SQLDBNEW As SQLDMO.Database
Dim oTransfer As SQLDMO.Transfer
Set MyServer = New SQLDMO.SQLServer
Set SQLDBNEW = New SQLDMO.Database
Set oTransfer = New SQLDMO.Transfer
'Connect to the server and to the existing DB
MyServer.Connect MyServerName, "sa", ""
Set SQLDB = MyServer.Databases(MySQLDataBaseName)
SQLDBNEW.Name = DBNewName
With oTransfer
.DestDatabase = DBNewName
.DestServer = MyServer
.CopyAllTables = True
.CopyAllObjects = True
.CopyAllDefaults = True
.CopySchema = True
End With
SQLDB.Transfer (oTransfer) - това нещо май не е като хората и ми гърми.
MyServer.Close
Предварително благодаря на всички.
така както си го написала...
би трябвало да не се компилира май... тия скоби нещо не ми харесват... разкарай ги.
така както си го написала...
Сега сте пробвам без скобите.
И ми дава грешка :"Automation error"
и също така като гледам...
май повече dest-property-та ще трябва да сетнеш - Login, Password, или пък UseTrustedConnection. специално за тия не вярвам да има добри default-и.
и също така като гледам...
Мдаа. Май си прав. В сущност аз си сканирвам една БД и искам да си създам същата ( друго име разбира се) на същия сервер (сега, а после на друг) и си правя едно класче. та рекох да опитам с тоз трансфер. Имаче продулжавам по традиционния начин, ама и там нещо ми гурмят индексите. Я да видим
обаче напредваш със страшна сила
харесало ти е SQL-DMO-то :).
такава библиотечка няма за нито един друг сървър - не че съм фен на самия сървър - той, горкия, е много зле спрямо Oracle като възможности за писане. и по други параметри е double destilled naked water, ама тва е друг въпрос.
дерзай и питай.
обаче напредваш със страшна сила
харесало е силна думичка. Просто за сега ми върши най-добра работа с оглед на проекта ми. Ъ както и да е. я дай сега пак да запитам. Сканирам си като прилежно момиче всички индекси, но ми дава нещо интересно. index.type = 2050,
index.type = 2097152 i 2097154. Гледах в constants за индексите и такива не видях. Някаква идея относно това?
Хм, май те затрупвам с въпроси.
по-подробно?
какво ще рече сканираш си индексите?
нещо с sp_indexes или с SQL-DMO-то?
ако можеш направо да ми копнеш тук кода, който е проблемен (аз поне няма да го тафя, обещавам :))
по-подробно?
аха, вдянах. имаш предвид, че има един бит, дето не е описан? мхм да, тоя старшия бит имам предвид... ще потърся инфо. ако разкараш него, първия ти индекс не е уникален, а втория е.
то пък великия код ....
където всичко си е прилежно зададено и сет-нато.
For Each SQLIndex In SQLTable.Indexes
Pr Space$(5) & "' Index " & SQLIndex.Name
Pr Space$(5) & "Set sqlindex = new sqldmo.indexes"
With SQLIndex
Pr Space(5) & "sqlindex.name = " & .Name
Debug.Print SQLIndex.Name & SQLIndex.Type
Pr Space(5) & "SQLIndex.Type = " & IndexType(.Type)
End With
For Each SQLColumn In SQLIndex.ListIndexedColumns
Pr Space(5) & "SQLIndex.IndexedColumns = " & SQLColumn.Name
Next SQLColumn
Pr Space(5) & "SQLTable.BeginAlter"
Pr Space(5) & "SQLTable.Indexes.Add (sqlindex)"
Pr Space(5) & "SQLTable.DoAlter"
Pr " "
Next SQLIndex
където pr ми една function дето ми пище директно в новия клас.
и IndexType една функция дето ми връща като стринг цонтстантите
то пък великия код ....
мхм и IndexType се чуди нещо, и то с право... проверих тук таме - НИКОЙ не знае за кво е тоя бит, включително и Microsoft не казват. кой знае за кво е резервиран. ще ровя още, ако намеря, ще постна. ми засега го маскирай и се прави, че го няма (най-вероятно наистина е reserved за нещо си). ти MSDN-а ли гледаш или SQL books online, и ако MSDN-а, от кога е? моя е от юли'99.
то пък великия код ....
msdn - 2000 (3 сидита) ми е сегашен, пресен, а също така си гледкам и sql books on line, ама е много постен за sqldmo-то. ще продължавам борбата. май кодчето не е излязло много свят, но се разбира нали?
Но ще чакам всяка информация и предложения и т.н.
Мерси пак.
то пък великия код ....
а случайно за някой индекс да ти е върнало по-малко от 2097152? щото ако не ти е, имам едно идиотско предположение. забелязала ли си, че едно от нещата, които връща sp_indexes е нек'ъв colating order - и винаги е Ascending. навежда ли те тва на някаква идея защо не би го имало в MSDN-а, и при тва колкото по-късна версия е, толкова по ще го няма. да, ама SQL-DMO-то вече е releas-нато и не могат да го сменят като MSDN-а.
а може и да греша.
то пък великия код ....
да връща ми 2050. А пък в константите за Index има 2048, дето е за (ако се не лъжа в този момент) за primary key. Сега отивам пак да го ръчна
то пък великия код ....
охх, абе човек, 2050 означава 2048+2, демек, Primary Key + естествено, Unique... ти ме закла.
та да се уточним - това, дето го гледаш, е бит-маска. демек, може да има всяка от тия стойности, събрана с произволно количество от другите стойности. (е, всяка стойност може да я прибавяш само по веднъж.) всички получени по този начин чисълца са валидни стойности за Index.Type. въпроса беше, че има един бит - 21-вия, ако имаш нулев, от ляво на дясно, за който няма стойност. почти бях намерил обяснение, бива ли да ми казваш, че имало и с по-малки стойности... язък за предположението :)
абе аз ше бягам, чакат ме...
утре ако намеря нещо повече, ще постна. успех и пиши при ядове :)