UGISS Community

Il sito della community dello User Group Italiano di SQL Server
Welcome to UGISS Community Sign in | Join | Help
in Search

Alessandro Alpi's blog

Parliamo di integration services e non solo..

[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


 

Comments

No Comments