Questo articolo esplora la configurazione delle regole di confronto del database SQL di Azure e come modificarla durante l’importazione del database da un file BACPAC.
Introduzione
Le regole di confronto si riferiscono a una configurazione che determina il comportamento del motore di database per il set di dati di caratteri a livello di server, database o colonna. SQL Server ha una vasta gamma di regole di confronto per la gestione delle differenze linguistiche in diverse parti del mondo. Fornisce regole di ordinamento, maiuscole e minuscole per i tipi di dati Unicode (nchar, nvarchar o ntext) e non Unicode (char, varchar, nvarchar).
SQL Server supporta le seguenti regole di confronto.
- Windows
- Binario: Le regole di confronto binarie terminano sempre con _BIN o _BIN2
- SQL Server: Questi nomi di confronto iniziano sempre con SQL_
Per un server SQL tradizionale (locale), le impostazioni locali del sistema operativo determinano le regole di confronto predefinite. Tuttavia, è possibile modificare le regole di confronto a livello di server durante l’installazione di SQL Server o la modifica delle impostazioni locali del sistema operativo. Le regole di confronto predefinite di SQL Server sono SQL_Latin1_General_CP1_CI_AS. È possibile comprendere queste regole di confronto in dettaglio facendo riferimento a Regole di confronto e supporto Unicode.
Requisiti
Questo articolo presuppone che si disponga di una conoscenza di base dei database SQL di Azure. Se sei un principiante, è possibile fare riferimento agli articoli esistenti SQL Azure su SQLShack. È possibile utilizzare Microsoft Azure free credit iscrivendosi all’URL https://azure.microsoft.com/en-us/free/
Azure SQL Database Collation
Azure SQL DB è un’offerta PaaS gestita per SQL Server con alcune restrizioni e limitazioni per l’esecuzione di attività specifiche. Come SQL Server locale, Azure DB supporta anche varie regole di confronto. Per ottenere un elenco di regole di confronto supportate per Azure SQL DB, possiamo interrogare il sys.funzione fn_helpcollations (). Restituisce un elenco di 5.508 collazioni. La figura qui sotto ti dà un assaggio delle regole di confronto e descrizioni.
Per Azure SQL DB, è possibile scegliere regole di confronto database nella scheda Impostazioni aggiuntive di creazione di database SQL. Come mostrato di seguito, le regole di confronto predefinite appaiono come SQL_Latin1_General_CP1_CI_AS.
Possiamo abbattere questa raccolta per capirla.
- SQL – Si riferisce che si tratta di un confronto di SQL Server
- Latin1_General – Questa parte definisce il carattere di ordinamento regola
- CI Si riferisce alla distinzione tra maiuscole e minuscole
- COME – Si definisce accentati
È possibile fare clic su trova un confronto e cercare le specifiche regole di confronto che si desidera configurare per Azure DB.
È possibile distribuire un database di Azure su un server logico di Azure esistente. Pertanto, se si crea un nuovo database di Azure utilizzando SSMS, è possibile definire una collazione specifica utilizzando la pagina Opzioni.
Se si crea un DB SQL di Azure utilizzando T-SQL, è possibile utilizzare la parola chiave COLLATE e specificare le regole di confronto DB richieste.
1
2
3
|
CREARE DATABASE MyDemoSQLDB
COLLATE Latin1_General_100_CS_AS_SC;
VAI
|
È necessario creare il database nelle regole di confronto corrette. Le query SQL potrebbero non funzionare correttamente a causa della mancata corrispondenza delle regole di confronto. Tuttavia, se è necessario modificare dopo aver creato il database SQL di Azure, non è semplice. Azure SQL DB non supporta la modifica delle regole di confronto utilizzando ALTER DATABASE COLLATE. Si ottiene il seguente messaggio di errore se si tenta di cambiarlo.
1
2
3
4
|
master
vai
ALTER DATABASE Azuredemodatabase
COLLATE SQL_Latin1_General_CP1250_CI_AS
|
- Nota: non modificare o impostare uno specifico confronto fino a quando si hanno esigenze specifiche. Non farlo mai direttamente su un database di produzione. Testarlo accuratamente su un ambiente DB inferiore e quindi pianificare di procedere per le regole di confronto di produzione
Supponiamo che si stia distribuendo un database SQL di Azure dal file BACPAC locale. Si desidera un confronto diverso nel database di destinazione.
- Nota: presumo che tu abbia un DB SQL Azure attivo. In caso contrario, è possibile utilizzare un account di livello gratuito per la distribuzione del database di test
- Esporta il database SQL di Azure in formato BACPAC
- Installa Microsoft SQL Server Data-Tier Application Framework (18.1)
- Modifica modello.configurazione file xml
- Utilizzare sqlpackage.exe per distribuire il database di Azure con regole di confronto aggiornate
- Verificare le regole di confronto del database
- /tsn: Specificare l’FQDN di Azure SQL Server in cui si desidera importare questo file BACPAC. Nel mio caso, è azuredemosqldemo.database.windows.net
- / tdn: è il nuovo nome del database SQL di Azure. Impossibile importare BACPAC in un database esistente
- / tu: specificare il nome utente amministratore per connettersi con Azure SQL Server e distribuire il database
- /tp: Immettere la password per l’utente amministratore
- /sf: specificare il percorso del file BACPAC
- / ModelFilePath: immettere il modello aggiornato.Percorso file XML
- Nota: Non è necessario modificare le regole di confronto DB senza requisiti specifici. Potrebbe causare problemi se lo si modifica arbitrariamente
- Autore
- Post Recenti
- Utilizzare il BRACCIO di modelli per distribuire Azure contenitore di istanze di SQL Server Linux immagini – 21 dicembre, 2021
- accesso Remoto al desktop per AWS RDS SQL Server con Amazon RDS Personalizzato – dicembre 14, 2021
- Memorizzare i file di SQL Server Persistente di Archiviazione di Azure Contenitore di Istanze di dicembre 10, 2021
Per questo articolo demo, faremo le seguenti attività:
Passo 1: Esportare il database SQL di Azure in formato BACPAC
In questo passaggio, esportiamo Azure SQL DB nel formato BACPAC. Possiamo verificare che le regole di confronto esistenti siano SQL_Latin1_General_CP1_CI_AS.
Per l’esportazione, fare clic su Azure database e scegliere di Esportare i Dati di Applicazioni di livello…
Specificare la directory in cui salvare sul disco locale.
Verifica, esporta e monitora l’avanzamento dell’applicazione a livello di dati in formato BACPAC.
Passo 2: Scarica Microsoft SQL Server Data-Tier Application Framework (18.1)
È necessario scaricare e installare l’ultima versione di SSDT. Passare a URL https://www.microsoft.com/en-us/download/details.aspx?id=57784 e fare clic su Download.
Seleziona la versione del file MSI richiesta e scaricala. Si tratta di un file di pacchetto leggero.
Seguire la procedura guidata di installazione per l’impostazione di Microsoft SQL Server Data-tier Application framework.
Step 3: Rinominare il. File BACPAC a .ZIP
In questo passaggio, rinominiamo il file del pacchetto BACPAC esportato in un formato ZIP. Per fare ciò, fare clic destro sul BACPAC importato e modificare l’estensione a ZIP. Il tipo di file viene compresso (compresso) dopo aver modificato l’estensione, come mostrato nella figura seguente.
Fare clic con il pulsante destro del mouse sul file compresso ed estrarlo. Nella cartella estratta, trovi un modello.xml, copia il modello.xml in un’altra directory come C:\Temp cartella.
Aprire il modello.xml da C:\Temp\Model.xml e modificare le regole di confronto DB. La figura seguente mostra le vecchie e nuove regole di confronto per il database SQL di Azure. Qui usiamo le regole di confronto SQL con maiuscole e minuscole.
Passaggio 4: distribuire il database di Azure utilizzando sqlpackage.exe
Qui, passare alla directory C:\Program File \ Microsoft SQL Server \ 150 \ DAC \ bin nel prompt dei comandi. Usiamo sqlpackage.exe per importare il BACPAC con il parametro / ModelFilePath. Sostituisce la configurazione del file del modello BACPAC con il file specifico in questo parametro.
Parametri richiesti:
In precedenza, abbiamo cambiato l’estensione del file BACPAC in ZIP. Dobbiamo cambiarlo in BACPAC per eseguire sqlpackage.comando exe.
Per modificare le regole di confronto nel BACPAC, eseguire il seguente comando in un prompt dei comandi.
pacchetto sql.exe / Azione: Importa /tsn:azuredemosqldemo.database.windows.net /tdn: azuredemodatabasenuovo / tu: sqladmin /tp:******* /sf: C:\Temp\azuredemodatabase.BACPAC / ModelFilePath: C: \ Temp \ modello.xml
Viene visualizzato un messaggio di avviso:
“Sovrascrittura del modello.xml usando il file ‘C:\Temp\model.xml”. L’utilizzo di questa impostazione può causare errori di distribuzione e / o perdite di dati non intenzionali. Questa impostazione intende essere utilizzata solo quando si risolvono i problemi con la pubblicazione, l’importazione o la generazione di script ”
Avvia l’importazione dei dati, elabora le tabelle e distribuisce il database su di esso. Il tempo di distribuzione del database dipende dal numero di tabelle, dimensioni dei dati, indici.
Alla fine, si ottiene il messaggio – Database importato con successo.
Passaggio 5: Verifica
Ora, connettersi al database di Azure utilizzando SSMS e verificare le regole di confronto del database utilizzando il seguente script.
1
|
SELEZIONA CONVERTI(varchar (256), DATABASEPROPERTYEX (‘azuredemodatabasenew’, ‘collation’));
|
Come mostrato di seguito, il database appena distribuito utilizza collation SQL_Latin1_General_CP1_CS_AS.
Ora, accedere al portale di Azure e visualizzare le proprietà del database. Questo database ha un general-purpose Gen5, 2vcores livello dei prezzi. Non abbiamo specificato alcun livello di prezzo durante la distribuzione del database. Pertanto, il database SQL di Azure accetta il livello dei prezzi predefinito.
Passo 6: Distribuire il database di Azure in un livello di prezzi specifico
Supponiamo di voler distribuire un database con regole di confronto modificate e un livello di prezzi di base. Per questa demo, cambiamo le regole di confronto DB a Latin1_General_BIN. Pertanto, aprire il modello.xml e modificare le regole di confronto come evidenziato prima.
Questa volta specifichiamo un nuovo parametro(/p) per impostare l’edizione del database. Indica ad Azure di distribuire il database sotto il livello di prezzo specifico.
pacchetto sql.exe / Azione: Importazione / tsn: azuredemosqldemo.database.windows.net /tdn: azuredemodatabasenew / tu: sqladmin /tp:******* /p:DatabaseEdition=Base /sf: C:\Temp\azuredemodatabase.BACPAC / ModelFilePath: C: \ Temp \ modello.xml
Una volta distribuito il DB, verificare le regole di confronto del database. Come mostrato di seguito, utilizza le regole di confronto Latin1_General_BIN.
È possibile connettersi al portale di Azure e verificare il livello dei prezzi come Base.
Conclusione
Questo articolo ha esplorato le regole di confronto predefinite del database SQL di Azure e il processo per modificarlo durante l’importazione di DB da un file BACPAC. È possibile specificare le regole di confronto desiderate e distribuire il database. Tuttavia, non modificare mai le regole di confronto a meno che non si abbia un requisito specifico. È possibile provare i passaggi sul proprio database SQL Azure di prova.
È il creatore di una delle più grandi collezioni online gratuite di articoli su un singolo argomento, con la sua serie di 50 parti su SQL Server Always On Availability Groups. Sulla base del suo contributo alla comunità SQL Server, è stato riconosciuto con vari premi tra cui il prestigioso “Best author of the year” ininterrottamente nel 2020 e 2021 a SQLShack.
Raj è sempre interessato a nuove sfide, quindi se hai bisogno di consulenza su qualsiasi argomento trattato nei suoi scritti, può essere raggiunto a rajendra.gupta16 @ gmail.com
Visualizza tutti i messaggi di Rajendra Gupta