SQLServerITA

SQL Server e non solo

  • agosto: 2017
    L M M G V S D
    « Set    
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  
  • Blog Stats

    • 17,021 hits
  • Inserisci il tuo indirizzo e-mail per iscriverti a questo blog e ricevere notifiche di nuovi messaggi per e-mail.

    Segui assieme ad altri 6 follower

Archive for the ‘SQL+Server+2008+R2’ Category

SQL Server e Windows 8: compatibilità

Posted by belthazor78 su 2 settembre 2012


Veloce post per riassumere quali versioni possiamo installare su un computer dotato di Windows 8 o Windows Server 2012

  1. SQL Server 2005 e versioni precedenti non sono supportate in Windows 8/Windows Server 2012
  2. SQL Server 2008 è supportato su Windows 8/Windows Server 2012 ma richiede almeno la SP3 di SQL
  3. SQL Server 2008 R2 è supportato su Windows 8/Windows Server 2012 ma richiede almeno la SP1 di SQL
  4. SQL Server 2012 RTM è completamente supportato su Windows 8/Windows Server 2012

Le installazioni di SQL Server 2008 e 2008 R2 proseguiranno normalmente ma bisognerà installare le relative SP per non avere problemi di alcun genere.

Per la versione di SQL Server 2005 riceveremo a video il classico pop-up di incompatibilità tra SQL Server 2005 e Windows 8 ma il setup ci permetterà di ignorare il messaggio e proseguire.

 

Posted in SQL+Server+2005, SQL+Server+2008, SQL+Server+2008+R2, SQL+Server+2012, Windows+8 | 2 Comments »

SQL Server 2008 R2 Service Pack 2 CTP

Posted by belthazor78 su 14 maggio 2012


Disponibile la CTP dell SP2 di SQL Server 2008 R2 al seguente link: http://www.microsoft.com/en-us/download/details.aspx?id=29848

Attenzione! Non installare tale CTP nei seguenti casi:

1- SE la versione di SQL è 10.00.xxxx  (SELECT @@VERSION;)

2- Se la versione di SQL è >= 10.50.1815 and < 10.50.2500

3- Se la versione di SQL è >= 10.50.2811

Posted in SQL+Server+2008+R2 | Leave a Comment »

SQL Server 2008 R2: identificare le Foreign Key disabilitate

Posted by belthazor78 su 26 marzo 2012


Può essere importante poter effettuare un controllo e identificare delle Foreign Key che risultano essere disabilitate in un database; i motivi sono tanti come ad esempio una disabilitazione degli indici (magari per velocizzare una query di popolamento) oppure operazioni mirate per disabilitare momentaneamente un controllo.

E’ fondamentale, però, ripristinare la situazione ed ecco un comodo script che potrà esservi di aiuto nell’identificare tutto il necessario di una Foregin key.

La query è la seguente:

SELECT o.object_id AS fk_id,
o.name      AS fk_name,
rt.name     AS fk_table,
ru.name     AS schemaname,
CASE o.is_disabled
WHEN 0 THEN ‘NO’
WHEN 1 THEN ‘YES’
END         AS is_disabled
FROM   sys.foreign_keys o
INNER JOIN sysreferences r
ON o.object_id = r.constid
INNER JOIN sys.objects rt
ON rt.object_id = r.rkeyid
INNER JOIN sys.schemas ru
ON rt.schema_id = ru.schema_id
INNER JOIN sys.objects t
ON t.object_id = o.parent_object_id
INNER JOIN sys.schemas u
ON t.schema_id = u.schema_id
LEFT OUTER JOIN sys.extended_properties p
ON p.major_id = o.object_id
WHERE
u.name = N’dbo’
AND o.TYPE = ‘F’
ORDER  BY rt.name

Come vedete è molto semplice, fatta solo per lo schema DBO (può essere omesso come dettaglio nella WHERE condition) ed elenca tutti i dati del database da dove state eseguendo la query con un risultato molto simile al seguente:

Facile intuire il significato di ogni colonna 😀

Posted in SQL+Server+2008+R2, SQL+Server+2012 | Leave a Comment »

SQL Server 2008: velocizzare la cancellazione di milioni di righe disabilitando gli indici

Posted by belthazor78 su 18 marzo 2012


Si sa che in alcune fasi (specialmente di inserimento dati) la rimozione degli indici può portare ad enormi incrementi di performance. Non tutti sanno che è possibile ottenere quasi gli stessi miglioramenti anche disabilitando gli indici su una tabella.

E questo vale anche nelle fasi di cancellazione di molti dati di una tabella. In questo piccolo post vedremo come è possibile migliorare le perfromance di cancellazione. Vi ricordo che effettuare il classico DELETE su una tabella con milioni di righe può essere un’operazione molto lunga: per ovviare a questo problema c’è il classico comando TRUNCATE…ma non sempre può essere utilizzato (per esempio se ci sono delle chiavi referenziate).

