Pokročilé hledání             

HELIOS iNuvio      FAQ     Uživatelský panel    

Registrovat     Přihlásit se

    Obsah fóra> Časté dotazy> Systémové dotazy
    Verze pro tisk

Postup převodu databáze SQL 7.0/SQL2000 na SQL2005/SQL2008

Zapisují se opakující se dotazy na řešení systémových problémů z provozu Helios Orange. Patří sem dotazy typu "Po instalaci SQL serveru se nemohu přihlásit do Heliosu." apod.

Moderátor: orange_moderator

Odeslat odpověď
Příspěvků: 13 • Stránka 1 z 1
  • Odpovědět s citací

Postup převodu databáze SQL 7.0/SQL2000 na SQL2005/SQL2008

Příspěvekod jan.havranek v 10.11.2006 16:18

NÁSLEDUJÍCÍ PŘÍSPĚVKY V TÉTO SEKCI JSOU OBECNĚ PLATNÉ PRO KAŽDÝ PŘECHOD Z NIŽŠÍ VERZE SQL NA VYŠŠÍ, NAPŘÍKLAD I PŘI PŘECHODU SQL2005 > SQL2008 APOD.

Jediné 100% řešení převodu databáze z kompatibility SQL7.0/SQL2000 na SQL2005/SQL2008 je EXPORT/IMPORT a je námi doporučován, pokud to zákazník dělat nechce tak na vlastní riziko.

V případě migrace databáze v kompatibilitě SQL2005 na SQL2008 se EXPORT/IMPORT provádět nemusí, dosud se nevyskytl žádný důvod k tomuto kroku.

Databáze ponechaná v původní podobě může vykazovat (dosavadní zkušenosti) problémy v oblasti tisku formulářI, v oblasti zadávání diakritiky, zadávání a práce s uživateli v databázi, může docházet k tzv. konfliktu třídění (collation conflict) a důležitá věc - na databázích ze starších verzí SQL neprobíhá jakýsi systémový audit SQL2005 (vylepšené kontrolní a logovací mechanismy konzistence dat apod.). Toto vše je vyřešeno exportem a importem, neboť všechny objekty vzniknou znovu a již plně v kompatibilitě SQL2005 a do nich jsou potom naimportovány datové hodnoty.

!!! Mechanismus Exportu/Importu umí sice přenést tabulky, které nejsou vytvořené systémem Helios a nacházejí se v databázi, ale neumí v těchto tabulkách po importu vytvořit počítané sloupce, pokud takové jsou. Nemá totiž schema těchto tabulek uloženo, tudíž přenese pouze statické atributy.

Stejně tak export nezjistí existenci externích procedur pokud nejsou použity v hlavičce externích akcí. Tedy procedura volaná zevnitř jiné procedury může být pro Export "neviditelná" a takovéto speciality musí ošetřit dodavatel externího řešení. !!!


Podrobný návod jak provést EXPORT/IMPORT je zde ke stažení.
Přílohy
Postup_export_import_db_vzor.rar
Postup exportu/importu databáze.
(56.87 KiB) 1464 krát
Naposledy upravil jan.havranek dne 08.12.2007 23:10, celkově upraveno 2
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

Převod externích údajů, které nejsou součástí Heliosu

Příspěvekod jan.havranek v 29.03.2007 15:06

V rámci přípravné fáze exportu (viz dokument) lze narazit na přítomnost externích funkcionalit (externí triggery a externí procedury). Ty nejsou uloženy ve strukturách tabulek Heliosu a je nutné je převést jiným způsobem.

Postup je následující:
1/ z hlášky exportu si poznamenat přesná jména triggerů a procedur
2/ v SQL QUERY ANALYZERU (SQL Server Management Studio v případě SQL2005) se připojit do dané databáze
3/ napsat v Query postupně SQL příkaz pro každou externí funkci
Kód: Vybrat vše
EXEC sp_helptext 'jmeno_funkce'
např.:
EXEC sp_helptext 'et_TabStavSkladu'

4/ příkaz vrátí ve výsledku vlastní tělo (SQL script) pro vytvoření dané funkce, tento script je nutné zkopírovat a někam uložit pro každou funkci
5/ po provedení exportu a importu databáze se musí do této postupně spustit všechny scripty vytvořené v bodě 3
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

chyba [80028019 Old format or invalid type library]

Příspěvekod jan.havranek v 08.12.2007 23:20

Při Exportu databáze na SQL2005 se může objevit chybová hláška 80028019 Old format or invalid type library (na českých Windows 80028019 Starý formát nebo neplatná knihovna typů). Na této instalaci SQL Serveru dříve nešlo žádným způsobem Export provést. Potíž je na straně exportní komponenty BCP, která je součástí instalace SQL.

