Microsoft SQLServer su Linux

Microsoft SQLServer <3 Linux

Introduzione

E’ di questi giorni l’annuncio dell’uscita della preview pubblica di Microsoft SQLServer su Linux, per l’esattezza su Red Hat Enterprise Linux 7.2 e Ubuntu Linux 16.04 (a breve anche su SUSE Linux Enterprise Server v12 SP2.

Era nell’aria da tempo, da quando Microsoft aveva dato l’annuncio di lavorare al porting ed è chiaramente una mossa per insidiare il mercato di Oracle sul terreno in cui domina incontrastato.

Nella fattispecie, andiamo a vedere nel dettaglio come installare SQLServer su Linux, per l’esattezza su distribuzione Red Hat.

Per effettuare questa prova, ho configurato una macchina virtuale CentOS 7 su Virtual Box (tralascio volutamente di illustrare questo passaggio, in quanto è strettamente legato al virtualizzatore utilizzato e, soprattutto, non è attinente all’argomento trattato nell’articolo).

[root@sqlserver ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE=NAME="cpe:/o:centos:centos:/"
HOME_URL="https://www.centos.org"
BUG_REPORT_URL="https://bug.centos.org"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

[root@sqlserver ~]#

Installazione di Microsoft SQLServer

Per l’installazione e la configurazione, ho seguito i passi descritti nel tutorial pubblicato da Microsoft, tranne quello relativo al firewall, perché tanto non intendevo collegarmi da client Windows tramite Microsoft Management Studio, che è free e scaricabile da qui.

A favore dei meno pratici di ambienti Unix e Linux, cercherò di descrivere in maniera chiara i vari passaggi, mostrando l’intero output dei comandi eseguiti.

Repository

Per prima cosa, è necessario configurare il repository di Microsoft SQLServer.

[root@sqlserver ~]# curl https://packages.microsoft.com/config/rhel/7/mssql-serv
er.repo > /etc/yum.repos.d/mssql-server.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   220  100   220    0     0     96      0  0:00:02  0:00:02 --:--:--    96
[root@sqlserver ~]#

Installazione pacchetti

Una volta eseguito il punto precedente, possiamo scaricare ed installare i pacchetti.

[root@sqlserver ~]# yum install -y mssql-server
Loaded plugins: fastestmirror
packages-microsoft-com-mssql-server                      | 2.9 kB     00:00
packages-microsoft-com-mssql-server/primary_db             | 2.4 kB   00:00
Loading mirror speeds from cached hostfile
 * base: mi.mirror.gar.it
 * extras: mi.mirror.gar.it
 * updates: mi.mirror.gar.it
Resolving Dependencies
--> Running transaction check
---> Package mssql-server.x86_64 0:14.0.1.246-6 will be installed
--> Processing Dependency: bzip2 for package: mssql-server-14.0.1.246-6.x86_64
--> Processing Dependency: gdb for package: mssql-server-14.0.1.246-6.x86_64
--> Running transaction check
---> Package bzip2.x86_64 0:1.0.6-13.el7 will be installed
---> Package gdb.x86_64 0:7.6.1-8.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package       Arch    Version      Repository                             Size
================================================================================
Installing:
 mssql-server  x86_64  14.0.1.246-6 packages-microsoft-com-mssql-server   138 M
Installing for dependencies:
 bzip2         x86_64  1.0.6-13.el7 base                                   52 k
 gdb           x86_64  7.6.1-80.el7 base                                  2.4 M

Transaction Summary
================================================================================
Install  1 Package (+2 Dependent packages)

Total download size: 140 M
Installed size: 145 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/bzip2-1.0.6-13.el7.x86_64.rpm: He
ader V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for bzip2-1.0.6-13.el7.x86_64.rpm is not installed
(1/3): bzip2-1.0.6-13.el7.x86_64.rpm                       |  52 kB   00:00
(2/3): gdb-7.6.1-80.el7.x86_64.rpm                         | 2.4 MB   00:03
warning: /var/cache/yum/x86_64/7/packages-microsoft-com-mssql-server/packages/ms
sql-server-14.0.1.246-6.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID be122
9cf: NOKEY
Public key for mssql-server-14.0.1.246-6.x86_64.rpm is not installed
(3/3): mssql-server-14.0.1.246-6.x86_64.rpm                | 138 MB   03:04
--------------------------------------------------------------------------------
Total                                              778 kB/s | 140 MB  03:04
Retrieving key from https://packages.microsoft.com/keys/microsoft.asc
Importing GPG key 0xBE1229CF:
 Userid     : "Microsoft (Release signing) <gpgsecurity@microsoft.com>"
 Fingerprint: bc52 8686 b50d 79e3 39d3 721c eb3e 94ad be12 29cf
 From       : https://packages.microsoft.com/keys/microsoft.asc
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org >"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-2.1511.el7.centos.2.10.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : bzip2-1.0.6-13.el7.x86_64                                    1/3
  Installing : gdb-7.6.1-80.el7.x86_64                                      2/3
  Installing : mssql-server-14.0.1.246-6.x86_64                             3/3

+-------------------------------------------------------------------+
| Please run /opt/mssql/bin/sqlservr-setup to complete the setup of |
|                  Microsoft(R) SQL Server(R).                      |
+-------------------------------------------------------------------+

  Verifying  : mssql-server-14.0.1.246-6.x86_64                             1/3
  Verifying  : gdb-7.6.1-80.el7.x86_64                                      2/3
  Verifying  : bzip2-1.0.6-13.el7.x86_64                                    3/3

Installed:
  mssql-server.x86_64 0:14.0.1.246-6

Dependency Installed:
  bzip2.x86_64 0:1.0.6-13.el7             gdb.x86_64 0:7.6.1-80.el7

Complete!
[root@sqlserver ~]#

Da notare come l’installazione effettui un controllo delle dipendenze e provveda a scaricare i pacchetti necessari.

Configurazione SQLServer

Dopo l’installazione, procediamo a configurare Microsoft SQLServer.
In realtà, i passi riguardano soltanto l’accettazione della licenza e la configurazione delle password.

[root@sqlserver ~]# /opt/mssql/bin/sqlservr-setup
Microsoft(R) SQL Server(R) Setup

You can abort setup at anytime by pressing Ctrl-C. Start this program
with the --help option for information about running it in unattended
mode.

The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746388 and found
in /usr/share/doc/mssql-server/LICENSE.TXT.

Do you accept the license terms? If so, please type "YES": YES

Please enter a password for the system administrator (SA) account: 
Please confirm the password for the system administrator (SA) acount: 

Settimg system administrator (SA) account password...

Do you wish to start the SQL Server service now? [y/n]: y
Do you wish to enable SQL Server to start on boot= [y/n]: y
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.se
rvice to /usr/lib/systemd/system/mssql-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server-te
lemetry.service to /usr/lib/systemd/system/mssql-server-telemetry.service.

Setup completed successfully.
[root@sqlserver ~]#

Verifica stato

Una volta terminata l’installazione, controlliamo che Microsoft SQLServer funzioni correttamente.

[root@sqlserver ~]# systemctl status mssql-server -l
  mssql-server.service - Microsoft(R) SQL Server(R) Database Engine
   Loaded: loaded (/usr/lib/systemd/system/mssql-server.service: enabled: vendor
preset: disabled)
  Active: active (running) since Fri 2916-12-01 00:50:54 CET: 21min ago
Main PID: 2172 (sqlserver)
  CGroup: /system.slice/mysl-sqlserver,service
          ˫- 837 /opt/mssql/bin/sqlserver
          ˪-2180 /ops/mysql/bin/sqlserver

Dec 01 00:51:22 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:22.86 spid
6s      Polybase feature disabled.
Dec 01 00:51:25 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:22.86 spid
6s      Cleaning tempdb database.
Dec 01 00:51:25 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:24.18 spid
6s      Starting up database 'tempdb'.
Dec 01 00:51:25 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:25.52 spid
6s      The tempdb database has 1 data ile(s).
Dec 01 00:51:25 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:25.55 spid
20s     The Service Broker endpoint is in disabled or stopped state.
Dec 01 00:51:25 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:25.55 spid
20s     The Database Mirroring endpoint is in disabled orstopped state.
Dec 01 00:51:25 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:25.80 spid
20s     Service Broker manager has started.
Dec 01 00:51:25 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:51:25.81 spid
5s      Recovery is complete. This is an informational message only. No user act
ion is required
Dec 01 00:58:08 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:58:08.26 spid
51      Attempting to load library 'xplog70.dll' into memory. This is an informa
tional message only. No user action is required.
Dec 01 00:58:08 sqlserver.localdomain sqlservr[837]: 2016-11-30 23:58:08.26 spid
51      Using 'xplog70.dll' version '2016.140.01' to execute extended stored pro
cedure 'xp_msver'. This is an informational message only: no user action is requ
ired.
[root@sqlserver ~]#

Una dll su Linux? Decisamente strano.
Per chi non lo sapesse, le dll sono librerie dinamiche tipiche delle piattaforme Windows, mentre in ambito Linux hanno estensione “.so” (o “.so.n“, dove “n” è un numero, tipo “.so.5”)
Provando ad effettuare una semplice ricerca

[root@sqlserver ~]# strings /opt/mssql/bin/sqlservr > results.txt
[root@sqlserver ~]#

non troviamo traccia di quel nome, però possiamo riscontrare alcune stringhe interessanti.

/binn/sqlservr.exe
/var/opt/mssql/.system
/var/opt/mssql/log
/proc/sys/kernel/random/uuid
/proc/self/coredump_filter

In pratica, durante la configurazione di Microsoft SQLServer non abbiamo avuto necessità di modificare alcuni settaggi per il semplice motivo che sono inseriti staticamente nell’eseguibile.
Da notare quanto evidenziato, ovvero una “n” di troppo nel path e l’estensione tipica dei programmi in ambito Windows.

Repository tools e installazione

Il client necessario per collegarsi, ovvero sqlcmd, è presente in un altro repository.
Sto parlando, ovviamente, del client a riga comando, mentre ricordo che è comunque possibile utilizzare il Magamenet Studio, seguendo le indicazioni fornite da Microsoft in questa pagina.

[root@sqlserver ~]# curl https://packages.microsoft.com/config/rhel/7/prod.repo 
> /etc/yum.repos.d/msprod.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   193  100   193    0     0    185      0  0:00:01  0:00:01 --:--:--   185
[root@sqlserver ~]# yum install mssql-tools
Loaded plugins: fastestmirror
base                                                     | 3.6 kB     00:00
extras                                                   | 3.4 kB     00:00
packages-microsoft-com-mssql-server                      | 2.9 kB     00:00
packages-microsoft-com-prod                              | 2.9 kB     00:00
updates                                                  | 3.4 kB     00:00
packages-microsoft-com-prod/primary_db                     | 4.6 kB   00:05
Loading mirror speeds from cached hostfile
 * base: mi.mirror.garr.it
 * extras: mi.mirror.garr.it
 * updates: mi.mirror.garr.it
Resolving Dependencies
--> Running transaction check
---> Package mssql-tools.x86_64 0:14.0.1.246-1 will be installed
--> Processing Dependency: msodbcsql for package: mssql-tools-14.0.1.246-1.x86_6
4
--> Running transaction check
---> Package msodbcsql.x86_64 0:13:0.1.0-1 will be installed
--> Processing Dependency: libodbcinst.so.2()(64bit) for package: msodbcsql-13.0
.1.0-1.x86_64
--> Running transaction check
---> Package unixODBC-utf16.x86_64 0:2.3.1-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch     Version        Repository                       Size
================================================================================
Installing:
 mssql-tools      x86_64   14.0.1.246-1   packages-microsoft-com-prod     249 k
Installing for dependencies:
 msodbcsql        x86_64   13.0.1.0-1     packages-microsoft-com-prod     3.8 M
 unixODBC-utf16   x86_64   2.3.1-1        packages-microsoft-com-prod     329 k

Transaction Summary
================================================================================
Install  1 Package (+2 Dependent packages)

Total dowload size: 4.4 M
Installed size: 4.4 M
Is this ok [y/d/N]: y
Dowloading packages:
(1/3): mssql-tools-14.0.1.246-1.x86_64.rpm                 | 249 kB   00:01
(2/3): unixODBC-utf16-2.3.1-1.x86_64.rpm                   | 329 kB   00:00
(3/3): msodbcsql-13.0.1.0-1.x86_64.rpm                     | 3.8 MB   00:07
--------------------------------------------------------------------------------
Total                                              639 kB/s | 4.4 MB  00:07
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : unixODBC-utf16-2.3.1-1.x86_64                                1/3
The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746838 and frond in
/usr/share/doc/msodbcsql/LICENSE.TXT . By entering 'YES',
you indicate that you accept the license terms.

Do you accept the licenseterms? (Enter YES or NO)
YES
  Installing : msodbcsql-13.0.1.0-1.x86_64                                  2/3
The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746949 and frond in
/usr/share/doc/mssql-tools/LICENSE.TXT . By entering 'YES',
you indicate that you accept the license terms.

Do you accept the licenseterms? (Enter YES or NO)
YES
  Installing : mssql-tools-14.0.1.246-1.x86_64                              3/3
  Verifying  : msodbcsql-13.0.1.0-1.x86_64                                  1/3
  Verifying  : unixODBC-utf16-2.3.1-1.x86_64                                2/3
  Verifying  : mssql-tools-14.0.1.246-1.x86_64                              3/3

Installed:
  mssql-tools.x86_64 0:14.0.1.246-1

Dependency Installed:
  msodbcsql.x86_64 0:13.0.1.0-1         unixODBC-utf16.x86_64 0:2.3.1-1

  Complete!
[root@sqlserver ~]#

Test di connessione e funzionamento

Ora che abbiamo tutti gli strumenti, necessari, colleghiamoci e muoviamo i primi passi con Microsoft SQL Server su Linux.

[root@sqlserver ~]# sqlcmd -S localhost -U sa
Password:
1> select @@version
2> go
                                                                                                                                                                                                                                                                                                
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------------------------------------
Microsoft SQL Server vNext (CTP1) - 14.0.1.246 (X64)
        Nov  1 2016 23:24:39
        Copyright (c) Microsoft Corporation
        on Linux (CentOS Linux 7 (Core))                                                                                                        

(1 rows affected)
1> select name from sysdatabases order by name
2> go
name
--------------------------------------------------------------------------------
------------------------------------------------
master
model
msdb
tempdb

(4 rows affected)
1> CREATE DATABASE test;
2> GO
1> USE test;
2> GO
Changed database context to 'test'.
1> CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);
2> GO
1> INSERT INTO inventory VALUES (1, 'banana', 150);
2> INSERT INTO inventory VALUES (2, 'orange', 154);
3> GO

(1 rows affected)

(1 rows affected)
1> SELECT * FROM inventory WHERE quantity > 152;
2> GO
id          name                                               quantity
----------- -------------------------------------------------- -----------
          2 orange                                                     154

(1 rows affected)
1> 

Dopo questo primo esercizio suggerito da Microsoft, andiamo ad esplorare un attimo il database appena creato

1> USE master;
2> GO
Changed database context to 'master'.
1> select [Type] = CONVERT(VARCHAR(10), type_desc),
2> [Path] = CONVERT(VARCHAR(40), physical_name),
3> [MB] = (size*8)/1024
4> FROM sys.master_files
5> WHERE DB_NAME(database_id) = 'test';
6> GO
Type       Path                                     MB
---------- ---------------------------------------- -----------
ROWS       C:\var\opt\mssql\data\test.mdf                     8
LOG        C:\var\opt\mssql\data\test_log.ldf                 8

(2 rows affected)
1> 

Come balza agli occhi, il path risulta “in stile Windows”.
Per chi non fosse abituato a lavorare in ambienti *nix, il path non contiene il nome del device drive (in questo caso “C:”) e utilizza lo slash(“/”) al posto del back slash (“\”).

1> sp_detach_db 'test';
2> GO
1> select [Name] = CONVERT(VARCHAR(20), name) from sysdatabases order by name;
2> GO
Name
--------------------
master
model
msdb
tempdb

(4 rows affected)
1> select [Type] = CONVERT(VARCHAR(10), type_desc),
2> [Path] = CONVERT(VARCHAR(40), physical_name),
3> [MB] = (size*8)/1024
4> FROM sys.master_files
5> WHERE DB_NAME(database_id) = 'test';
6> GO
Type       Path                                     MB
---------- ---------------------------------------- -----------
ROWS       /var/opt/mssql/data/test.mdf                      8
LOG        /var/opt/mssql/data/test_log.ldf                  8

(2 rows affected)
1> sp_detach_db 'test';
2> go
1> sp_attach_db 'test','C:\var\opt\mssql\data\test.mdf','C:\var\opt\mssql\data\test_log.ldf';
2> go
1> select [Type] = CONVERT(VARCHAR(10), type_desc),
2> [Path] = CONVERT(VARCHAR(40), physical_name),
3> [MB] = (size*8)/1024
4> FROM sys.master_files
5> WHERE DB_NAME(database_id) = 'test';
6> GO
Type       Path                                     MB
---------- ---------------------------------------- -----------
ROWS       C:\var\opt\mssql\data\test.mdf                     8
LOG        C:\var\opt\mssql\data\test_log.ldf                 8

(2 rows affected)
1> quit
[root@sqlserver ~]#

Come possiamo notare, il comando sp_attach_db accetta come parametri i path in entrambi i formati.

C’è ancora il tempo per un’ultima prova, prima di trarre le conclusioni di questa esperienza.

[root@sqlserver ~]# sqlcmd -S localhost -E
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : SSPI Provider: No Kerbe
ros credentials available.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Cannot generate SSPI co
ntext.
[root@sqlserver ~]#

Al momento, Microsoft non ha pubblicato documentazione su come configurare questa tipologia di accesso.
Piccola curiosità: il driver ODBC installato risulta essere successivo di ben 2 versioni rispetto a quello scaricabile dal sito Microsoft.

Conclusioni

Questa installazione di Microsoft SQLServer è un primo rilascio, quindi è normale che si riscontrino parecchi limiti sull’amministrazione del database.
Come evidenziato dalla prova, al momento si tratta soprattutto di un porting “in stile Wine”, ovvero con un layer che traduce i comandi impartiti dall’eseguibile al sistema operativo Windows (come appunto fa Wine) in modo che siano compresi da Linux.
Tra i difetti di gioventù, il maggiore è sicuramente la mancanza di documentazione, ma è presumibile che tale carenza sia colmata nel tempo.

Per chi abbia voglia di sperimentare senza dover rinunciare alle interfacce grafiche di casa Microsoft, segnalo la possibilità di utilizzare la mssql extention di Visual Studio Code.

Buon divertimento.


© Microsoft SQLServer™ (“SQLServer”), Management Studio™ e Visual Studio Code™ sono marchi registrati da Microsoft Corporation™ (“Microsoft”)
© Oracle™ e Oracle VM VirtualBox™ (“VirtualBox”) sono marchi registrati da Oracle Corporation™ (“Oracle”)
© Red Hat Enterprise Linux™ (“RHEL”) e CentOS Project™ (“CentOS”) sono marchi registrati da Red Hat, Inc. (“Red Hat”)
© Ubuntu Linux™ (“Ubuntu”) è un marchio registrato da Canonical Ltd.
© SUSE Linux Enterprise Server™ (“SUSE”) è un marchio registrato da SUSE

ottobre 9, 2018

Tag:, ,
  • Pingback: cytotmeds.com
  • Pingback: edegra dapoxetine
  • Pingback: stromectol 100mg
  • Pingback: iverm 6 mg
  • Pingback: madribet
  • Pingback: meritking
  • Pingback: meritking
  • Pingback: meritroyalbet
  • Pingback: eurocasino
  • Pingback: perabet
  • Pingback: ivermectin nz
  • Pingback: Anonimo
  • Pingback: Anonimo
  • Pingback: ivermectin uk
  • Pingback: stromectol price
  • Pingback: brand cialis
  • Pingback: elexusbet
  • Pingback: meritroyalbet
  • Pingback: meritroyalbet
  • Pingback: tadalafil buy
  • Pingback: ivermectin online
  • Pingback: tadalafila
  • Pingback: viagra jokes
  • Pingback: tadalafil powder
  • Pingback: baymavi
  • Pingback: tadalafil powder
  • Pingback: cialis price
  • Pingback: ivermectin use
  • Pingback: cialis tablets
  • Pingback: cialis everyday
  • Pingback: tadalafil india
  • Pingback: tombala siteleri
  • Pingback: cialis alternative
  • Pingback: child porn
  • Pingback: child porn
  • Pingback: viagra connect usa
  • Pingback: cialis walmart
  • Pingback: ivermectin bnf
  • Pingback: cheap tadalafil
  • Pingback: cheap cialis india
  • Pingback: stromectol tablets
  • Pingback: stromectol uk
  • Pingback: ivermectin 12mg
  • Pingback: meritroyalbet
  • Pingback: meritking
  • Pingback: trcasino
  • Pingback: lasix price india
  • Pingback: iver mectin
  • Pingback: eurocasino
  • Pingback: ivermectin monash
  • Pingback: child porn
  • Pingback: lucky land
  • Pingback: ivermectin 5 mg
  • Pingback: ivermectin 500ml
  • Pingback: ivermectin topical
  • Pingback: child porn
  • Pingback: ivermectin sale
  • Pingback: otc ivermectin
  • Pingback: stromectol price
  • Pingback: bahis siteleri
  • Pingback: durvet ivermectin
  • Pingback: 1terminating
  • Pingback: 3stopped
  • Pingback: ivermectin dengue
  • Pingback: cialis or viagra
  • Pingback: A片
  • Pingback: kamagra gold
  • Pingback: vidalista 60
  • Pingback: grandpashabet
  • Pingback: grandpashabet
  • Pingback: homepage besuchen
  • Lascia un commento