Che fare? Ecco che ci viene in soccorso la possibilità, tra tante, di disabilitare gli indici.

Supponiamo di avere una tabella con un bel numero di dati: circa 15 milioni di record.

Durante le fasi di test si è soliti provare svariate volte le query di popolamento; ma dopo il popolamento serve anche la possibilità di cancellare i dati…vediamo come si comporta una DELETE normale su una tabella di 15 milioni di righe con 4/5 indici:

Bhè come vedete dopo 15 minuti la query è ancora in esecuzione. Il test è stato fatto su un PC modesto quindi nulla di strano.

Ora, invece, proviamo ad eseguire la stessa cancellazione ma disabilitando gli indici che si possono disabilitare (alcuni non vengono disabilitati se utilizzati dal motore di SQL che ritornerà a video un errore del tipo “The query processor is unable to produce a plan because….etc…etc…”).

Il comando sarà semplice: disabilitare gli indici, eseguire la cancellazione e riabilitare gli indici.

Dopo solo 1 minuto e 26 secondi la tabella con 15 milioni di righe è stata ripulita senza problemi.

Come avete visto la disabilitazione di alcuni indici può portare ad enormi vantaggi senza dover ricorrere al comando TRUNCATE che richiede, in alcuni casi, la rimozione di tutte le chiavi referenziate…il che potrebbe non essere molto comodo. Unica accortezza sarà quella di riabilitare gli indici disabilitati e prevederla anche  in caso di errori nell’esecuzione dei vari script.

Posted in SQL+Server+2008+R2, SQL+Server+2012 | Contrassegnato da tag: , | 1 Comment »

SQL Server 2008 R2 SP1: Server is in script upgrade mode

Posted by belthazor78 su 30 gennaio 2012


Errore abbastanza allarmante che mi è capitato una volta installata la SP1 su SQL Server 2008 R2.

Inizialmente pensavo fosse dovuto al fatto che non avevo riavviato il computer ma mi ero ricordato di aver disabilitato tutti i servizi di SQL prima di eseguire la SP1, il che mi avrebbe appunto evitato di riavviare il computer.

Tuttivia, appena ho provato ad accedere all’istanza di SQL Server mi è tornato a video l’errore: Login failed for user ‘LoginName’
Reason: Server is in script upgrade mode. Only administrator can connect at this time.

Che fare? Semplice, leggendo su internet dovete dare qualche secondo a SQL Server affinchè possa terminare l’installazione di alcuni script…diciamo una 20ina di secondi dopo aver provato il primo login. Dopo pochi secondi, infatti, sono riuscito a loggarmi su SQL Server senza problemi 😉

Posted in SQL+Server+2008+R2 | Leave a Comment »

SQL Server 2008 R2: l’intellisense del SSMS non funziona

Posted by belthazor78 su 19 gennaio 2012


Ad un certo punto mi sono ritrovato con il SQL Server Management Studio con l’intellisense fuori uso…eppure era abilitato correttamente da interfaccia:

Girovagando su internet ho constatato che aggiornando Visual Studio 2010 all’ultima Service Pack è un problema che può capitare. La soluzione più veloce, se non comodissima, è stata quella di reinstallare la SP1 di SQL Server 2008 R2 (e non di Visual Studio) e magicamente l’intellisense è tornato operativo!

😀

Qui http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26727 il link per la SP1 di SQL 2008 R2

Posted in SQL+Server, SQL+Server+2008+R2 | Leave a Comment »

SQL Server performance quick tips: Disable Index

Posted by belthazor78 su 16 gennaio 2012


In un post precedente vi parlavo circa la possibilità di aumentare le performance di un query che effettuava molti inserimenti quindi un inserimento massiccio. Senza dover aggiungere e/o modificare eventuali indici/statistiche ecco un altro comodo consiglio.

E’ possibile, infatti, poter disabilitare momentaneamente gli indici della tabella in cui stiamo inserendo i dati; come sapete gli indici sono comodi e utili in fase di ricerca ma in fase di inserimento sono comunque un peso. Aggiungendo a questo discorso che solitamente è meglio creare gli indici solo successivamente ad un inserimento massiccio ecco la facile soluzione.

Per ricordarci e come di esempio ecco la query di inserimento con esecuzione normale:

Ed ora proviamo a disabilitare gli indici, eseguire la stored e successivamente riabilitare gli indici:

1 minuto e 44 secondi, che sono circa 3 minuti in meno di esecuzione disabilitando i soli indici; non è male direi come guadagno!

Il problema è che non sempre tutti gli indici possono essere disabilitati, pensiamo alle colonne di tipo IDENTITY, ma è un consiglio da ricordare per inserimenti massicci che richiedono di essere eseguiti nel minor tempo possibile.

