SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2018

Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

[SSMS] La gestione dei template

SQL Server Management Studio ci offre la possibilità di utilizzare dei template predefiniti per la creazione e la modifica di oggetti. La lista dei template, accessibile dal Template Explorer, è veramente ampia. Eccone un'anteprima:



Come possiamo vedere vi sono molti modelli disponibili. Si possono modificare, se ne possono creare di nuovi. Vi è un'ampia libertà di movimento. In aggiunta abbiamo anche una lista dei template recentemente utilizzati dalla quale pescare i nostri preferiti.
Ma oltre alla lista, esiste la possibilità di scriverli "al volo" per utilizzarli subito, ad esempio, all'interno di uno script SQL. Prendendo spunto da uno dei tanti template disponibili sul Template explorer, notiamo il formato dei placeholder:

<nome_parametro, tipo_dati, valore>

nome_parametro
rappresenta il nome del parametro nello script.
tipo_dati
è il tipo di dati del parametro.
valore è il valore che sostituirà ogni occorrenza del parametro nello script.

Facciamo un semplice esempio. Ipotizziamo di dover creare uno script atto alla creazione di un database.
Vogliamo che il database sia formato da tre file (un mdf, un ldf ed un ndf) i cui nomi sono composti dal nome del database seguito da un suffisso, e da due FILEGROUP, PRIMARY e SECONDARY. Ecco un possible script, che va bene per ogni database:

CREATE DATABASE <NomeDB, stringa, > ON  PRIMARY
( NAME = N'<NomeDB, stringa, >_data', FILENAME = N'C:\Databases\<NomeDB, stringa, >_data.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ),
 FILEGROUP [SECONDARY]

( NAME = N'<NomeDB, stringa, >_user', FILENAME = N'C:\Databases\<NomeDB, stringa, >_user.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON

( NAME = N'<NomeDB, stringa, >_log', FILENAME = N'C:\Databases\<NomeDB, stringa, >_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO

EXEC dbo.sp_dbcmptlevel @dbname=N'<NomeDB, stringa, >', @new_cmptlevel=90
GO

IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC
<NomeDB, stringa, >.[dbo].[sp_fulltext_database] @action = 'disable'
end
GO
ALTER DATABASE <NomeDB, stringa, > SET ANSI_NULL_DEFAULT OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET ANSI_NULLS OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET ANSI_PADDING OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET ANSI_WARNINGS OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET ARITHABORT OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET AUTO_CLOSE OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET AUTO_CREATE_STATISTICS ON
GO

ALTER DATABASE <NomeDB, stringa, > SET AUTO_SHRINK OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET AUTO_UPDATE_STATISTICS ON
GO

ALTER DATABASE <NomeDB, stringa, > SET CURSOR_CLOSE_ON_COMMIT OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET CURSOR_DEFAULT  GLOBAL
GO

ALTER DATABASE <NomeDB, stringa, > SET CONCAT_NULL_YIELDS_NULL OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET NUMERIC_ROUNDABORT OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET QUOTED_IDENTIFIER OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET RECURSIVE_TRIGGERS OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET DATE_CORRELATION_OPTIMIZATION OFF
GO

ALTER DATABASE <NomeDB, stringa, > SET PARAMETERIZATION SIMPLE
GO

ALTER DATABASE <NomeDB, stringa, > SET  READ_WRITE
GO

ALTER DATABASE <NomeDB, stringa, > SET RECOVERY FULL
GO

ALTER DATABASE <NomeDB, stringa, > SET  MULTI_USER
GO

ALTER DATABASE <NomeDB, stringa, > SET PAGE_VERIFY CHECKSUM
GO

USE <NomeDB, stringa, >
GO

IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'SECONDARY') ALTER DATABASE <NomeDB, stringa, > MODIFY FILEGROUP [SECONDARY] DEFAULT
GO

Si puo notare che al posto di ogni nome database esiste un placeholder così formato:

<NomeDB, stringa, >

Come possiamo usarlo? Come lo sostituiamo? Innanzitutto fate attenzione ai percorsi e se non avete le cartelle, createle a priori, altrimenti avrete un errore.

1) Copiate lo script su management studio in una nuova query.
2) Premete CTRL+MIUSC+M (ho la versione in inglese di SSMS, quindi non garantisco sullo shortcut) oppure aprite il menu Query --> Specify Values for Template Parameters..
3) Riempite la form che vi appare con i valori desiderati:



Come potete notare la form riassume proprio la struttura definita nel placeholder <NomeDB, stringa, >.

4) Date l'ok ed eseguite la query.

Una volta creato il vostro template, potete aggiungerlo a quelli predefiniti di SQL Server, creando un nuovo modello direttamente dal template explorer.



Una volta creato, è sufficiente premere il destro sul template e selezionare Edit, creare il modello e salvare.
Nel caso in cui si debba reinstallare il client o aggiornare la versione, ricordate che i template sono accessibili Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell\Templates (SQL SERVER 2005 su sistema operativo in INGLESE, in italiano la cartella è Dati Aplicazioni).

Stay Tuned


Categoria: SQL Server 2005
domenica, 06 apr 2008 Ore. 16.56
Statistiche
  • Views Home Page: 600.685
  • Views Posts: 1.067.389
  • Views Gallerie: 641.173
  • n° Posts: 484
  • n° Commenti: 273



















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003