SQLExpress 8 reset sa password Windows server 2008

Può capitare di non disporre o dimenticare la password dell’utente amministratore sa di SQL Express. In questo caso per resettare la password dell’ amministrator sa è necessario avviare SQLExpress in single mode.  Utilizzando SQL Manager Studio una volta  avviato SQLExpress in single mode la procedura per il reset della password di sa risulta decisamente agevole.

Per avviare SQLExpress in single mode accedere via pannello di controllo al servizio SQL Server (SQLEXPRESS)

Fermare il servizio premere il tasto destro del mouse sul servizio e nel tab General in basso inserire nel campo Start Manager l’opzione – m e riavviare il servizio premendo Start.

 

Poichè il single mode è permessa una sola connessione attiva controllare che SQL controllare che SQL Server Agent non sia in esecuzione.

 

Utilizzando il tasto destro del mouse “Avviare SQL Manager Studio” in modalità Amministratore < Run as administrator >.

Quindi modificare la password dell’administrator sa in <Security> <Logins>

Altra possibilità per avviare in single mode SQLExpress

 

Avviare SQL Server Configuration Manager

In Microsfot SQL Server Managemente Studio menu [View]  di Selezionare  [Registered Servers]

Nella sezione Registered Server selezionare il server premere il  Tasto destro del mouse e clikkare SQL Registered Configuration Manager. Seguirà la richiesta per avviare il servizio come amministratore.  A questo livello è possibile controllare il servizio e modificare i parametri

 

 SQL Server Configuration Manager 

Per accedere alle proprietà di SQLExpress si può premere anche il tasto destro del mouse in Object Explorer di SQL Server Manager Studio

 

 

Risorse:

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

 

 

Annunci

Installare Adminer 3.6.3 in Ubuntu 12.04 server

adminer-logoRilasciata in gennaio la versione 3.6.3 di Adminer una interfaccia di amministrazione per database SQL caratterizzata da pulizia ed efficacia oltre a MySQL, supporta PostgreSQL, SQLite, MS SQL, Oracle. A differenza di phpAdmin consiste in un unico file php.

adminer login postgresql

adminer login postgresql

Disponibile anche Adminer-editor un interfaccia user-friendly e di facile utilizzo per editing dei dati dei database per l’utente finale. Adminer e Adminer editor dispongono di plugins e  skins.

Installare Adminer

Per installare adminer in Ubuntu 12.04 è necessario avere installato mysql-server, apache2 e php. Sono necessari anche i moduli php per i database con i quali si intende interagire. Ad esempio
per amministrare mysql dovrà essere installato il modulo php5-mysql, mentre per postgresql è necessario il modulo php5-pgadmin.

I moduli possono essere installati con

sudo apt-get install php5-mysql php5-pgsql

Creare la directory /usr/share/adminer

sudo  mkdir /usr/share/adminer
sudo  cd /usr/share/adminer

scaricare l’ultima versione di adminer

sudo wget "http://www.adminer.org/latest.php"

creare un link simbolico adminer.php

sudo ln -s latest.php adminer.php

Configurare apache perchè utilizzi adminer utilizzando echo e quindi riavviare apache2

echo "Alias /adminer.php /usr/share/adminer/adminer.php" > /etc/apache2/conf.d/adminer.conf

service apache2 restart

Adminer mysql

Disinstallare Adminer

Per disinstallare adminer  rimuovere la directory /adminer e il suo contenuto

sudo  rm -R /usr/share/adminer

rimuovere anche il file di configurazione apache2 e riavvare il web server

sudo rm /etc/apache2/conf.d/adminer.conf
service apache2 restart

Risorse:

 

pgScript vs pl/Pgsql postgresql

postgresql

PgScript è un linguaggio di scripting usato per maneggiare i dati del database postgresql tuttavia non è tipico di Postgresql ma di PgAdmin 3 il tool di amministrazione ad interfaccia grafica di postgresql. Pertanto opera esclusivamente a livello client.

pl/Pgsql invece è di fatto una estensione del linguaggio SQL tipica di Postgresql,  ricorda analogo linguaggio di Oracle. Ovviamente pl/Pgsql opera a livello server.

Ne consegue che le finalità sono completamente differenti .

