Considerazioni relative all'utilizzo di server di provaConsiderations for Using Test Servers

L'utilizzo di un server di prova per ottimizzare un database su un server di produzione è un importante vantaggio offerto da Ottimizzazione guidata Motore di databaseDatabase Engine .Using a test server to tune a database on a production server is an important benefit of Motore di databaseDatabase Engine Tuning Advisor. Attraverso questa funzionalità è possibile ripartire su un server di prova il carico dell'overhead generato dall'ottimizzazione senza copiare i dati effettivi dal server di produzione al server di prova.Using this feature, you can offload tuning overhead to a test server without copying the actual data over to the test server from the production server.

Nota

La funzionalità di ottimizzazione del server di prova non è supportata nell'interfaccia utente grafica (GUI) di Ottimizzazione guidata Motore di databaseDatabase Engine .The test server tuning feature is not supported in the Motore di databaseDatabase Engine Tuning Advisor graphical user interface (GUI).

Per utilizzare correttamente questa funzionalità, valutare le considerazioni riportate nelle sezioni seguenti.To use this feature successfully, review the considerations listed in the following sections.

Configurazione dell'ambiente del server di prova e del server di produzioneSetting Up the Test Server/Production Server Environment

  • L'utente che desidera utilizzare un server di prova per ottimizzare un database su un server di produzione deve essere presente su entrambi i server, altrimenti l'operazione non riuscirà.The user who wants to use a test server to tune a database on a production server must exist on both servers, or this scenario will not work.

  • Per usare lo scenario server di prova/server di produzione è necessario abilitare la stored procedure estesa xp_msver.The extended stored procedure, xp_msver, must be enabled to use the test server/production server scenario. Motore di databaseDatabase Engine Ottimizzazione guidata usa questa stored procedure estesa per recuperare le informazioni sul numero di processori e sulla memoria disponibile nel server di produzione da usare per l'ottimizzazione del server di prova. Tuning Advisor uses this extended stored procedure to fetch the number of processors and the available memory of the production server to use while tuning the test server. Se la stored procedure xp_msver non è abilitata, Ottimizzazione guidata Motore di databaseDatabase Engine usa le caratteristiche hardware del computer in cui viene eseguito Ottimizzazione guidata Motore di databaseDatabase Engine .If xp_msver is not enabled, Motore di databaseDatabase Engine Tuning Advisor assumes the hardware characteristics of the computer where Motore di databaseDatabase Engine Tuning Advisor is running. Se le caratteristiche hardware del computer su cui Ottimizzazione guidata Motore di databaseDatabase Engine è in esecuzione non sono disponibili, si suppone che siano disponibili un processore e 1024 MB di memoria.If the hardware characteristics of the computer where Motore di databaseDatabase Engine Tuning Advisor is running are not available, one processor and 1024 megabytes (MBs) of memory are assumed. Questa stored procedure estesa è attiva per impostazione predefinita quando si installa SQL ServerSQL Server.This extended stored procedure is turned on by default when you install SQL ServerSQL Server. Per altre informazioni, vedere Configurazione superficie di attacco e xp_msver (Transact-SQL).For more information, see Surface Area Configuration and xp_msver (Transact-SQL).

  • Motore di databaseDatabase Engine Ottimizzazione guidata prevede che le edizioni di SQL ServerSQL Server siano identiche nel server di prova e nel server di produzione. to be the same on both the test server and the production server. In caso contrario, l'edizione in uso nel server di prova ha la precedenza.If there are two different editions, the edition on the test server takes precedence. Ad esempio, se nel server di prova è in esecuzione SQL ServerSQL Server Standard Edition, Ottimizzazione guidata Motore di databaseDatabase Engine non includerà tra le indicazioni le viste indicizzate, il partizionamento e le operazioni online, anche se nel server di produzione è in esecuzione SQL ServerSQL Server Enterprise Edition.For example, if the test server is running SQL ServerSQL Server Standard, Motore di databaseDatabase Engine Tuning Advisor will not include indexed views, partitioning, and online operations in its recommendations even if the production server is running SQL ServerSQL Server Enterprise.

