Faq

Vorrei iniziare ad entrare nel modo della Business Intelligence, che libri mi consigliate?

Davide Mauri

Vorrei iniziare ad entrare nel modo della Business Intelligence, che libri mi consigliate?

Un libro ideale per tutti coloro che vogliono iniziare a prendere confidenza con tutte le tecnologie Microsoft necessarie per sviluppare una soluzione di Business Intelligence completa, possono trovare pane per i loro denti in questo libro:

**Smart Business Intelligence Solutions with Microsoft® SQL Server® 2008
**http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?r=1&ISBN=9780735625808&ourl=Smart%2DBusiness%2DIntelligence%2DSolutions%2Dwith%2DMicrosoft%2DSQL%2DServer%2D2008%2FLynn%2DLangit&itm=1&afsrc=1

Come configurare una Named Instance in modo che utilizzi una porta TCP scelta da noi?

Davide Mauri

Il link che spiega passo per passo come fare lo si trova qui:

http://msdn.microsoft.com/en-us/library/ms345327.aspx

Una volta fatto ciò sarà possibile collegarsi a SQL Server specificando anche la porta da utilizzare lo forma server,porta. Es:

192.168.11.3,8632

Questa forma la si deve usare sia nel caso di utilizzo di Connection String da applicazioni custom, sia per la connessione al database tramite Management Studio (o altri tool):

Terminata la configurazione - volendo - è possibile disabilitare il servizio SQL Browser in modo da ridurre la superficie di attacco. In questo modo ogni client dovrà però specificare la porta alla quale si deve colegare, in quanto il servizio SQL Browser, essendo disabilitato, non sarà più in grado di fornire la porta alla quale collegarsi all’applicazione che ne fa richiesta.

Come sapere su quale nodo del cluster sta girando SQL Server?

Davide Mauri

In alcuni casi può essere necessario sapere su quale nodo di un cluster è in esecuzione il servizio di SQL Server, usando solamente comandi T-SQL.

Con SQL Server 2005 e 2008 questo script permette di avere le informazioni che servono:

select
    *,
    HasSQLServer = case when NodeName = host_name() then 1 else 0 end
from
    sys.dm_os_cluster_nodes

La colonna HasSQLServer verrà impostata ad 1 per il nodo sulla quale sta effettivamente girando SQL Server.

Posso spostare un set righe con un'unica istruzione?

Davide Mauri

L’uso della calusola OUTPUT nel comando di DELETE, fornisce una valida e più compatta alternativa allo spostamento transazionale di un set di righe.

Date due tabelle [T_Source] e [T_Target], con la frase “spostare un set di righe da T_Source a T_Target” intendiamo la sequenza di operazioni:

  1. copia le righe interessate di [T_Source] in [T_Target]
  2. elimina le righe interessate da [T_Source]

Il tutto compreso in una transazione con gestione dell’errore.
 
In T-SQL (a partire da SQL 2005) si potrebbe schematizzare così:

Come eliminare un utente di database che sia owner di uno schema

Davide Mauri

Cosa accade se tento di eliminare un utente di database che sia owner di uno schema? Semplicemente mi viene impedito. Occorre, infatti, che prima elimini lo schema. Per far ciò serve che esso sia “vuoto”, cioè che ad esso non appartenga nessun oggetto (tabella, stored procedure, etc..). Nel caso non sia vuoto, devo cancellare i suoi oggetti o trasferirli in un altro schema con l’istruzione T-SQL

ALTER SCHEMA [nuovo schema] TRANSFER [schema da cancellare].[nome oggetto da trasferire]

Il transaction log e' enorme e mi da problemi. Cosa posso fare?

Davide Mauri

Il transaction log viene principalmente utilizzato da SQL Server per garantire le proprietà ACID delle transazioni

In funzione del modello recupero del database (in inglese Recovery Model) il transaction log può essere utilizzato anche come strumento di backup in modo da poter ricostruire l’intero database nel caso qualcosa non andasse per il verso giusto.

SIMPLE RECOVERY MODEL

Se il modello di recupero è impostato a Semplice (Simple), il transaction log verrà utilizzato solo per garantire le proprietà ACID citate in precedenza. Ogni volta che una transazione viene confermata od annullata, lo spazio occupato dalla stessa nel transaction log verrà liberato automaticamente e ri-utilizzato.

Posso importare un file di traccia del Profiler in una tabella SQL?

Davide Mauri

Per non inficiare le performance di un server SQL, è sempre buona norma NON salvare la traccia del SQL Profiler direttamente in una tabella del SQL Server che si è intenti a monitorare, bensì salvarla in un file su disco che sarà poi possibile interrogare con T-SQL dopo averlo portato in una tabella SQL generata e popolata con l’istruzione

SELECT *
INTO my_table_name
FROM fn_trace_gettable ( , <number_files> )

dove:
- è il nome file di traccia, con tanto di percorso;
- <numeber_files> è un numero intero che identifica il numero di sequenza del file di traccia generato con l’opzione RollOver, la quale provoca uno split della traccia in tanti file sequenziali (filename.trc, filename_1.trc, filename_2.trc, …) di dimensione pari al massimo indicato in fase di impostazione del profilo di traccia (minimo 1 MB).
Alternativamente, <number_files> può essere valorizzato con la parola chiave ‘default’, che legge tutti i file della sequenza a partire al primo.

Come cambiare la porta sulla quale SQL Server è raggiungibile?

Davide Mauri

Per motivi di sicurezza può essere necessario dove modificare la porta TCP sulla quale SQL Server normalmente risponde, ossia la 1433.

Per farlo è sufficiente seguire quanto scritto in questa pagina dell’help:

http://msdn2.microsoft.com/en-us/library/ms177440.aspx

Ricordate che fatto ciò se non volete usare alias od utilizzare il SQL Server Browser (che è bene sia disabilitato se avete necessità di creare un ambiente realmente sicuro) vi potrete collegare a SQL Server specificando il numero della porta in modo esplicito:

Primary Key e Clusterd-Index di una tabella coincidono sempre?

Davide Mauri

No necessariamente. Infatti l’indice clustered e la chiave primaria di una tabella sono due cose nettamente distinte fra loro: - la chiave primaria è un vincolo che assicura l’univocità di ogni riga della tabella - un indice clustered è un struttura B+Tree che determina un ordinamento specifico dei dati della tabella nelle pagine di dati. Di fatto, però, SQL Server implementa il vincolo di chiave primaria attraverso un ‘unique index’ di tipo ‘clustered’, a meno che venga prima creata la tabella priva di chiave primaria, quindi aggiunto l’indice clusterd, infine aggiunto il vincolo di chiave primaria che sarà quindi implementata attraverso un ‘unique index’ di tipo ’non-clustered’