Autor Wątek: SQL Downgrade Express 2017 -> Standard 2016  (Przeczytany 3007 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline panek89

  • Nowy użytkownik
  • *
  • Wiadomości: 3
  • Reputacja +0/-0
  • Wersja programu: 1.60 SP1 HF1
SQL Downgrade Express 2017 -> Standard 2016
« dnia: Maj 22, 2020, 21:55:21 »
Witam,

Jest to mój pierwszy post ale od razu dosyć poważny problem, otóż obecnie baza Subiekta znajduje się na SQL Express 2017 14.0.1000.169 (RTM) SQL Server Express Edition (64-bit)
Chciałbym zrobić downgrade do wersji: 13.0.1601.5 (RTM) SQL Server Standard Edition (64-bit)

Niestety archiwizacją/dearchiwizacją się tego nie da zrobić.
Podniesienie do wersji nastąpiło już jakiś czas temu przez to nie mogę skorzystać z żadnego Backupu (za dużo dokumentów i zmian w kartotekach m.in. od tego czasu).

Próbuje zrobić Downgrade do wersji poprzez SSMS (SQL Server Management Studio), za pomocą wygenerowania skryptu i na jego podstawie uzupełnienia bazy danych.
Ustawienia których używam, znajdują się w załącznikach.

Niestety występuję błąd przy próbie skryptu funkcji:
Preparing dbo.fn_BiezacyMagazyn
Treść błędu:
Cytuj
Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException: An error occurred while scripting the objects. ---> Microsoft.SqlServer.Management.Smo.PropertyCannotBeRetrievedException: Property TextHeader is not available for UserDefinedFunction '[dbo].[fn_BiezacyMagazyn]'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. The text is encrypted. at Microsoft.SqlServer.Management.Smo.ScriptNameObjectBase.GetTextProperty(String requestingProperty, ScriptingPreferences sp, Boolean bThrowIfCreating) at Microsoft.SqlServer.Management.Smo.ScriptNameObjectBase.BuildText(ScriptingPreferences sp) at Microsoft.SqlServer.Management.Smo.ScriptNameObjectBase.GetTextForScript(ScriptingPreferences sp, String[] expectedObjectTypes, Boolean forceCheckNameAndManipulateIfRequired, ScriptHeaderType scriptHeaderType) at Microsoft.SqlServer.Management.Smo.UserDefinedFunction.ScriptUDF(StringCollection queries, ScriptingPreferences sp, ScriptHeaderType scriptHeaderType) at Microsoft.SqlServer.Management.Smo.UserDefinedFunction.ScriptCreate(StringCollection queries, ScriptingPreferences sp) at Microsoft.SqlServer.Management.Smo.SqlSmoObject.ScriptCreateInternal(StringCollection query, ScriptingPreferences sp, Boolean skipPropagateScript) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObject(Urn urn, ScriptingPreferences sp, ObjectScriptingType& scriptType) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreate(Urn urn, ScriptingPreferences sp, ObjectScriptingType& scriptType) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObjects(IEnumerable`1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptUrns(List`1 orderedUrns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer) at Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(Urn[] urns, ISmoScriptWriter writer) at Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions outputOptions) --- End of inner exception stack trace --- at Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Z tego co wyczytałem jest to coś związanego z uprawnieniami użytkownika do deszyfrowania, zaszyfrowanych Funkcji, Store Procedure.

Próbowałem za pomocą skryptu nadać uprawnienia do VIEW DEFINITION:
USE master
GO
GRANT VIEW ANY DEFINITION TO PUBLIC
Niestety nic to nie pomogło.

Może ktoś spotkał się z takim problemem? Byłbym wdzięczny za każdą wskazówkę.
Nie działam na bazie "produkcyjnej" na innym komputerze zainstalowałem SQL Express 2017 i tam mam taki Sandbox, jak uda mi się przebrnąć dalej to zaktualizuję wątek.

Pozdrawiam


Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17040
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #1 dnia: Maj 23, 2020, 08:30:26 »
Wskazówki:
 - za pomocą SSMS tego nie zrobisz, potrzebne są własne skrypty dostosowane do specyfiki bazy danych Insertu
 - zaszyfrowane obiekty nie mają znaczenia, nie ma potrzeby ich odszyfrowywania
 - opis sugeruje, że powinieneś rozważyć zamówienie takiej usługi (relatywnie tanie nie są)

