Appunti SQL Server
Passaggi per restorare un db SQLServer con nome diverso:
- eseguire il bkp del DB di partenza
- creare il DB di arrivo con il nome desiderato
- in fase di import:
- importare il DB esportato nel DB con il nuovo nome
- nella scheda “file” selezionare l'opzione “riloca tutti i file nella cartella” e controllare che i path “nome file originale” e “ripristina come” facciano riferimento al nuovo DB
- nella scheda “opzioni” selezionare solo l'opzione “sovrascrivi il database esistente (with replace)”
Passaggi per rinominare uno schema:
0. creare gli schemi nuovi vuoti
1. eseguire la seguente query:
SELECT 'ALTER SCHEMA schema_arrivo TRANSFER ' + TABLE_SCHEMA + '.' + TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'schema_partenza' order by TABLE_NAME
2. selezionare tutte le query che vengono restituite ed eseguirle per trasferire tutte le tabelle
3. controllare le viste –> esportare gli script delle viste e tramite un editor di testo aggiornare lo schema al loro interno
4. cancellare tutte le viste eseguendo la seguente query per selezionarle tutte:
SELECT 'DROP VIEW ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(v.name) +';' FROM sys.views v
5. selezionare tutti i risultati ed eseguirli per cancellare tutte le viste
6. controllare se ci sono delle funzioni/procedure da modificare
7. ricreare le viste opportunamente modificate
8. controllare l'esatto numero delle viste, lanciare lo script di creazione più volte perché viste potrebbero dipendere da altre viste
Eliminare tutte le tabelle di uno schema
1. eseguire la seguente query:
SELECT ' Drop table ' + QUOTENAME(TABLE_SCHEMA) + '.'+ QUOTENAME(TABLE_NAME) + '; ' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' order by TABLE_NAME
2. copiare ed incollare il risultato in una finestra di lavoro
3. per fare la delete “SELECT ' Delete ' +”
4. per selezionare “SELECT ' Select * ' +”
Query per ottenere le dimensioni delle tabelle
USE [INTESA_CDE] -- replace your dbname GO SELECT s.Name AS SchemaName, t.Name AS TableName, p.rows AS RowCounts, CAST(ROUND((SUM(a.used_pages) / 128.00), 2) AS NUMERIC(36, 2)) AS Used_MB, CAST(ROUND((SUM(a.total_pages) - SUM(a.used_pages)) / 128.00, 2) AS NUMERIC(36, 2)) AS Unused_MB, CAST(ROUND((SUM(a.total_pages) / 128.00), 2) AS NUMERIC(36, 2)) AS Total_MB FROM sys.tables t INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id INNER JOIN sys.schemas s ON t.schema_id = s.schema_id GROUP BY t.Name, s.Name, p.Rows ORDER BY CAST(ROUND((SUM(a.used_pages) / 128.00), 2) AS NUMERIC(36, 2)) desc,s.Name, t.Name GO
Passaggi per creazione nuovo DB per Geoweb
1. connettersi come 'sa'
2. Creare un DATABASE
3. posizionarsi nella cartella 'Sicurezza' del nuovo Database
4. Creare utente xxx_DATA, andare su Proprietà e in 'Generale', mettere:
'Nome Utente'= xxx_DATA 'Nome account di accesso'= xxx_DATA 'Schema predefinito' = lasciare vuoto per ora
. in 'Appartenenza' dare i seguenti diritti:
db_datareader db_datawriter db_owner
5. Creare Schema xxx_DATA, andare su Proprietà e mettere in 'Proprietario' schema xxx_DATA
6. tornare su Proprietà utente e impostare su 'Generale':
'Schema predefinito' = xxx_DATA
7. ripartire dal punto 4 per creare lo schema xxx_METADATA
8. IMPORTANTISSIMO: disconnettersi da SA e riconnettersi con il nome utente da cui si eseguiranno gli script.
9. aprire una Finestra di Query e accertarsi che sia appartenente all'utente corretto prima di eseguire gli script.