2013-08-14 16 views
7

C'è un modo per trovare le stored procedure in modo da poter copiare i file sul mio desktop?Come eseguire lo script delle stored procedure sui file?

+3

Vuoi dire script fuori dagli SP? – christiandev

+0

Sono memorizzati nel database - non sono nei loro file. –

+0

Utilizzare [Genera procedura guidata SQLServer Script] (http://technet.microsoft.com/en-us/library/ms186996 (v = sql.105) .aspx) in SSMS per eseguire lo script delle stored procedure. – AgentSQL

risposta

28

stored procedure non vengono memorizzati come file, sono memorizzate come metadati ed esposti a noi peones (grazie Michael per il promemoria su sysschobjs) nelle viste del catalogo sys.objects, sys.procedures, sys.sql_modules, ecc una procedura individuale memorizzata , è possibile interrogare la definizione direttamente utilizzando queste viste (soprattutto sys.sql_modules.definition) o utilizzando la funzione OBJECT_DEFINITION() come Nicholas pointed out (sebbene la sua descrizione di syscomments non sia completamente accurata).

Per estrarre tutte le stored procedure in un singolo file, un'opzione potrebbe essere aprire Esplora oggetti, espandere your server > databases > your database > programmability ed evidenziare il nodo stored procedures. Quindi premere F7 (Visualizza>Object Explorer Details). Sul lato destro, seleziona tutte le procedure che desideri, quindi fai clic con il pulsante destro del mouse, script stored procedure as > create to > file. Questo produrrà un singolo file con tutte le procedure che hai selezionato. Se si desidera un singolo file per ciascuna procedura, è possibile utilizzare questo metodo selezionando solo una procedura alla volta, ma potrebbe essere noioso. È inoltre possibile utilizzare questo metodo per eseguire script su tutte le procedure relative alla contabilità in un unico file, tutte le procedure relative alla contabilità in un altro file, ecc.

Un modo più semplice per generare esattamente un file per stored procedure consiste nell'utilizzare lo Generate Scripts wizard - ancora una volta, partendo da Object Explorer, fai clic con il pulsante destro del mouse sul tuo database e scegli Tasks > Generate scripts. Scegli Select specific database objects e controlla la casella Stored Procedures di livello superiore. Fare clic su Avanti. Per l'uscita scegliere Save scripts to a specific location, Save to file, e Single file per object.

Questi passaggi possono variare leggermente a seconda della versione di SQL Server Management Studio.

4

Le stored procedure non vengono "memorizzate" come file separato che è possibile consultare e leggere senza il database. È memorizzato nel database a cui appartiene in una serie di tabelle di sistema. La tabella che contiene la definizione è denominata [sysschobjs] che non è nemmeno accessibile (direttamente) a nessuno di noi utenti finali.

Per recuperare la definizione di queste stored procedure dal database, mi piace usare questa query:

select definition from sys.sql_modules 
where object_id = object_id('sp_myprocedure') 

Ma mi piace la risposta di Aaron. Dà altre buone opzioni.

1

Dipende dalla versione di SQL Server in esecuzione. Per le versioni recenti, il codice sorgente per le stored procedure è disponibile tramite la vista di sistema sys.sql_modules, ma un modo più semplice per ottenere l'origine per una stored procedure o una funzione definita dall'utente (UDF) è utilizzando la funzione di sistema object_definition() (la definizione di vista di sys.ssql_modules usa):

select object_definition(object_id('dbo.my_stored_procedure_or_user_defined_function')) 

Nelle versioni più vecchie, stored procedure e UDF era disponibile tramite la vista ormai deprecato vista di sistema sys.syscomments.

E ancora le vecchie versioni di SQL Server, era disponibile tramite la tabella di sistema `dbo.syscomments'

Dovrebbe essere notdd che a seconda del vostro accesso e come il database è configurato, la fonte non può essere disponibile per te o potrebbe essere crittografato, il che non lo rende particolarmente utile.

È anche possibile ottenere la sorgente a livello di programmazione utilizzando SMO (oggetti di gestione server Sql). http://technet.microsoft.com/en-us/library/hh248032.aspx

+0

'syscomments' era valido nel 2000, ma non era disponibile come' sys.syscomments' fino a quando SQL Server 2005. 'sys.sql_modules' è disponibile da SQL Server 2005, quindi non c'era spazio tra l'uso di' dbo.syscomments 'e passa a' sys.sql_modules'. –

Problemi correlati