Nyní lze řešit, řešení jsou dvě:

1/ rychlé řešení - do složky C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn nakopírovat novou verzi knihovny ODSOLE70.dll, přepsat stávající. Pokud přepsat nejde, je třeba nejprve zastavit SQL Server.

2/ finální řešení - instalace SP3 pro SQL2005 (ta by nakonec měla proběhnout tak jako tak)

MSSQL 2005 SP3
http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=AE7387C3-348C-4FAA-8AE5-949FDFBE59C4&displaylang=en

MSSQL 2005 Express SP3
http://www.microsoft.com/downloads/details.aspx?FamilyID=3181842a-4090-4431-acdd-9a1c832e65a6&DisplayLang=en
Přílohy
ODSOLE70.rar
(27.78 KiB) 1002 krát
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

Přechod na vyšší verzi MS SQL - databáze s externími doplňky

Příspěvekod jiri.dolezal v 12.03.2008 11:57

Zejména při převodu složitějších databází s řadou externích řešení na vyšší verzi MS SQL je možno postupovat dle přiloženého checklistu.

Pro kontrolu existence externích doplňků v databázi (resp. na serveru) je možno využít přiložený SQL skript.
Přílohy
Prechod_SQL_skripty_DJ180308.txt
Přechod na vyšší verzi MS SQL - skripty (přejmenujte na *.sql)
(6.63 KiB) 1030 krát
Prechod_SQL_checklist_DJ180308.txt
Přechod na vyšší verzi MS SQL - checklist
(2.76 KiB) 869 krát
Naposledy upravil jiri.dolezal dne 18.03.2008 11:32, celkově upraveno 1
jiri.dolezal
 
Nahoru

  • Odpovědět s citací

Export/import externích tabulek - neexportuje se!

Příspěvekod jiri.dolezal v 18.03.2008 10:34

POZOR !!!

Předmětem exportu/importu databáze jsou všechny pevné sloupce všech (nesystémových) tabulek v databázi se zachováním svého datového typu a nullability. K tomu se exportují všechny typy indexů, které byly známy na SQL2000. Nové typy indexů se vyexportují jako normální indexy, tzn. chybí jim příslušné nové klauzule.

Vše ostatní není předmětem exportu!

Přehled o tom, čemu je třeba věnovat speciální pozornost uvádí tabulka v příloze.

Stručný výčet objektů externích tabulek, které se nezachovají:

  • Computed Column (struktura tabulky)
  • Foreign Key (Constraints)
  • Check (Constraints)
  • Default Value (Constraints)

V případě existence objektů, které nejsou zachovány je tedy nutno vytvořit skripty pro jejich založení!
Přílohy
HeO_export-import_objekty.xls
Export/Import databáze HeO - zachování databázových objektů
(17 KiB) 495 krát
Naposledy upravil jiri.dolezal dne 27.03.2009 18:12, celkově upraveno 1
jiri.dolezal
 
Nahoru

  • Odpovědět s citací

Chyba při importu databáze pomocí Import.BAT

Příspěvekod jan.havranek v 02.04.2008 08:03

Při importu databáze (viz předchozí příspěvky) se může objevit například chyba [SQL:0,0]. Tato blíže nespecifkovaná chyba není nutně spojena s importem, může indikovat jiné potíže na SQL, v případě importu může znamenat problém s příliš dlouhými cestami na exportní adresář. Script, kterým se provádí import obsahuje jednotlivé importní příkazy pro každou tabulku. Délka jednoho výrazu nesmí přesáhnout 255 znaků (konvence T-SQL). Výraz je složen z vlastního příkazu, cesty na importní soubor, vlastního jména souboru a parametrů příkazu. Např.:
Kód: Vybrat vše
BULK INSERT JmenoDatabaze.dbo.JmenoTabulky FROM 'C:\JmenoDatabaze\dbo.JmenoTabulky.bcp' WITH(CODEPAGE='RAW',DATAFILETYPE='native',KEEPIDENTITY,KEEPNULLS,TABLOCK)

Jako výchozí cesta pro export je v Helios Orange přednastaven adresář záloh SQL, pokud je tato cesta příliš vnořená (např.: c:\Program Files\Microsoft SQL Server\MSSQL$SQL2005\MSSQL.1\MSSQL\Backup) a názvy souborů dlouhé (např.: dbo.TabFIAAVVykazParamObdobiStavu.bcp) pak doporučujeme při exportu vybrat cestu kratší, nejlépe do rootu lokálního disku serveru (tedy: C:\JmenoDatabaze).
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

Zkušenosti z převodu - složitější DB

