{"id":35306,"date":"2019-10-31T22:03:32","date_gmt":"2019-10-31T19:03:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/perenos-dannyh-bekapa-novoj-versii-ms-sql-server-na-bolee-staruyu-versiyu\/"},"modified":"2020-12-15T02:10:03","modified_gmt":"2020-12-15T00:10:03","slug":"perenos-dannyh-bekapa-novoj-versii-ms-sql-server-na-bolee-staruyu-versiyu","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/perenos-dannyh-bekapa-novoj-versii-ms-sql-server-na-bolee-staruyu-versiyu","title":{"rendered":"Trasferimento dei dati di backup della nuova versione di MS SQL Server a una versione precedente.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h2>Antefatti<\/h2>\n<p>Una volta, per riprodurre un bug, avevo bisogno di un backup del database di produzione.<\/p>\n<p>Con mia sorpresa, ho incontrato le seguenti limitazioni:<\/p>\n<ol>\n<li>Il backup del database era stato fatto sulla versione <i>SQL Server 2016<\/i> e non era compatibile con il mio <i>SQL Server 2014<\/i>.<\/li>\n<li>Sul mio computer di lavoro, come sistema operativo, c'era <i>Windows 7<\/i>, quindi non potevo aggiornare <i>SQL Server<\/i> alla versione 2016<\/li>\n<li>Il prodotto supportato faceva parte di un sistema pi\u00f9 grande con un'architettura legacy fortemente interconnessa e accedeva anche ad altri prodotti e database, quindi la sua distribuzione su un'altra stazione avrebbe potuto richiedere molto tempo.<\/li>\n<\/ol>\n<p>Tenuto conto di quanto sopra, ho concluso che era giunto il momento di qualche soluzione alternativa.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Ripristino dei dati dal backup<\/h2>\n<p>Ho deciso di utilizzare una macchina virtuale <noindex><a rel=\"nofollow\" href=\"https:\/\/www.virtualbox.org\/\">Oracle VM VirtualBox<\/a><\/noindex> con Windows 10 (puoi prendere un'immagine di prova per il browser Edge <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.microsoft.com\/en-us\/microsoft-edge\/tools\/vms\/\">da qui<\/a><\/noindex>). Sulla macchina virtuale \u00e8 stato installato SQL Server 2016 e su di essa \u00e8 stato ripristinato il database dell'applicazione dal backup (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/sql\/relational-databases\/backup-restore\/restore-a-database-backup-using-ssms\">istruzioni<\/a><\/noindex>).<\/p>\n<h2>Impostazione dell'accesso a SQL Server sulla macchina virtuale<\/h2>\n<p>Successivamente, era necessario intraprendere alcuni passaggi affinch\u00e9 fosse possibile accedere a SQL Server dall'esterno:<\/p>\n<ol>\n<li>Per il firewall, aggiungere una regola per consentire le richieste sulla porta <i>1433<\/i>.<\/li>\n<li>\u00c8 preferibile che l'accesso al server non avvenga tramite autenticazione Windows, ma tramite SQL con login e password (\u00e8 pi\u00f9 facile configurare l'accesso). Tuttavia, in questo caso, non dimenticare di abilitare nelle propriet\u00e0 di SQL Server la possibilit\u00e0 di autenticazione SQL.<\/li>\n<li>Nelle impostazioni utente di SQL Server, nella scheda <i>User Mapping<\/i> indicare per il database ripristinato il ruolo utente <i>db_securityadmin<\/i>.<\/li>\n<\/ol>\n<h2>Trasferimento dei dati<\/h2>\n<p>Il trasferimento dei dati consiste in due fasi:<\/p>\n<ol>\n<li>Trasferimento dello schema dati (tabelle, viste, stored procedure, ecc.)<\/li>\n<li>Trasferimento dei dati stessi<\/li>\n<\/ol>\n<h3>Trasferimento dello schema dati<\/h3>\n<p>Eseguiamo le seguenti operazioni:<\/p>\n<ol>\n<li>Selezioniamo <i>Tasks -&gt; Generate Scripts<\/i> per il database da trasferire.<\/li>\n<li>Selezioniamo gli oggetti necessari per il trasferimento o lasciamo il valore predefinito (in questo caso verranno creati script per tutti gli oggetti del database).<\/li>\n<li>Indichiamo le impostazioni per salvare lo script. \u00c8 pi\u00f9 comodo salvare lo script in un unico file in codifica Unicode. In questo modo, in caso di errore, non sar\u00e0 necessario ripetere tutti i passaggi.<\/li>\n<\/ol>\n<p>Dopo aver salvato lo script, \u00e8 possibile eseguirlo sul SQL Server di origine (versione precedente) per creare il database richiesto.<\/p>\n<p><b>Attenzione:<\/b> Dopo l'esecuzione dello script, \u00e8 necessario verificare la corrispondenza delle impostazioni del database dal backup e del database creato dallo script. Nel mio caso, nello script mancava l'impostazione per COLLATE, il che portava a errori nel trasferimento dei dati e a continue modifiche nella ricreazione del database usando uno script aggiornato.<\/p>\n<h3>Trasferimento dei dati<\/h3>\n<p>Prima di trasferire i dati, \u00e8 necessario disabilitare il controllo di tutti i vincoli sul database:<\/p>\n<pre><code class=\"sql\">EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'<\/code><\/pre>\n<p>Il trasferimento dei dati avviene tramite il master di importazione dati <i>Tasks -&gt; Import Data<\/i> su SQL Server, dove si trova il database creato dallo script:<\/p>\n<ol>\n<li>Specifichiamo le impostazioni di connessione alla sorgente (SQL Server 2016 su una macchina virtuale). Ho utilizzato Data Source <i>SQL Server Native Client<\/i> e l'autenticazione SQL sopra menzionata.<\/li>\n<li>Specifichiamo le impostazioni di connessione per la destinazione (SQL Server 2014 sulla macchina host).<\/li>\n<li>Successivamente, configuriamo il mapping. \u00c8 necessario selezionare tutti <b>non read-only<\/b> oggetti (ad esempio, non \u00e8 necessario selezionare le viste). Come opzioni aggiuntive, si consiglia di selezionare <i>\u00abConsenti inserimenti nelle colonne identity\u00bb<\/i>, se utilizzate.<br \/>\n<b>Attenzione:<\/b> se, tentando di selezionare pi\u00f9 tabelle e assegnare loro una propriet\u00e0 <i>\u00abConsenti inserimenti nelle colonne identity\u00bb<\/i> la propriet\u00e0 era gi\u00e0 stata impostata in precedenza per almeno una delle tabelle selezionate, nella finestra di dialogo sar\u00e0 indicato che la propriet\u00e0 \u00e8 gi\u00e0 impostata per tutte le tabelle selezionate. Questo fatto pu\u00f2 confondere e portare a errori nel trasferimento.<\/li>\n<li>Avviamo il trasferimento.<\/li>\n<li>Ripristiniamo il controllo dei vincoli:\n<pre><code class=\"sql\">EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>Se si verificano errori, controlliamo le impostazioni, eliminiamo il database creato con errori, lo ricreiamo dallo script, apportiamo correzioni e ripetiamo il trasferimento dei dati.<\/p>\n<h2>Conclusione<\/h2>\n<p>Questa situazione si verifica abbastanza raramente e si manifesta solo a causa dei vincoli sopra indicati. La maggior parte delle volte, la soluzione consiste nell'aggiornare SQL Server o connettersi a un server remoto, se l'architettura dell'applicazione lo consente. Tuttavia, nessuno \u00e8 esente da codice legacy e da errori di sviluppo. Spero che questa guida non ti sar\u00e0 necessaria, e se dovesse esserti utile, ti aiuter\u00e0 a risparmiare una grande quantit\u00e0 di tempo e nervi. Grazie per l'attenzione!<\/p>\n<h2>Elenco delle fonti utilizzate<\/h2>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/dba.stackexchange.com\/questions\/43065\/how-do-i-deal-with-fk-constraints-when-importing-data-using-dts-import-export-wi\">Come gestisco i vincoli FK quando importo dati utilizzando il DTS Import\/Export Wizard?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.sqlservercentral.com\/forums\/topic\/the-column-column-2-cannot-be-processed-because-more-than-one-code-page-65001-and-1252-are-specified-for-it\">La colonna \u00abColumn 2\u00bb non pu\u00f2 essere elaborata perch\u00e9 sono specificate pi\u00f9 pagine di codice (65001 e 1252).<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/37616521\/how-can-i-connect-to-sqlserver-running-on-virtualbox-from-my-host-macbook\">Come posso collegarmi a SQLServer in esecuzione su VirtualBox dal mio Macbook host.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.sqlauthority.com\/2010\/04\/04\/sql-server-enable-identity-insert-import-expert-wizard\/\">SQL SERVER \u2013 Abilitare l'Identity Insert \u2013 Import Expert Wizard<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.liquidweb.com\/kb\/troubleshooting-microsoft-sql-server-error-18456-login-failed-user\/\">Risoluzione dei problemi dell'errore Microsoft SQL Server 18456, accesso non riuscito per l'utente<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/455934\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u0433\u0430 \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u044d\u043a\u0430\u043f production-\u0431\u0430\u0437\u044b. \u041a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438: \u0411\u044d\u043a\u0430\u043f \u0431\u0430\u0437\u044b \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 SQL Server 2016 \u0438 \u043d\u0435 \u0431\u044b\u043b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u043c\u043e\u0435\u0439 SQL Server 2014. \u041d\u0430 \u043c\u043e\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u041e\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c Windows 7, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u043c\u043e\u0433 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c SQL Server \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35306","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u0433\u0430 \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u044d\u043a\u0430\u043f production-\u0431\u0430\u0437\u044b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/perenos-dannyh-bekapa-novoj-versii-ms-sql-server-na-bolee-staruyu-versiyu\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044d\u043a\u0430\u043f\u0430 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 MS SQL Server \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u0433\u0430 \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u044d\u043a\u0430\u043f production-\u0431\u0430\u0437\u044b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/perenos-dannyh-bekapa-novoj-versii-ms-sql-server-na-bolee-staruyu-versiyu\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:03:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-12-15T00:10:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Trasferimento dei dati del backup della nuova versione di MS SQL Server su una versione precedente | ProHoster","description":"Introduzione Un giorno, per riprodurre un bug, avevo bisogno di un backup del database di produzione.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/perenos-dannyh-bekapa-novoj-versii-ms-sql-server-na-bolee-staruyu-versiyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044d\u043a\u0430\u043f\u0430 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 MS SQL Server \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u0433\u0430 \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u044d\u043a\u0430\u043f production-\u0431\u0430\u0437\u044b.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/perenos-dannyh-bekapa-novoj-versii-ms-sql-server-na-bolee-staruyu-versiyu","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:03:32+00:00","article:modified_time":"2020-12-15T00:10:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35306","title":null,"description":"","keywords":"","keyphrases":null,"primary_term":null,"canonical_url":"","og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 22:44:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:06:24","updated":"2026-01-21 22:44:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=35306"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35306\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=35306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=35306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=35306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}