Esempio di pgScript

 SET @N = 0 ; 
 SET @PROGR = 'pgScript' ;
 -- PRINT @PROGR + 'features' + CAST (@N AS STRING ) ;
 
 SET @N = @N +1 ; 
 PRINT @N ;
 WHILE @N < 10 
 BEGIN 
       SET @N = @N +1 ; 
      PRINT @N ;
 END

pgScript

Risorse:

query di tipo plpgsql 

Pagina riepilogativa

Query SQL  – PostgreSQL

Postgresql 

Creare eliminare database e tabelle

Postgresq Numerare le righe di una select query – SQL count row_number

In postgresql per aggiungere un contatore al risultato di una query di tipo select è possibile utilizzare la funzione row_number(). L’uso di row_number() richiede la clausola over.  Il formato generale per numerare le righe di una tabella visualizzata con una select query è :

SELECT 
 row_number() OVER() as rownum, table.*
FROM table;

es:

select row_number() OVER () as num,  sp500.* 
 FROM   sp500 WHERE date > 01-01-2010 ORDER BY date;

Se è necessario che le i records siano ordinati si può utilizzare l’espressione  OVER ( :

SELECT row_number() OVER ( ORDER BY field nulls last) as rownum, table.* 
  FROM table 
  ORDER BY field ;

es:

select row_number() OVER ( order by date nulls last ) as num,  sp500.* 
FROM sp500 WHERE date > 01-01-2010 ORDER BY date;

Se si desidera inserire anche una colonna con il numero totale si può utilizzare la funzione count (*):

select row_number() OVER( order by date nulls last ) as num,  count(*) over ()  as total; sp500.* FROM   sp500 WHERE date > 01-01-2010 ORDER BY date;

Oracle utilizza row_number

Count()

In postgresql per contare i records che soddisfano una condizione data si utilizza count utilizzando la forma Sql standard.  Ad esempio:

SELECT  count(c.itemid) AS "Num." ,  c."Country" AS codec
FROM contactsdownloads  INNER JOIN contacts AS c
ON (itemidcontacts) = c.itemid

GROUP BY codec
HAVING  count (c.itemid) > 10

Formato generale

SELECT count(* )  over () , a.*
    FROM  table a  ;

Nella query seguente  viene effettuata la somma e il count a partire non da una tabella ma da  un’altra query.
Questo consente di ottenere un count su due livelli di ragruppamento.
In pratica si effettua un primo raggruppamento dei records che ritornerà il primo conteggio quindi si elaboreranno questi dati con un secondo livello di raggruppamento. Qui si effetturà un nuovo count e si opererà la  somma dei dati del primo count.

SELECT nameprd AS "Name Product" , sum(conta) AS "files downloaded", count (itemidcontacts) AS "N.Users" 
       FROM (SELECT  nameprd , count (itemid) AS conta, itemidcontacts FROM contactsdownloads 
               WHERE createddate > '01-01-2007'
               GROUP BY nameprd, itemidcontacts
               ORDER BY conta DESC ) AS DL

     GROUP BY  nameprd
     ORDER BY sum(conta) DESC;

Pagina riepilogativa

Query SQL  – PostgreSQL

Postgresql 

query di tipo plpgsql 

Creare eliminare database e tabelle

Confronto tra i metodi: ExecuteNonQuery, ExecuteReader, ExecuteScalar

I metodi ExecuteNonQuery, ExecuteReader, ExecuteScalar sono i tre principali metodi della classe SqlCommand.Gli oggetti risultanti, una volta instanziata la classe, consentono l’esecuzioni di istruzioni SQL e Stored Procedure in un Database di un Server SQL.

Il metodo ExecuteNonQuery viene usato per eseguire una instruzione SQL e stored procedure di tipo INSERT, DELETE e UPDATE. In questo caso il valore ritornato è il numero di record che sono stati interessati dal comando SQL. Più in generale viene usato per le action queries quindi oltre che per le istruzioni SQL UPDATE, INSERT, DELETE anche per le istruzioni CREATE, ATER, DROP.  Il valore ritornato ( result type ) è di tipo int. Se l’istruzioni SQL coinvolge records il result è il numero degli stessi diversamente è -1. Esempio in  asp.net c#   database postgresql con provider dati Npgsql

...
dbcon = new NpgsqlConnection(NpgsqlConnectionString);
dbcon.Open();
NpgsqlCommand command = new NpgsqlCommand( "DELETE FROM products WHERE itemid = 56", dbcon);
int result reader = command.ExecuteNonQuery();
...

Il metodo ExecuteReader ritorna una collezione di righe e colonne ( records ) e viene pertanto utilizzato per le istruzioni di tipo SELECT. Più in generale ExecuteReader lavora sia con query di tipo SELECT ( Non-Action ) che con le query di tipo Action. Il tipo ritornato essendo una collezione di records sara di tipo DataReader. Esempio in  asp.net c#   database postgresql con provider dati Npgsql

...
dbcon = new NpgsqlConnection(NpgsqlConnectionString);
dbcon.Open();
NpgsqlCommand command = new NpgsqlCommand( "SELECT * FROM products", dbcon);
IDataReader reader = command.ExecuteReader();
...

Il metodo ExecuteScalar ritorna la prima colonna della prima riga della query che viene  lanciata in esecuzione. Le rimanenti righe e colonne sono ignorate. Comodo nel caso di query di tipo Count.  Più in generale vien usato per le query di tipo Non Action con funzioni di aggregazione. Viene ritornato un valore di tipo object.

...
dbcon = new NpgsqlConnection(NpgsqlConnectionString);
dbcon.Open();
NpgsqlCommand command = new NpgsqlCommand( "SELECT COUNT(itemid) AS "Num.", productline FROM products GROUP BY productline", dbcon);
object result = command.ExecuteScalar();
...

Risorse:

Asp.net differenze tra IDataReader, NpgsqlDataAdapter, DataSet e DataTable

DataReader e DataAdapter sono oggetti presenti in tutti i provider dati .NET Framework è hanno la funzione di consentire il recupero dei dati da un database o comunque da un origine dati. I provider dei dati .NET framework  sono componenti espressamente progettati  che consentono la connessione ad un database, l’esecuzione di comandi e il recupero dei dati. Rappresentano uno dei principali componenti di ADO.NET (attualmente – ver.3.0) la cui funzione è consentire uniformita nell’accesso ai dati sia per origini dati presentate via ODBC e OLE DB sia per origini quali database SQL Server ( MS SQL Server, Oracle, Postgresql …) e XML.

L’oggetto DataReader consente di recuperare i dati in sola lettura ( forward-only ) da un database.
Il DataAdapter consente il recupero dei dati e la compilazione degli stessi all’interno di un oggetto DataSet o DataTable.

Il provider di dati .Net framework per SQL Server mette a disposizione  SqlDataReader e SqlDataAdapter. Analogamente in quello per ODBC avremo OdbcDataReader e OdbcDataAdapater. In quello per OLE DB troveremo OledbDataReader e OledbDataAdapter. Per ulteriore dettagli  Provider di dati .NET Framework Nel caso di PostreSQL uno dei provider dati .NET più utilizzati è Npgsql. Scritto in c# mette a disposizioni IDataReader e NpgsqlDataAdapter.

L’altro componente principale di ADO.NET oltre al provider dei dati .NET è   DataSet. Semplificando si tratta di una cache di dati cioè DataSet è una rappresentazione di dati presente in memoria composta da una collezione di tabelle con le relazioni tra le stesse. Trattandosi di una rappresentazione coerente indipendente dall’origini dati stessa non è necessaria una connessione attiva con l’origine dati per la manipolazione dei dati. La connessione e richiesta solo per l’update dei records nel database.

Di seguito un confronto sintetico tra  IDataReader, NpgsqlDataAdapter, DataTable, DataSet per la connessione a database Postgresql utilizzando Nplgsql

DataReader

IDataReader essendo un DataReader consente la sola lettura dei dati. .  E’ più performante di DataSet. Generalemente può essere iterato una sola volta ( Il cursore si muove in una sola direzione )Per associare i dati di una tabella postgresql ad una GridView utilizzando IDataReader si utilizza il codice seguente:

NpgsqlConnection conn = new NpgsqlConnection("Server=10.0.1.150, Port=5432;Database=myDB;Users ID=ospite;Password=abcd1234;Encoding=unicode;Pooling=falseConnectionLifeTime=10");
conn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("Select ....", conn); 
IDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr; 
GridView1.DataBind(); 
conn.Close();

DataAdapter

IDataAdapter come DataAdapter consente il recupero dei dati e la compilazione associandoli all’oggetto DataSet. In pratica un ponte tra database e DataSet. DataAdapter poichè consente una rappresentazione coerente dei dati in memoria è anche indicato come “disconnected oriented architecture”. Per associare i dati da un database postgresql ad una GridView utilizzando un DataAdapter è necessario ricorrere anche ad un DataSet (o una Datatable). Il codice sarà il seguente:

... 
conn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("Select ....", conn); 
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds) ; 
GridView1.DataSource = ds; 
GridView1.DataBind(); 
conn.Close();

