Differenze tra le versioni di "MSSQL"

Da WikiSitech.
Vai alla navigazioneVai alla ricerca
 
(15 versioni intermedie di uno stesso utente non sono mostrate)
Riga 14: Riga 14:
 
</code>
 
</code>
 
* Modificare la definizione dello storage al nuovo percorso
 
* Modificare la definizione dello storage al nuovo percorso
<code sql>
+
<syntaxhighlight lang="sql">
 
--
 
--
 
-- In questo esempio ricollochiamo il DB di sistema 'distribuzione'
 
-- 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', FILENAME = 'E:\MSSQLData\distribuzione.MDF' )
 
ALTER DATABASE distribuzione MODIFY FILE ( NAME = 'distribuzione_log', FILENAME = 'E:\MSSQLData\distribuzione.LDF' )
 
ALTER DATABASE distribuzione MODIFY FILE ( NAME = 'distribuzione_log', FILENAME = 'E:\MSSQLData\distribuzione.LDF' )
</code>
+
</syntaxhighlight>
 
* Interrompere l'istanza di SQL Server
 
* Interrompere l'istanza di SQL Server
 
* Spostare i file nella nuova posizione
 
* Spostare i file nella nuova posizione
Riga 33: Riga 33:
 
Vedi man page [http://msdn.microsoft.com/en-us/library/ms176060.aspx ALTER USER] sul sito del supporto Microsoft
 
Vedi man page [http://msdn.microsoft.com/en-us/library/ms176060.aspx ALTER USER] sul sito del supporto Microsoft
 
Esempio:
 
Esempio:
<code tsql>
+
<syntaxhighlight lang="sql">
ALTER USER pinco WITH NAME= pinco, LOGIN pinco;
+
ALTER USER pinco WITH NAME=pinco, LOGIN=pinco;
</code>
+
</syntaxhighlight>
 +
 
 
== Estrazione record in attesa di replica transazionale ==
 
== Estrazione record in attesa di replica transazionale ==
<code sql>
+
<syntaxhighlight lang="sql">
 
SELECT name as 'Agent', SUM(UndelivCmdsInDistDB) as 'Cmds'
 
SELECT name as 'Agent', SUM(UndelivCmdsInDistDB) as 'Cmds'
 
FROM distribution.dbo.MSdistribution_agents a
 
FROM distribution.dbo.MSdistribution_agents a
 
INNER JOIN distribution.dbo.MSdistribution_status st on st.agent_id = a.id
 
INNER JOIN distribution.dbo.MSdistribution_status st on st.agent_id = a.id
 
GROUP BY a.name
 
GROUP BY a.name
</code>
+
</syntaxhighlight>
  
 
= Microsoft SQL Server 2005 - Installazione in modalità unattended =
 
= Microsoft SQL Server 2005 - Installazione in modalità unattended =
Riga 53: Riga 54:
 
Vai alla pagina dedicata alla [[MSSQL-KB | KB]].
 
Vai alla pagina dedicata alla [[MSSQL-KB | KB]].
 
<br>
 
<br>
 +
= HOW TO =
 +
== Elenca tutti i database con un determinato Recovery Model ==
 +
<syntaxhighlight lang="sql">
 +
SELECT name, recovery_model_desc
 +
  FROM sys.databases
 +
      WHERE recovery_model_desc <> 'simple';
 +
</syntaxhighlight>
 +
== Script per backup di alcuni filegroup ==
 +
<syntaxhighlight lang="sql">
 +
BACKUP DATABASE PAPER FILEGROUP='<filegroup-name>'
 +
, FILEGROUP='<filegroup-name'
 +
TO DISK='disk-device'
 +
</syntaxhighlight>
 +
=== Backup PRIMARY filegroup ===
 +
<syntaxhighlight lang="sql">
 +
BACKUP DATABASE PAPER FILEGROUP='PRIMARY'
 +
TO DISK='disk-device'
 +
</syntaxhighlight>
 +
== Determina lo spazio occupato da tutti i database di una istanza ==
 +
<syntaxhighlight lang="sql">
 +
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
 +
</syntaxhighlight>
 +
== Elenca tutte le tabelle nei vari FILEGROUP ==
 +
<syntaxhighlight lang="sql">
 +
-- 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
 +
</syntaxhighlight >
 +
 +
== Estrae elenco delle tabelle e relativo numero di righe in ognuna ==
 +
<syntaxhighlight lang="sql">
 +
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
 +
</syntaxhighlight>
 +
 +
== 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

Versione attuale delle 10:43, 9 mag 2018

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:

  1. detach del database
  2. spostamento dei file nella nuova posizione
  3. 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