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

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

Offline panek89

  • Nowy użytkownik
  • *
  • Wiadomości: 1
  • Reputacja +0/-0
    • Zobacz profil
  • 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: 15057
  • Reputacja +776/-24
    • Zobacz profil
  • 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: 4241
  • Reputacja +164/-11
    • Zobacz profil
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: 15057
  • Reputacja +776/-24
    • Zobacz profil
  • 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: 4241
  • Reputacja +164/-11
    • Zobacz profil
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: 15057
  • Reputacja +776/-24
    • Zobacz profil
  • 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.

Forum Użytkownikow Subiekt GT

Odp: SQL Downgrade Express 2017 -> Standard 2016
« Odpowiedź #5 dnia: Maj 23, 2020, 12:03:48 »