сравнителни Конфликти схеми (съпоставяне) в Microsoft SQL Server 2018
назначаване съпоставяне
характер на данните
представителството на машината на всеки символ или знак е различни комбинации от битове. Следователно, използването на един байт за съхранение на символи дава възможност да се определи до 256 различни герои. Ако увеличите количеството на данните, до два байта, ще бъде възможно да признае 65536 героите.
Страницата с код е не друг, а наборът от различни комбинации от битове държави (от 256) в структурата на байт. Тези комбинации определят главни и малки букви, цифри, специални символи. При прехвърляне на данни между компютърните системи с различни кодови страници трябва да извършите конвертирането. Символи комбинация от битове, който не съществува в схемата на дестинация, тъй като в резултат ще загубите.
За да се избегнат такива ситуации, на международните стандарти ISO организация и сме разработили една група от Unicode Unicode стандарт.
Редът на подреждане определя правилата за сравнение и представяне на символите. Например, характера "а" по-голямо "б" символ. В допълнение, реда на подреждане на набора от символи, отговарящи на горния десен ъгъл и с по-нисък такъв.
Описание съвпадение на вериги
сравнителни съпоставяне вериги определят начини за съхраняване и обработка на сървъра характер на данните. Всяка схема предвижда:
- подредени за данните, кодирани Unicode;
- реда на подреждане на данните, кодирани не-Unicode;
- код на страницата за данните, кодирани не-Unicode.
На сървъра, на двете схеми се изпълняват група - Windows съпоставки и SQL съпоставки. Първата група от сравнителни схеми, изпълнявани на сървъра, в подкрепа на Windows регионални настройки. Препоръчително е да се работи с тази група. Втората група, SQL комплектите, се използва за съвместимост с предишни версии на MS SQL сървър. Нейният избор може да бъде оправдано, ако имате намерение да общуват с MS SQL 6.5 или MS SQL 7.0 сървър или ако молбата работи с данни, предназначени да отговорят на съвпадение вериги предишните версии на сървъра.
На различни нива могат да използват различни схеми картиране:
- сървърно ниво. Схема за картографиране, избран по време на инсталацията на сървъра. Избраната схема ще се използва по подразбиране за всички бази данни, системни и потребителски бази данни, както и всички обекти на всяка база данни. Ако е необходимо, променете схемата на ниво сървър чрез Rebuild магистърска програма.
- ниво база данни. Картите могат да бъдат определени при създаването на базата данни. Всички базови съоръжения ще използват тази схема по подразбиране. Също така, на избраната схема ще се използва за символни променливи и параметри. Променете сравнението на схема на база данни може да бъде използване ALTER DATABASE команда.
- поле на маса ниво. При създаване на таблица, можете да зададете своя собствена картографиране.
На нивото на обекти на база данни (маси), схемата не е уточнено.
практическо приложение
По ирония на съдбата, по схемата за картографиране, както и на спусъците, често не обръщат достатъчно внимание. По-точно - по схемите припомнят само когато възникне грешка «Не може да се съпоставяне конфликт». За решаване на проблеми е необходимо да се разбере причините за тях и начините за техните възможни решения.
При избора Cyrillic_General_CI_AS всички базата данни на системата, включително TempDB база данни ще използва това сравнение верига. Както бе посочено по-горе, всички новосъздадени потребителски бази данни и таблицата по подразбиране ще имат абсолютно същия модел. Въпреки това, нищо не пречи на инсталацията изберете различна схема, а също и да се работи с нея.
Помислете например за ситуацията, когато сървърът е инсталиран с комплектованите Cyrillic_General_CI_AS, има NEW_BASE сървъра на базата данни с Cyrillic_General_CI_AS картите и база данни OLD_BASE да работи със старото приложение за SQL_Latin1_General_CP1251_CI_AS схемата. За база NEW_BASE не може да се притеснявате - в рамките на схемата на сървъра съвпадение Всички искания правилно ще се справят символни данни. Друго нещо, когато данните от OLD_BASE необходими.
Грешка «Не може да се съпоставяне конфликт» ще се появи:
- Когато съединенията се присъединят или да СЪЮЗ с маси от базата данни с друго сравнение схема.
- Когато се работи с временни таблици в контекста на производствената база данни. Временни маси са създадени в основата на TempDB, където, както вече беше отбелязано, сървърът използва схема за картографиране и символни данни в този случай не могат да бъдат сравнени правилно.
- Най-често срещаният случай - когато се опитват да сравняват стойностите на характер полета различни сравнение схеми (дори в рамките на един и същ документ или данни).
Съобщението за грешка казва всичко - сървърът не е в състояние да сравни героите от различни съвпадение на вериги. Решението показва следното: да предоставят данни на един и същ модел съпоставяне.
Ако заявката за база данни OLD_BASE работим с временни таблици или маса тип променливи, а след това, когато ги създавате, е необходимо изрично да посочвате желаната схема съпоставяне за всяко поле характер. Например:
На следващо място, да се осъществи връзка между полетата с различни схеми не директно. Съответно, не е възможно да се направи JOIN или съюз да маси с различни схеми съпоставяне на едни и същи или различни бази данни. В противен случай ще получите съобщение за грешка отново. В този случай, полето за обединена също трябва да доведе до по схема с помощта на сравнения верига на реализация. Да предположим, че връзка OLD_BASE NEW_BASE маси и може да се извършва, както следва:
По този начин редица ограничения - не се променят верига за изчислени полета, индексирани полета, полета с ограничение CHECK или външни ключове. Вие трябва да ги премахнете, след което да се промени схемата за картографиране, за да пресъздадете. Така, че работата може да се направи тук е голям и сериозен.
Ако не сте в състояние да води нова база данни в рамките на схемата на сървъра, и не можете да промените кода на придобитото заявлението - това е необходимо да се промени схемата на сървър и схемата на базата от данни (отново, ако това няма да спре работата на други приложения и бази данни) , Най-сигурният и най-лесният начин да се замени схемата за сървър - да преинсталирате целия сървър, който по принцип е еквивалентно на Rebuild магистърска програма. След това е необходимо да се възстанови структурата на базата данни (но не и данните в тях!) С новата схема събирането, а след това да импортирате данните в актуализираната структура.
Ако по-стара база данни е свързана с конкретна схема събирането, а новата рамка се използва различна схема, тогава има по един начин - да достави нов сървър или инсталиране на екземпляр с име (например) SQL-Server. Въпреки това, не е ясно колко ще отнеме ресурси за посрещане на име инсталация сървър и поддържа ли придобити заявлението по принцип такава конфигурация. Възможно е, че тя ще бъде по-лесно да се инсталира на отделен сървър с неговата схема съпоставяне на отделна машина.
заключение
Както можете да видите - изборът на схемата на картографиране може значително да повлияе на развитието и поддръжката на сървърни решения. Ето защо е необходимо да се определи оптималния избор на схеми за съпоставяне на ранен етап, в съответствие с изискванията на съществуващите приложения и разработване на стратегия на системата като цяло.