DataSet

DataSet è una rappresentazione di dati presente in memoria composta da una collezione di DataTables con le relazione tra le tabelle. Una volta caricati i dati la connessione al database può essere chiusa anche automaticamente. I DataSet per agire sui dati non necessitano di una connessione attiva con l’origine dati trattandosi di una rappresentazione dei dati coerente indipendente dall’origine dati stessa.
E’ possibile selezionare dati da tabelle, creare viste e richiamare child rows basate su relazioni. DataSet offre funzionalità avanzate quali il salvataggio dei dati in XML e il caricamento di dati XML. DataSet necessita di un DataAdapter per la lettura dei dati dal database.  Il codice sarà inevitabilmente identico a quello indicato nel caso del NpgsqlDataAdapter:

...
conn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("Select ....", conn); 
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds) ; 
GridView1.DataSource = ds; 
GridView1.DataBind(); 
conn.Close();
 

DataTable

DataTable si comporta come DataSet con la differenza che rappresenta solo una singola tabella del database con righe (records/rows) e colonne ( columns/fields). Pertanto anche in questo caso non è necessaria una connessione attiva quando si opera su una DataTable ed è necessario un DataAdapter.

....
conn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("Select ....", conn); 
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt) ; 
GridView1.DataSource = da; 
GridView1.DataBind(); 
conn.Close();

