MSSQL
Da WikiSitech.
Vai alla navigazioneVai alla ricercaIndice
- 1 Microsoft SQL Server 2008 - Appunti di gestione
- 2 Microsoft SQL Server 2000 - Appunti di gestione
- 3 Microsoft SQL Server 2005 - Installazione in modalità unattended
- 4 Microsoft SQL Server 2005 - Appunti di gestione
- 5 Knowledge Base interna
- 6 HOW TO
- 6.1 Elenca tutti i database con un determinato Recovery Model
- 6.2 Script per backup di alcuni filegroup
- 6.3 Determina lo spazio occupato da tutti i database di una istanza
- 6.4 Elenca tutte le tabelle nei vari FILEGROUP
- 6.5 Estrae elenco delle tabelle e relativo numero di righe in ognuna
- 6.6 Estrazione del contenuto di una tabella tramite BCP
- 6.7 Importazione in tabella tramite BCP
Microsoft SQL Server 2008 - Appunti di gestione
Spostare database utente su dischi diversi
Il modo più semplice in assoluto è quello di procedere secondo questa sequenza:
- detach del database
- spostamento dei file nella nuova posizione
- attach dei file dalla nuova posizione
Spostare alcuni dei database di sistema su dischi diversi
Per spostare i database di sistema su un disco diverso, procedere come segue:
- Verificare la dislocazione attuale dei database
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files;
- Modificare la definizione dello storage al nuovo percorso
--
-- In questo esempio ricollochiamo il DB di sistema 'distribuzione'
ALTER DATABASE distribuzione MODIFY FILE ( NAME = 'distribuzione', FILENAME = 'E:\MSSQLData\distribuzione.MDF' )
ALTER DATABASE distribuzione MODIFY FILE ( NAME = 'distribuzione_log', FILENAME = 'E:\MSSQLData\distribuzione.LDF' )
- Interrompere l'istanza di SQL Server
- Spostare i file nella nuova posizione
- Riavviare l'istanza di SQL Server
Questi appunti sono stati tratti da un articolo di MSDN.
Microsoft SQL Server 2000 - Appunti di gestione
Trasferimento login e password fra database diversi
Vedi articolo 246133 sul sito del supporto Microsoft
Risoluzione di utenze orfane di login (post restore da un database diverso)
SQL Server 2005/2008
Vedi man page ALTER USER sul sito del supporto Microsoft Esempio:
ALTER USER pinco WITH NAME=pinco, LOGIN=pinco;
Estrazione record in attesa di replica transazionale
SELECT name as 'Agent', SUM(UndelivCmdsInDistDB) as 'Cmds'
FROM distribution.dbo.MSdistribution_agents a
INNER JOIN distribution.dbo.MSdistribution_status st on st.agent_id = a.id
GROUP BY a.name
Microsoft SQL Server 2005 - Installazione in modalità unattended
Installazione di una nuova istanza
Start /wait <CD or DVD Drive>\DISK1\setup.exe /qb INSTANCENAME=<InstanceName> ADDLOCAL=All PIDKEY=<pidkey value with no "-"> SAPWD=<StrongPassword> SQLACCOUNT=<domain\user> SQLPASSWORD=<DomainUserPassword> AGTACCOUNT=<domain\user> AGTPASSWORD=<DomainUserPassword> SQLBROWSERACCOUNT=<domain\user> SQLBROWSERPASSWORD=<DomainUserPassword>
Per ulteriori dettagli vedi l'articolo estratto da book online
Microsoft SQL Server 2005 - Appunti di gestione
Knowledge Base interna
Vai alla pagina dedicata alla KB.
HOW TO
Elenca tutti i database con un determinato Recovery Model
SELECT name, recovery_model_desc
FROM sys.databases
WHERE recovery_model_desc <> 'simple';
Script per backup di alcuni filegroup
BACKUP DATABASE PAPER FILEGROUP='<filegroup-name>'
, FILEGROUP='<filegroup-name'
TO DISK='disk-device'
Backup PRIMARY filegroup
BACKUP DATABASE PAPER FILEGROUP='PRIMARY'
TO DISK='disk-device'
Determina lo spazio occupato da tutti i database di una istanza
with fs
as
(
select database_id, type, size * 8.0 / 1024 size
from sys.master_files
)
select
name,
(select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataFileSizeMB,
(select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogFileSizeMB
from sys.databases db
Elenca tutte le tabelle nei vari FILEGROUP
-- List all Objects and Indexes
-- per Filegroup / Partition and Allocation Type
-- including the allocated data size
SELECT DS.name AS DataSpaceName
,AU.type_desc AS AllocationDesc
,AU.total_pages / 128 AS TotalSizeMB
,AU.used_pages / 128 AS UsedSizeMB
,AU.data_pages / 128 AS DataSizeMB
,SCH.name AS SchemaName
,OBJ.type_desc AS ObjectType
,OBJ.name AS ObjectName
,IDX.type_desc AS IndexType
,IDX.name AS IndexName
FROM sys.data_spaces AS DS
INNER JOIN sys.allocation_units AS AU
ON DS.data_space_id = AU.data_space_id
INNER JOIN sys.partitions AS PA
ON (AU.type IN (1, 3)
AND AU.container_id = PA.hobt_id)
OR
(AU.type = 2
AND AU.container_id = PA.partition_id)
INNER JOIN sys.objects AS OBJ
ON PA.object_id = OBJ.object_id
INNER JOIN sys.schemas AS SCH
ON OBJ.schema_id = SCH.schema_id
LEFT JOIN sys.indexes AS IDX
ON PA.object_id = IDX.object_id
AND PA.index_id = IDX.index_id
ORDER BY DS.name
,SCH.name
,OBJ.name
Estrae elenco delle tabelle e relativo numero di righe in ognuna
SELECT '[' + SCHEMA_NAME(t.schema_id) + '].[' + t.name + ']' AS fulltable_name, SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name, i.rows
FROM sys.tables AS t INNER JOIN
sys.sysindexes AS i ON t.object_id = i.id AND i.indid < 2
WHERE SCHEMA_NAME(t.schema_id) NOT IN ('dbo')
ORDER BY 1
Estrazione del contenuto di una tabella tramite BCP
bcp [dbname].[schema].tabella out FileDiOutput.bcp -n -k -S SERVER\ISTANZA -T
Importazione in tabella tramite BCP
bcp [dbname].[schema].tabella in FileDiOutput.bcp -n -k -S SERVER\ISTANZA -T