Я создал файл XML с использованием метода .Save()
набора записей ADODB следующим образом.
dim res
dim objXML: Set objXML = Server.CreateObject("MSXML2.DOMDocument")
'This returns an ADODB recordset
set res = ExecuteReader("SELECT * from some_table)
With res
Call .Save(objXML, 1)
Call .Close()
End With
Set res = nothing
Предположим, что созданный выше XML-файл затем сохраняется в файле.
Я могу прочитать XML обратно в набор записей следующим образом:
dim res : set res = Server.CreateObject("ADODB.recordset")
res.open server.mappath("/admin/tbl_some_table.xml")
И я могу без проблем просматривать записи.
Однако я действительно хочу сохранить все данные из res
в таблицу в совершенно другой базе данных. Мы можем предположить, что some_table
уже существует в этой другой базе данных и имеет ту же структуру, что и таблица, которую я первоначально запрашивал для создания XML.
Я начал с создания нового набора записей и с помощью AddNew
добавил все строки из res
в новый набор записей
dim outRes : set outRes = Server.CreateObject("ADODB.recordset")
dim outConn : set outConn = Server.CreateObject("ADODB.Connection")
dim testConnStr : testConnStr = "DRIVER={SQL Server};SERVER=dev-windows\sql2000;UID=myuser;PWD=mypass;DATABASE=Testing"
outConn.open testConnStr
outRes.activeconnection = outConn
outRes.cursortype = adOpenDynamic
outRes.locktype = adLockOptimistic
outRes.source = "product_accessories"
outRes.open
while not res.eof
outRes.addnew
for i=0 to res.fields.count-1
outRes(res.fields(i).name) = res(res.fields(i).name)
next
outRes.movefirst
res.movenext
wend
outRes.updatebatch
Но это бомбы, когда я впервые пытаюсь присвоить значение от res
до outRes
.
Поставщик Microsoft OLE DB для драйверов ODBC, ошибка '80040e21'
Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Никакой работы не было сделано.
Может кто-нибудь сказать мне, что я делаю неправильно или предложить лучший способ скопировать данные, загруженные из XML, в другую базу данных?
Обновление частично решено
Получается, что моя ошибка вызвана попыткой установить значение поля Identity . Если я временно изменю это поле на , а не на , это будет идентификатор, все данные будут вставлены идеально.
Теперь следующий вопрос
Как я могу временно отключить свойство Identity этого поля, а затем снова включить его, когда я закончу с моими обновлениями?