prehistory
Боре, барои дубора тавлид кардани хато, ба ман нусхаи эҳтиётии пойгоҳи додаҳои истеҳсолӣ лозим буд.
Ба тааҷҷуби ман, ман бо маҳдудиятҳои зерин дучор шудам:
- Нусхаи эҳтиётии пойгоҳи додаҳо дар версия сохта шудааст SQL Server 2016 ва бо ман мувофиқ набуд SQL Server 2014.
- Дар компютери кории ман OS буд Windows 7бинобар ин ман навсозӣ карда натавонистам Сервери SQL то версияи 2016
- Маҳсулоти дастгиришаванда як қисми системаи калонтаре буд, ки меъмории меросии зич алоқаманд буд ва инчунин ба дигар маҳсулот ва пойгоҳҳо дастрасӣ пайдо мекард, аз ин рӯ барои ҷойгир кардани истгоҳи дигар он метавонад вақти хеле дарозро талаб кунад.
Гуфта-хои болоро ба назар гирифта, ба хулосае омадам, ки вакти асобагхои халли гайристандартй расидааст.
Барқарор кардани маълумот аз нусхабардорӣ
Ман қарор додам, ки мошини виртуалиро истифода барам
Танзими дастрасӣ ба SQL Server дар мошини виртуалӣ
Баъдан, зарур буд, ки барои дастрасии SQL Server аз берун чанд чора андешид:
- Барои брандмауэр қоида илова кунед, то дархостҳои портро гузаранд 1433.
- Тавсия дода мешавад, ки дастрасӣ ба сервер на тавассути аутентификатсияи Windows, балки тавассути SQL бо истифода аз логин ва парол (конфигуратсияи дастрасӣ осонтар аст). Аммо, дар ин ҳолат, шумо бояд дар хотир доред, ки аутентификатсияи SQL-ро дар хосиятҳои SQL Server фаъол созед.
- Дар танзимоти корбар дар SQL Server дар ҷадвал Харитасозии корбар нақши корбарро барои базаи барқароршуда муайян кунед db_securityadmin.
Интиқоли маълумот
Дар асл, худи интиқоли маълумот аз ду марҳила иборат аст:
- Интиқоли схемаи додаҳо (ҷадвалҳо, намудҳо, расмиёти захирашуда ва ғайра)
- Интиқоли худи маълумот
Интиқоли схемаи маълумот
Мо амалҳои зеринро иҷро мекунем:
- Мо интихоб мекунем Вазифаҳо -> Эҷоди скриптҳо барои пойгоҳи сайёр.
- Объектҳоеро, ки ба шумо интиқол додан лозим аст, интихоб кунед ё арзиши пешфарзро тарк кунед (дар ин ҳолат скриптҳо барои ҳама объектҳои пойгоҳи додаҳо сохта мешаванд).
- Танзимотҳоро барои захира кардани скрипт муайян кунед. Роҳи аз ҳама мувофиқ ин захира кардани скрипт дар як файл бо рамзгузории Юникод мебошад. Пас, агар нокомӣ ба амал ояд, ба шумо лозим нест, ки ҳамаи қадамҳоро такрор кунед.
Пас аз захира кардани скрипт, онро метавон дар SQL Server сарчашма (версияи кӯҳна) иҷро кард, то пойгоҳи додаи лозимиро эҷод кунад.
Огоҳӣ: Пас аз иҷрои скрипт, шумо бояд мувофиқати танзимоти пойгоҳи додаҳоро аз нусхабардорӣ ва пойгоҳи додаи скрипт тафтиш кунед. Дар ҳолати ман, скрипт танзимоти COLLATE надошт, ки ин боиси нокомӣ ҳангоми интиқоли маълумот ва бо рақс барои аз нав сохтани пойгоҳи додаҳо бо истифода аз скрипти васеъшуда гардид.
Интиқоли маълумот
Пеш аз интиқоли маълумот, шумо бояд тафтиши ҳама маҳдудиятҳоро дар пойгоҳи додаҳо хомӯш кунед:
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
Интиқоли маълумот бо истифода аз устоди воридоти маълумот анҷом дода мешавад Вазифаҳо -> Воридоти маълумот дар SQL Server, ки дар он пойгоҳи додаи скрипт сохта шудааст:
- Танзимоти пайвастшавиро ба манбаъ муайян кунед (SQL Server 2016 дар мошини виртуалӣ). Ман манбаи маълумотро истифода кардам Мизоҷи аслии SQL Server ва аутентификатсияи SQL-и дар боло зикршуда.
- Мо танзимоти пайвастшавӣ ба макони таъинотро муайян мекунем (SQL Server 2014 дар мошини мизбон).
- Минбаъд мо харитасозӣ мекунем. Шумо бояд ҳамаро интихоб кунед на танҳо барои хондан объектҳо (масалан, намоишҳоро интихоб кардан лозим нест). Вариантҳои иловагӣ бояд интихоб карда шаванд "Иҷозат додан ба ворид кардани сутунҳои шахсият", агар чунин истифода бурда шаванд.
Огоҳӣ: агар шумо кӯшиш кунед, ки якчанд ҷадвалҳоро интихоб кунед ва моликиятро ба онҳо таъин кунед "Иҷозат додан ба ворид кардани сутунҳои шахсият" амвол аллакай барои ҳадди аққал яке аз ҷадвалҳои интихобшуда муқаррар карда шудааст, муколама нишон медиҳад, ки амвол аллакай барои ҳамаи ҷадвалҳои интихобшуда муқаррар шудааст. Ин далел метавонад печида бошад ва боиси хатогиҳои интиқол гардад. - Биёед интиқолро оғоз кунем.
- Барқарор кардани санҷиши маҳдудият:
EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'
Агар ягон хатогӣ рух диҳад, мо танзимотро тафтиш мекунем, базаи бо хатогиҳо сохташударо нест мекунем, онро аз скрипт дубора эҷод мекунем, ислоҳот ворид мекунем ва интиқоли маълумотро такрор мекунем.
хулоса
Ин вазифа хеле кам аст ва танҳо аз сабаби маҳдудиятҳои дар боло зикршуда ба миён меояд. Ҳалли маъмултарин ин навсозии SQL Server ё пайваст шудан ба сервери дурдаст аст, агар меъмории барнома ба он иҷозат диҳад. Бо вуҷуди ин, ҳеҷ кас аз рамзи меросӣ ва дастҳои каҷи рушди пастсифат эмин нест. Умедворам, ки ба шумо ин дастурҳо ниёз нахоҳед дошт ва агар ба шумо лозим бошад, онҳо ба шумо барои сарфаи вақти зиёд ва асабҳо кӯмак мекунанд. Ба диққататон ташаккур!
Рӯйхати манбаъҳои истифодашуда
Ҳангоми воридоти маълумот бо истифода аз Ёвари воридот/содироти DTS ман бо маҳдудиятҳои FK чӣ гуна муносибат мекунам? Сутуни "Сутуни 2" коркард намешавад, зеро барои он зиёда аз як саҳифаи код (65001 ва 1252) муайян карда шудааст. Чӣ тавр ман метавонам ба SQLServer, ки дар VirtualBox кор мекунад, аз Macbook мизбонам пайваст шавам. SQL SERVER - Ворид кардани шахсият - Ёвари коршиноси воридот Бартараф кардани хатогиҳои Microsoft SQL Server Хатои 18456, Воридшавӣ барои корбар ноком шуд
Манбаъ: will.com