Příspěvekod jiri.dolezal v 13.08.2008 11:05

od p. Radka Naumece, HARPAGON Software s.r.o.

  1. Přenos uživatelských účtů – zákazník požadoval přenos včetně hesel, aby zamezil prvotnímu neoprávněnému přístupu do systému.

    Řešení:
    vytváření uživatelů můžete vyskriptovat pomocí

    Kód: Vybrat vše
    SELECT 'exec sp_addlogin '''+name+''',',CONVERT(VARBINARY(256), password),', @encryptopt = ''skip_encryption''' FROM syslogins


    Výsledek uložit (vznikne skript na generování uživatelů včetně jejich původních hesel, které se ale nedozvíte). Tím založit SQL uživatele na novém serveru. Pozor – uživatelské účty bez hesla skriptem založit nešlo, bylo potřeba parametr @password změnit z hodnoty null na hodnotu prázdný řetězec ''.


  2. Při exportu externích funkcionalit (externí triggery, uložené procedury atd.) používat export do formátu Unicode. V případě použití kódování Windows se chybně přenesly české znaky (původní server by CZ, nový EN).


  3. Export externích views – ta se standardním exportem DB nepřenášejí. Zároveň doporučuj i export views, která jsou definovanými přehledy v Heliosu, je to jednoduší, než v Heliosu všechny def. přehledy otevřít a dát OK.


  4. Import DB vytvoří DB s nastavením Autoshrink=true. Musel jsem ručně přepnout zpět na doporučovanou hodnotu false.


  5. Pokud se v nějaké vlastní funkcionalitě používá procedura xp_smtp_sendmail, tak již nemá pro SQL2005 podporu a ideální je jednoduše ji nahradit pomocí integrovaného Database mail.
jiri.dolezal
 
Nahoru

  • Odpovědět s citací

[SQL:3853,16] Chyba při přechodu na SQL2005

Příspěvekod jan.havranek v 24.11.2008 11:08

Po obnově databáze z nišší verze SQL na SQL2005 a spuštění Heliosu do této databáze se při kontrole konzistence může objevit SQL chyba s informací:

NEPOKRAČUJTE V PRÁCI S DATABÁZÍ - kontaktujte dodavatele vašeho systému Helios Orange!

Číslo SQL chyby může být též: 3851, 3852, 3853, 3854, 3855, 3856, 3857, 3858 nebo 8992, jak je dokumentováno zde:
http://msdn.microsoft.com/en-us/library/aa337359.aspx


V tomto konkrétním případě se může jednat pouze o nekompatibilitu určitých specifických vlastností s prostředím SQL2005. Do databáze se dá vstoupit bez kontroly konzistence, tj. pokud je zobrazen dialog pro update tak zrušit obě zaškrtávátka uvedená v okně, nebo druhá varianta, nastavit do zástupce Heliosu řádkový parametr -kk- za Helios.exe.

Poté je třeba ověřit verzi databáze - v Systémových konstantách přes Nastav zobrazit sloupec Třídění databáze a pokud je zde uvedeno SQL_Czech_CP1250_CI_AS jedná se o data vznilká na SQL 7.0. Na takové databázi je třeba provést E/I a v dialogu exportu je třeba zaškrtnout volbu Smazání počítaných sloupců. Pokud je třídění databáze Czech_CI_AS je třeba též provést E/I, Smazání sloupců se provádět nemusí.
Přílohy
chyba_update.jpg
chyba_update.jpg (27.26 KiB) Zobrazeno 22488 krát
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

chyba [ERRORLEVEL=1 BCP.EXE ...]

Příspěvekod jan.havranek v 12.03.2009 09:26

Při exportu databáze na SQL2005 se může objevit podobná chyba (uvedené názvy tabulek se mohou lišit):
BCP_error.jpg
BCP_error.jpg (20.83 KiB) Zobrazeno 21996 krát

Tato chyba znamená, že databáze vznikla na SQL 7.0 a při exportu nebyl zaškrtnut parametr
Před exportem smazat všechny počítané sloupce ... v dialogu exportu.
Je třeba export spustit znovu a parametr zaškrtnout, export je třeba nasměrovat do jiného adresáře nebo vzniklý exportní adresář nejprve smazat z disku.
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

Přenášení uživatelů včetně hesla mezi instancemi SQL Serveru

Příspěvekod jiri.dolezal v 20.04.2009 11:21

Při přechodu provozu na jinou instanci MS SQL Serveru (přechodu na vyšší verzi MS SQL Serveru) se standarně počítá s tím, že uživatelé příjdou o svá původní hesla (založí se jen jejich loginy - v rámci kontroly konzistence). Ztrátě hesel lze zabránit aplikací následujích postupů (oficiálních od Microsoft):