Convertire un dataset in datareader

Per convertire un dataset in datareader è possibile utilizzare un istruzione del tipo seguente:

DataTableReader _dr = _ds.Tables[0].CreateDataReader();

Convertire un dataset in DataTable

Per convertire un dataset in datatable è possibile utilizzare un istruzione del tipo seguente:

DataTable _dt = _ds.Tables[0];
oppure
DataTable _dt = _ds.Tables["products"]

Risorse:

Upgrade postgresql 8.4.13 to postrgesl 9.2 centos 5

postgresql  vai a:  PostgreSQL nel blog 

Esempio di upgrade di postgresql dalla versione 8.4.13 alla versione 9.2.6 in Centos 5.8.  L’upgrade di versione necessita della fase di dump/restore oppure dell’utilizzo di pg_upgrade ( questo dalla versione 9.0) per consentire la migrazione della base dati alla nuova versione.  Per poter utilizzare il pg_update deve essere supportata l’esecuzione in parallelo di postgresql come avviene in debian o Centos 6. Centos 5 putroppo non la supporta pertanto sarà necessario utilizzare il dump/restore.

Creare una directory di backups, procedere al dump degli oggetti globali (roles e tablespaces) e di tutto il server, volendo si possono salavare in automatico i singoli db:

mkdir /home/pgsqlbck
chown postgres:postgres /home/psqlbck
su - postgres
pg_dumpall --globals-only > /home/pgsqlbck/dump-data_globals.sql 
pg_dumpall > /home/pgsqlbck/dump-data_alldb.sql
exit

I singoli db di postgresql 8.4 possono essere copiati utilizzando lo script nel link di seguito

Script per il backup dei database di postgresql

Fermiamo il servver postgresql

service postgresql stop
Visto che si tratta di upgrade di versione con cambi nella struttura dei dati possiamo conservare la directory dei dati di PostreSQL /var/lib/pgsql/data oppure al termine dell’upgrade rimuoverla

Per installare la nuova versione di postgresql utilizziamo  il repository yum per rpm. Nella pagina sotto  linkata sono disponibili le varie combinazioni di distribuzione e versione postgresql

