Parametri su SCRIPT SQL Server

domenica 30 dicembre 2012 - 15.29
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  SQL Server 2008 R2

86Marco Profilo | Expert

Salve ragazzi e buona domenica.
Per la mia applicazione web sto creando dei script per la creazione di un database.

Questo che segue è lo script per la creazione di un database chiamato 'Pippo'.
Questo script me lo ha sviluppato SQL Server dopo aver cliccato su Attività -> Genera Script.

Ora se eseguo da VS questo script correttamente su SQL mi crea il DB Pippo. Ma come posso fare per parametrizzare la variabile Pippo e poterla personalizzare con un testo specifico?

Cioè io vorrei avere una TextBox in cui inserisco il nome del database e questo testo venga sostituito a Pippo sullo script.

E' possibile farlo?
Ho provato a lavorare con i parametri ma non ci riesco.

Aiutatemi please :(

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

alx_81 Profilo | Guru

>Salve ragazzi e buona domenica.
ciao

>Cioè io vorrei avere una TextBox in cui inserisco il nome del
>database e questo testo venga sostituito a Pippo sullo script.
>E' possibile farlo?
certo, dovrai lavorare con le stringhe.
Al posto dei punti in cui vuoi parametrizzare, metti dei segna posto, tipo (prendo una parte del tuo script):

"CREATE DATABASE <NOMEDATABASE> ..."

A questo punto, siccome la stringa sarà o "schiantata nel codice" (te lo sconsiglio) o salvata su un file di config (o un tuo semplice file .sql o di testo), dovrai leggerla in una variabile e fare una bella replace:

TuaVarStringa.Replace("<NOMEDATABASE>", "Pippo")
Quella stringa poi sarà il comando da lanciare con ADO.Net.

Se invece vuoi fare una stored procedure, il discorso cambia. Innanzitutto non puoi usare i GO, e poi dovrai definire dei parametri con la sintassi @nomeparam come segue:
CREATE PROCEDURE nomeschema.nomeprocedura @nomeDB varchar(50) AS BEGIN SET NOCOUNT ON; DECLARE @sqlCreate nvarchar(MAX) = 'CREATE DATABASE ' + @nomeDB + ' ...'; EXEC sp_executesql @sqlCreate; END;

decidi tu se fare una sp che poi lancia sql dinamico o se fare un sql stringa salvato in un file per poi eseguirlo direttamente da ado.net.
La via delle sp ti dà un po' di modularità, ma siccome è una creazione di un db, forse opterei per la soluzione ado.net parametrizzato da file e stringa
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

86Marco Profilo | Expert

Grazie Alex,
ho risolto proprio come dici tu :)

alx_81 Profilo | Guru

>Grazie Alex,
>ho risolto proprio come dici tu :)
eheheh, risposta a posteriori :)
Per cortesia, accetta uno dei post così chiudiamo il thread.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

86Marco Profilo | Expert

Ciao Alex, ho accettato la tua risposta, posso fare il maleducato? :)

Posso invitiarti a leggere un'altra mia discussione ed avere un tuoi aiuto :)? http://www.dotnethell.it/forum/messages.aspx?ThreadID=42321

Grazie
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