Piszę z doświadczenia - miałem potrzebę realizować takie usługi.
Daniel, Białystok.

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4871
  • Reputacja +172/-11
SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #2 dnia: Maj 23, 2020, 10:15:29 »
Może nie do końca se nie zrobisz tego za pomocą SSMS ale rzeźba będzie okrutna.
Z tą specyfiką to chyba coś nie łapię.
Moje narzędzia działają bez uwzględniania żadnej specyfiki
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17040
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #3 dnia: Maj 23, 2020, 10:42:10 »
Może nie do końca se nie zrobisz tego za pomocą SSMS ale rzeźba będzie okrutna.

Miałem na myśli gotowe narzędzia dostępne w SSMS z dostępnymi parametrami, a nie uruchamianie własnych skryptów.

Z tą specyfiką to chyba coś nie łapię.

Chodzi o zaszyfrowane obiekty bazy danych (triggery).

Moje narzędzia działają bez uwzględniania żadnej specyfiki

To takie zaprzeczenie samo w sobie - gdyby nie było specyfiki to wystarczyłyby narzędzia wbudowane w SSMS, wtedy nie trzeba byłoby tworzyć własnych narzędzi/"wymyślać na nowo koła" ;)
Daniel, Białystok.

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4871
  • Reputacja +172/-11
SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #4 dnia: Maj 23, 2020, 11:38:37 »
Zakładając że w bazie nie ma obiektów obcych (niestandardowych dla GT) to nie jest potrzebne żadne działanie specyficzne dla GT. Oczywiście jest zabawa ze wszelkimi constraintami, identity i "computed columns" ale to nie jesf specyfika GT.
Oczywiście jeśli w bazie są obiekty obce wchodzimy na następny poziom trudności.
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17040
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #5 dnia: Maj 23, 2020, 12:03:48 »
Zakładając że w bazie nie ma obiektów obcych (niestandardowych dla GT) to nie jest potrzebne żadne działanie specyficzne dla GT.
...
Oczywiście jeśli w bazie są obiekty obce wchodzimy na następny poziom trudności.

Nie widzę w tym jakiejś istotnej trudności - wystarczy zainstalować obce rozwiązania w nowej bazie danych, utworzą swoje struktury, pozostanie wtedy przenieść ich dane tak samo, jak w przypadku obiektów GT.

Oczywiście jest zabawa ze wszelkimi constraintami, identity i "computed columns" ale to nie jesf specyfika GT.

Ogólnie się zgadzam, lecz całą tę "zabawę" robią moje "uniwersalne" skrypty, które odczytują aktualną strukturę bazy danych - w sumie przyjęte przeze mnie rozwiązanie jest uniwersalne dla wszystkich baz zdanych z uwzględnieniem specyfiki GT, przez którą rozumiem w tym wątku szyfrowanie obiektów (nie przypominam sonie innej bazy danych z szyfrowaniem obiektów, zwłaszcza, że można je bez problemu odszyfrować).
Daniel, Białystok.

Offline panek89

  • Nowy użytkownik
  • *
  • Wiadomości: 3
  • Reputacja +0/-0
  • Wersja programu: 1.60 SP1 HF1
Odp: SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #6 dnia: Czerwiec 16, 2020, 20:04:57 »
Witam ponownie,

Samemu nie udało mi się mimo wielu prób cofnąć wersji bazy danych.
Jednak udało się załatwić sprawę, może komuś się na przyszłość przyda, producent oprogramowania robi to za 200 zł/podmiot, przy większej ilości podmiotów da się zejść do 100 zł/podmiot. Jedyny minus to godziny pracy od pon-pt od 8:30-16:30 przez co niestety w większości przypadków trzeba wstrzymać pracę sklepu. Spakowane bazy można przesłać przez FTP lub Google Drive.

Nie wiem czy jest możliwa migracja z każdej na każdą wersję, natomiast z EXPRESS 2017 na STANDARD 2016 się udało.

Dzięki za próbę pomocy.

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4871
  • Reputacja +172/-11
SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #7 dnia: Czerwiec 16, 2020, 23:47:49 »
Jak już, tak na przyszłość to baza nie na wersji Express, Standard czy Enterprise. Nie ma również baz 32 i 64 bitowych.
Soft oczywiście może być ale baza nie.
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Forum Użytkownikow Subiekt GT

SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #7 dnia: Czerwiec 16, 2020, 23:47:49 »