PostgreSQL RPM Repository (with Yum)

Installiamo il repository di postgresql 9.2 per  centos 5 – i386

cd /usr/local/src
wget http://yum.pgrpms.org/9.2/redhat/rhel-5-i386/pgdg-centos92-9.2-6.noarch.rpm
rpm -ivh pgdg-centos92-9.2-6.noarch.rpm

Adesso escludiamo postgrsql dal processo standard di update dei pacchetti editando il file etc/yum.repos.d/CentOS-Base.repo aggiungendo la riga

exclude=postgresql*'

nelle sezioni [base] [updates]

ad esempio nella sezione base il risultato sarà del tipo:

[base]                                                                                         
name=CentOS-$releasever - Base 
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os 
gpgcheck=1               
...
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5   
exclude=postgresql*

Controlliamo i pacchetti disponibili

yum list | grep ‘postgresql’

nella lista saranno presenti pacchetti  postgres84 versione installata e i pacchetti della versione 92  di postgresql

postgresql84.i386                        8.4.13-1.el5_8                installed
postgresql84-contrib.i386                8.4.13-1.el5_8                installed
.....
postgresql92.i386                        9.2.2-1PGDG.rhel5             pgdg92   
postgresql92-contrib.i386                9.2.2-1PGDG.rhel5             pgdg92   
postgresql92-debuginfo.i386              9.2.2-1PGDG.rhel5             pgdg92

adesso rimuoviamo la versione precedente postgresql84

yum remove postgresql84*

installiamo la versione postgresql92

yum install postgresql92 postgresql92-server postgresql92-contrib postgresql92-libs

inizializziamo la base dati e avviamo il server postgresql-9.2

service postgresql-9.2 initdb

service postgresql-9.2 start

le basi dati di postgresql in Cenrtos sono localizzate in /var/lib/psql

:</var/lib/pgsql>$ ls -lhG
drwx------ 4 postgres 4.0K Dec 28 12:20 9.2
drwx------ 12 postgres 4.0K Dec 28 11:21 data

/data per il postgresql base e ovviamente /9.2 per la versione che si sta installando

su - postgres
psql < /home/pgbck/dumpalldb.sql

Ripristinare le modifiche ai files di configurazione /var/lib/pgsql/data/*.conf
in particolare postgresql.conf e pg_hba.conf

il file pg_hba.conf con le vecchie impostazioni relative alla autenticazione dei client, cioè il file che controllare quale host accede è a che cosa, può essere copiato dal precedente cluster che era stato rinominato:

cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/9.2/data/pg_hba.conf

per essere in linea con le nuove caratteristiche di postgresql 9.2 appendiamo il seguente nuovo blocco commentato, presente di default nel file pg_hba.conf della versione 9.2

# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident

La modifica può essere apportata utilizzando echo con comandi riportati di seguito. Possiamo usare tail -f pg_hba.conf su altro temrinale per seguire le modifiche in real time apportate a pg_hba.conf

:
cd /var/lib/pgsql/9.2/data
su postgres
echo '# Allow replication connections from localhost, by a user with the' >> pg_hba.conf 
echo '# replication privilege.' >> pg_hba.conf
echo '#local   replication     postgres                                peer' >> pg_hba.conf
echo '#host    replication     postgres        127.0.0.1/32            ident' >> pg_hba.conf 
echo '#host    replication     postgres        ::1/128                 ident' >> pg_hba.conf

possiamo anche modificare il permesso ident in peer della condizione

:
# TYPE  DATABASE        USER            ADDRESS                 METHOD                                                               

# "local" is for Unix domain socket connections only                                                                                 
local   all             all                                     ident

in

:                                                                            
local   all             all                                     peer 

riavviamo

service postgresql-9.1 restart

controlliamo il risultato scorrendo la lista dei db importati

su - postgres

vacuumdb --all --analyze-only
psql
\l

controlliamo e Impostiamo l’avvio automatico e il runlevel per il servizio postgresql 9.2

$ chkconfig --list | grep postgresql*
postgresql-9.2 	0:off	1:off	2:off	3:off	4:off	5:off	6:off

ora impostiamo l’avvio automatico con

chkconfig --level 35 postgresql-9.2 on

Altri post e risorse: