====== 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.