Posted in SQL+Server+2008, SQL+Server+2008+R2, Uncategorized | Contrassegnato da tag: , | Leave a Comment »

SQL Server: Custom Report Error BIDS 2008

Posted by belthazor78 su 9 novembre 2011


Stavo creando un piccolo report custom utilizzando BIDS 2008; appena ho provato a fare un porting su una istanza SQL Server 2008 R2 ecco che ricevo a video un non bellissimo errore:

The report definition is not valid.  Details: The report definition has an invalid target namespace ‘http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition’ which cannot be upgraded. (Microsoft.ReportViewer.Common)

Girando un pò su internet ho capito che non solo è un bug conosciuto ma che ancora non c’è una valida soluzione: in pratica con SQL Server 2008 e R2 non si potranno utilizzare report custom creati con Visual Studio 2008. Tali report potranno essere visualizzati solo dal reporting services.

Un workaround è quello di creare i report custom con Visual Studio 2005 o BIDS 2005…ma ovviamente non è la strada più comoda. Insomma da quello che ho capito, per ora, non c’è soluzione :-(

RIF.:

http://connect.microsoft.com/SQLServer/feedback/details/585398/reports-built-in-bids2008r2-dont-work-as-custom-reports-in-ssms2008r2

http://siddhumehta.blogspot.com/2009/11/ssrs-bids-2008-reports-cannot-be.html

Posted in SQL+Server+2008+R2 | Contrassegnato da tag: | Leave a Comment »

SQL Server 2005/2008: informazioni job [tsql]

Posted by belthazor78 su 23 settembre 2011


Un piccolissimo script per avere alcune informazioni sui job presenti in una istanza di SQL Server 2005 o superiori.

Lo script elencherà, oltre al nome del job, anche chi è l’owner, la data di creazione e modifica, la descrizione e anche l’ID del job; questo ultimo elemento, l’ID del Job, può tornare utile quando, usando l’activity monitor, avremo listati i job in esecuzione: il listato ci presenterà l’ID del job e non il nome.

Lo script è il seguente:

SELECT
s.name as [Nome Job],
l.name as [User Owner],
s.description as [Descrizione Job],
s.date_created as [Data Creazione],
s.date_modified as [Data Ultima Modifica],
s.job_id [Job ID]
FROM  msdb.dbo.sysjobs s
LEFT join master.sys.syslogins l ON s.owner_sid = l.sid

Molto semplice e dovrebbe avere un risultato del genere:

Posted in SQL+Server, SQL+Server+2005, SQL+Server+2008, SQL+Server+2008+R2, SQL+Server+Denali | Contrassegnato da tag: , | Leave a Comment »

SQL Server 2008: ciclo aggiornamento statistiche [tsql]

Posted by belthazor78 su 18 settembre 2011


Piccolo script per creare altri script di aggiornamento statistiche su tutti i database di una istanza SQL. Per ora è uno script che di fatto non eseguirà alcuno script ma vi creerà gli script che poi potrete lanciare a mano. Utile  per capire se ci sono database che richiedono più tempo oppure per “splittare” l’operazione.

L’aggiornamento delle statistiche con sp_updatestats aggiorna solo le statistiche che ne hanno realmente bisogno e con un 20% di campione (non è come fare un aggiornamento FULLSCAN).

Ecco lo script:

DECLARE @SQL VARCHAR(1000)
DECLARE @DB sysname
DECLARE DBCYCLE CURSOR FAST_FORWARD FOR
SELECT [name]
FROM master..sysdatabases
WHERE [name] NOT IN (‘model’, ‘tempdb’)
ORDER BY [name]
OPEN DBCYCLE
FETCH NEXT FROM DBCYCLE INTO @DB
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SQL = ‘PRINT ”Starting Upgrade Statistics on [‘+ @DB +’] at: ” + convert(char(20), getdate()) ‘
+ CHAR(13) + ‘USE [‘ + @DB +’]’ + CHAR(13) + ‘EXEC sp_updatestats’ + CHAR(13) +
‘PRINT ”Upgrade Statistics Finished on [‘+ @DB +’] at: ” + convert(char(20), getdate()) ‘ + CHAR(13)
PRINT @SQL
FETCH NEXT FROM DBCYCLE INTO @DB
END
CLOSE DBCYCLE
DEALLOCATE DBCYCLE

Anche in veste grafica:

Ed ecco l’esecuzione degli script generati in precedenza:

Molto comodo :D anche per farvi vedere come fare un ciclo su tutti i db ed eseguire un comando in particolare anzichè usare il comando Sp_MSForEachDB che è ottima come funzione ma che in realtà non è ancora documentata. Lo script è stato testato con SQL Server 2008 R2.

Posted in SQL+Server+2008, SQL+Server+2008+R2 | Contrassegnato da tag: , , , | 1 Comment »