How to transfer logins and passwords between instances of SQL Server
http://support.microsoft.com/kb/246133

How to transfer the logins and the passwords between instances of SQL Server 2005
http://support.microsoft.com/kb/918992/
jiri.dolezal
 
Nahoru

  • Odpovědět s citací

Chyba při importu databáze

Příspěvekod marcel.vitek v 07.09.2009 15:42

Během akce export/import databáze může ve fázi import vyskočit chybová hláška typu
Kód: Vybrat vše
xxx.SMAZAT_TabInvVyrobyPrikazy
Msg 2760, Level 16, State 1, Line 3
The specified schema name "ondrusak" either does not exist or you do not have permission to use it.

kde "xxx" může být jakýkoliv uživatel databáze(ondrusak) jako je vidět v přiložené ukázce.

Zřejmě to bylo vlivem zapomenutého vlastníka ve změnových skriptech někde mezi verzemi 20041109 až 20041112. Tato verze byla na webu ke stažení cca 5 dní.

Jednoduché řešení by bylo před exportem spustit tento skript :
Kód: Vybrat vše
DROP TABLE xxx.SMAZAT_TabInvVyrobyPrikazy

nebo
v importním scriptu vymazat část, kde se tato tabulka znovu zakládá.
marcel.vitek
 
Nahoru

  • Odpovědět s citací

Re: Chyba při importu databáze

Příspěvekod jiri.dolezal v 08.09.2009 10:18

K této chybě může dojít také v případě existence externího řešení využívajícího zakaznické tabulky (= nedistribuční tabulky), která byla tvůrcem řešení nesprávně založena bez specifikace vlastníka [dbo].
jiri.dolezal
 
Nahoru

  • Odpovědět s citací

Chyba Importu: Column name 'XY' does not exist ...

Příspěvekod jan.havranek v 19.05.2010 15:25

Problém:
V některých případech lze narazit po importu v souboru IMPORT.LOG na chybové hlášky typu
Msg 1911, Level 16, State 1, Server ABC, Line N
Column name 'XY' does not exist in the target table or view.

Aktuálně jsou známé pouze dva výskyty, jedná se o atributy 'BarCode' a 'CisloUcet' .

Důvod:
Tato chyba je dle dosavadních zkušeností způsobena existencí SQL indexů vytvořených na počítaném atributu tabulky (computed column). Export Heliosu totiž přenese pouze pevné atributy tabulek, ale zároveň vyexportuje všechny indexy bez rozdílu. Import založí tabulku (její pevné atributy) a snaží se vytvořit všechny indexy. V tuto chvíli ale počítané atributy ještě neexistují (ty dogeneruje Helios až při spuštění) tudíž tvorba indexu na počítaný atribut končí chybou.

Řešení:
Zde je postup jak věc řešit.

1/ Provést export.

2/ Otevřít IMPORT.SQL, najít a smazat všechny tyto řádky (pokud existují). Místo Helios001 musí být správné jméno DB. Změny uložit.

CREATE INDEX IX__TabPrPostup__BarCode__IDOdchylkyDo ON Helios001.dbo.TabPrPostup(BarCode,IDOdchylkyDo)
CREATE INDEX IX__TabFIAAVCisUctVykazDefinice__CisloUcet ON Helios001.dbo.TabFIAAVCisUctVykazDefinice

3/ Provést IMPORT, ale zatím nespouštět Helios.

4/ Přes Management Studio do Databáze spustit tyto příkazy.

Kód: Vybrat vše
ALTER TABLE dbo.TabFIAAVCisUctVykazDefinice ADD CisloUcet AS (isnull([CisloUcetBrutto],'')+isnull([CisloUcetKorekce],''))

ALTER TABLE dbo.TabPrPostup ADD BarCode AS (CONVERT(nvarchar(15),(N'A' + ISNULL(REPLICATE(N'0',(4 - LEN([ID1]))),'') + CONVERT(nvarchar(13),[ID1]) + N'B')))


5/ Spustit Helios a potvrdit všechny změny.


REVIZE STAVU:
Tento problém je vyřešen v kódu programu od verze 2.0.2011.0611.
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru


Odeslat odpověď
Příspěvků: 13 • Stránka 1 z 1

Zpět na Systémové dotazy

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků

         
  • Tým • Smazat všechny cookies z fóra • Všechny časy jsou v UTC + 1 hodina
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Český překlad – phpBB.cz

© copyright 2011 Asseco Solutions, a.s.
hotline Helios Orange
+420 244 104 155
hotline.orange@assecosol.cz