Check Sql Server 2000/2005/2008

giovedì 12 maggio 2011 - 16.43

gsflash80 Profilo | Junior Member

Buon pomeriggio a tutti, ora devo fare il CD di installazione con la cartella dove contengono i file di scripts SQL.
Ma vorrei sapere se è possibile di fare il check tipo come if sql 2000, else sql 2005 else 2008, così farei in un unico file, invece di dividere 3 file create table.

ad esempio
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

IF SERVERPROPERTY('productversion') = '10.0.16......'
PRINT "E' SERVER 2008" oppure con i codici per 2008
ELSE
IF SERVERPROPERTY('productversion') = '9.0.....'
PRINT "E' SERVER 2005" oppure con i codici per 2005
ECC...


Grazie
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

lbenaglia Profilo | Guru

>Ma vorrei sapere se è possibile di fare il check tipo come if
>sql 2000, else sql 2005 else 2008, così farei in un unico file,
>invece di dividere 3 file create table.

Ciao,

Intendi conoscere la versione dell'istanza alla quale ti stai autenticando?
In questo caso puoi ricorrere alla funzione SERVERPROPERTY specificando quale proprietà intendi recuperare.
http://msdn.microsoft.com/it-it/library/ms174396.aspx

Ad esempio:

SELECT SERVERPROPERTY('Edition') AS Edition , SERVERPROPERTY('ProductVersion') AS ProductVersion , SERVERPROPERTY('ProductLevel') AS ProductLevel; /* Output: Edition ProductVersion ProductLevel --------------------------- --------------- ------------- Developer Edition (64-bit) 10.0.4000.0 SP2 (1 row(s) affected) */

Potresti utilizzare 'ProductVersion' per capire la versione di SQL Server (8.0 SQL Server 2000, 9.0 SQL Server 2005, 10.0 SQL Server 2008, 10.5 SQL Server 2008 R2).

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

gsflash80 Profilo | Junior Member

ho già fatto questo, ma per fare IF come dovrei mettere?

ho provato in questo modo:

declare @check_versione varchar(200)

SET @check_versione = (SELECT SERVERPROPERTY('productversio')
IF @check_versione = '10.0.1600.22'
print '''e sql server 2008!!'''
create table......
ELSE
IF @check_versione = '9......'
PRINT 'sql server 2005'
create table ......
END
END

ovviamente non va bene, ma ce la possibilità di fare il LIKE cioè prendere solo tre righe 10....

per me è importante questo perchè durante lo create, dovrei modificare alcuni tipi di dati che tra sql server 2000 e 2005 e 2008 hanno dei diversi...
grazie

----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

gsflash80 Profilo | Junior Member

oppure che cosa pensi su questo?

IF LEFT(CAST(SERVERPROPERTY('ProductVersion') As Varchar),1)='8'
BEGIN
PRINT 'SQL 2000'
END
IF LEFT(CAST(SERVERPROPERTY('ProductVersion') As Varchar),1)='9'
BEGIN
PRINT 'SQL 2005'
END
IF LEFT(CAST(SERVERPROPERTY('ProductVersion') As Varchar),1)='10'
BEGIN
PRINT 'SQL 2008'
END

ma non mi risulta nel "messagge"
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

gsflash80 Profilo | Junior Member

tutto a posto, HO RISOLTO.
Vi ringrazio lo stesso.
Ho usato in questo modo:

IF LEFT(CAST(SERVERPROPERTY('ProductVersion') As Varchar),1)='8'
BEGIN
PRINT 'SQL 2000'--Allora inizia a creare i tipi dati di Sql2000
END
IF LEFT(CAST(SERVERPROPERTY('ProductVersion') As Varchar),1)='9'
BEGIN
PRINT 'SQL 2005'--Allora inizia a creare i tipi dati di Sql2005
END
IF LEFT(CAST(SERVERPROPERTY('ProductVersion') As Varchar),2)='10'
BEGIN
PRINT 'SQL 2008'--Allora inizia a creare i tipi dati di Sql2008
END

prima non si vedeva perchè mi trovo nel sql2008 e ho dovuto mettere Varchar),2) perchè sql 2008 è la versione 10 e quindi bisogna mettere 2, non 1
oppure sarebbe meglio varchar 4, così metto 10.0, 10.5, ecc o non vale la pena?

Buona serata

N.B.= non trovo il pulsante "accetta" perchè ho risolto.... credo che chi ha aperto, non potrà cliccare "accetta" giusto?
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5