Informazioni sul comportamento del server di prova e del server di produzioneAbout Test Server/Production Server Behavior

  • Motore di databaseDatabase Engine Nella generazione delle indicazioni, Ottimizzazione guidata tiene in considerazione le differenze hardware esistenti tra il server di produzione e il server di prova. Tuning Advisor takes into account hardware differences between the production and the test server when creating recommendations. L'indicazione è identica a quella che verrebbe generata nel caso in cui l'ottimizzazione venisse eseguita sul solo server di produzione.The recommendation is the same as though the tuning was done on the production server alone.

  • Motore di databaseDatabase Engine Ottimizzazione guidata può imporre un carico aggiuntivo al server di produzione per la raccolta dei metadati e per la creazione delle statistiche necessarie per eseguire l'ottimizzazione. Tuning Advisor may impose some load on the production server for gathering metadata as well as creation of statistics necessary for tuning.

  • Motore di databaseDatabase Engine Ottimizzazione guidata non copia i dati effettivi dal server di produzione al server di prova. Tuning Advisor does not copy actual data from the production server to the test server. Vengono copiati unicamente i metadati dei database e le necessarie statistiche.It only copies the metadata of the databases and the necessary statistics.

  • Tutte le informazioni sulla sessione vengono archiviate in msdb sul server di produzione.All session information is stored in msdb on the production server. In questo modo, per eseguire l'ottimizzazione è possibile utilizzare qualsiasi server di prova disponibile, mentre le informazioni relative a tutte le sessioni si trovano in un'unica posizione, ovvero sul server di produzione.This allows you to exploit any available test server for tuning, and information about all sessions is available in one place (the production server).

  • Dopo aver eseguito l'ottimizzazione, Ottimizzazione guidata Motore di databaseDatabase Engine rimuove tutti i metadati creati sul server di prova durante il processo di ottimizzazione.After tuning, Motore di databaseDatabase Engine Tuning Advisor should remove any metadata that it created on the test server during the tuning process. Viene rimosso anche lo scheletro di database.This includes the shell database. Se si stanno eseguendo più sessioni di ottimizzazione utilizzando gli stessi server di produzione e di prova, è possibile conservare lo scheletro di database per risparmiare tempo.If you are performing a series of tuning sessions with the same production and test servers, you may want to retain this shell database to save time. Nel file di input XML specificare il sottoelemento RetainShellDB insieme agli altri sottoelementi all'interno dell'elemento padre TuningOptions .In the XML input file, specify the RetainShellDB subelement with the other sub elements under the TuningOptions parent element. L'utilizzo di queste opzioni specifica a Ottimizzazione guidata Motore di databaseDatabase Engine di conservare lo scheletro di database.Using these options causes Motore di databaseDatabase Engine Tuning Advisor to retain the shell database. Per altre informazioni, vedere Guida di riferimento ai file di input XML (Ottimizzazione guidata motore di database).For more information, see XML Input File Reference (Database Engine Tuning Advisor).

  • Dopo una sessione di ottimizzazione riuscita che prevede l'utilizzo combinato di un server di prova e un server di produzione, è possibile che gli scheletri di database rimangano nel server di prova, anche se non è stato usato il sottoelemento RetainShellDB.Shell databases may be left behind on the test server after a successful test server/production server tuning session even if you have not specified the RetainShellDB subelement. Tali scheletri di database indesiderati possono interferire con le sessioni di ottimizzazione successive e devono essere eliminati prima di eseguire una nuova sessione di ottimizzazione che prevede l'utilizzo combinato di un server di prova e un server di produzione.These unwanted shell databases may interfere with subsequent tuning sessions and should be dropped before performing another test server/production server tuning session. Inoltre, se una sessione di ottimizzazione si interrompe in modo imprevisto, è possibile che gli scheletri di database nei server di prova e gli oggetti presenti in tali database rimangano nei server di prova.In addition, if a tuning session exits unexpectedly, the shell databases on the test server and the objects within those databases may be left behind on the test server. Prima di avviare una nuova sessione di ottimizzazione che prevede l'utilizzo combinato di un server di prova e un server di produzione è necessario eliminare anche tali database e oggetti.You should also delete these databases and objects before starting a new test server/production server tuning session.

  • L'utente deve controllare il contenuto del log di ottimizzazione per individuare eventuali errori di ottimizzazione causati dalle differenze esistenti tra il server di produzione e quello di prova ed errori risultanti dalla copia dei metadati dal server di produzione a quello di prova.The user must check the tuning log for tuning errors that result from differences between the production and test servers, and for errors that result from copying metadata from the production to the test server. Potrebbe ad esempio accadere che l'account di accesso di un utente non esista sul server di prova.For example, a user login may not exist on the test server. Se l'account di accesso di un utente non è presente sul server di prova, gli eventi nel carico di lavoro generati da quell'utente potrebbero non essere ottimizzabili.If a user login does not exist on the test server, those events in the workload that are issued by that user login may not be tunable. Utilizzare la GUI di Ottimizzazione guidata Motore di databaseDatabase Engine per visualizzare il log di ottimizzazione.Use the Motore di databaseDatabase Engine Tuning Advisor GUI to view the tuning log. Per altre informazioni, vedere Visualizzare e utilizzare l'output di Ottimizzazione guidata motore di databaseFor more information, see View and Work with the Output from the Database Engine Tuning Advisor

  • Se Ottimizzazione guidata Motore di databaseDatabase Engine non riesce a ottimizzare molti eventi perché alcuni oggetti risultano mancanti nello scheletro di database creato da Ottimizzazione guidata Motore di databaseDatabase Engine nel server di prova, l'utente deve controllare il log di ottimizzazione.If Motore di databaseDatabase Engine Tuning Advisor cannot tune many events because objects are missing in the shell database that Motore di databaseDatabase Engine Tuning Advisor creates on the test server, the user must check the tuning log. In questo log sono elencati gli eventi che non è possibile ottimizzare.Events that cannot be tuned are listed in the log. Per ottimizzare correttamente il database sul server di prova, è necessario che l'utente crei gli oggetti mancanti nello scheletro di database e che quindi avvii una nuova sessione di ottimizzazioneTo successfully tune the database on the test server, the user must create the missing objects in the shell database, and then start a new tuning session.

  • Se sul server di prova esiste già un database con lo stesso nome, Ottimizzazione guidata Motore di databaseDatabase Engine non copia i metadati, continua l'ottimizzazione e procede con la raccolta delle statistiche necessarie.If a database with the same name already exists on the test server, Motore di databaseDatabase Engine Tuning Advisor does not copy metadata, but continues tuning and gathers statistics as necessary. Questa funzionalità è utile nel caso in cui l'utente abbia già creato un database sul server di prova e abbia copiato i metadati appropriati prima di eseguire Ottimizzazione guidata Motore di databaseDatabase Engine .This is useful if the user has already created a database on the test server and has copied the appropriate metadata before invoking Motore di databaseDatabase Engine Tuning Advisor.

  • Se sul server di produzione è stata attivata l'opzione DATE_CORRELATION_OPTIMIZATION per un database, i metadati e i dati associati a questa opzione non vengono inseriti completamente in uno script durante l'ottimizzazione del server di prova.If the DATE_CORRELATION_OPTIMIZATION option is turned on for a database on the production server, metadata and the data associated with this option are not completely scripted while tuning the test server. Quando l'ottimizzazione viene eseguita in uno scenario con server di prova/server di produzione, possono verificarsi i problemi seguenti:When tuning is performed for a test server/production server scenario, the following issues may apply:

    • Possono essere presenti utenti con piani di query differenti sui server per query che utilizzano l'opzione DATE_CORRELATION_OPTIMIZATION.Users can have different query plans on the servers for queries that use the DATE_CORRELATION_OPTIMIZATION option.

    • Motore di databaseDatabase Engine Ottimizzazione guidata potrebbe consigliare di eliminare le viste indicizzate che impongono l'opzione DATE_CORRELATION_OPTIMIZATION nello script di indicazioni. Tuning Advisor may suggest dropping indexed views that enforce the DATE_CORRELATION_OPTIMIZATION option in the recommendation script.

      È pertanto possibile ignorare le indicazioni generate da Ottimizzazione guidata Motore di databaseDatabase Engine per le viste indicizzate relative alle statistiche di correlazione, dato che Ottimizzazione guidata Motore di databaseDatabase Engine ne conosce i costi ma non i vantaggi.Therefore, you may want to ignore any recommendations that Motore di databaseDatabase Engine Tuning Advisor makes about the indexed views that hold correlation statistics because Motore di databaseDatabase Engine Tuning Advisor knows their costs but not their benefits. Motore di databaseDatabase Engine Ottimizzazione guidata potrebbe consigliare di non selezionare determinati indici, ad esempio gli indici cluster in colonne datetime , che potrebbero risultare utili quando l'opzione DATE_CORRELATION_OPTIMIZATION è abilitata. Tuning Advisor may not recommend selection of certain indexes such as clustered indexes on datetime columns, which could be beneficial when DATE_CORRELATION_OPTIMIZATION is enabled.

      Per determinare se una vista è basata su statistiche di correlazione, selezionare la colonna is_date_correlation_view della vista del catalogo sys.views .To determine if a view is based on correlation statistics, select the is_date_correlation_view column of the sys.views catalog view.