14 Stimmen

Wie kann ich alle gespeicherten Prozeduren von einer bestimmten Datenbank herunterladen?

Ich muss alle gespeicherten Prozeduren aus einer bestimmten Datenbank herunterladen.

Es gibt etwa 130 gespeicherte Prozeduren, und ich kann es manuell tun, indem ich jede einzelne als Datei speichere.

Gibt es aber eine automatische Option, um alle herunterzuladen?

35voto

marc_s Punkte 701497

1) Öffnen Sie SQL Server Management Studio 2) Wählen Sie Ihre Datenbank im Objekt-Explorer aus 3) Klicken Sie mit der rechten Maustaste > Aufgaben > Skripte generieren

Bildbeschreibung hier eingeben

4) Wählen Sie nur gespeicherte Prozeduren aus, die skriptiert werden sollen

Bildbeschreibung hier eingeben

5) Folgen Sie dem Assistenten durch die Schritte; auf der nächsten Seite wählen Sie die Option Eine Datei pro Objekt und definieren Sie ein Verzeichnis, in dem diese Dateien abgelegt werden sollen:

Bildbeschreibung hier eingeben

Mit diesen Optionen erhalten Sie eine Datei pro gespeicherter Prozedur, die im Verzeichnis Ihrer Wahl gespeichert ist.

6voto

Code Magician Punkte 22181

Sie können dies im Verwaltungsstudio tun - Klicken Sie mit der rechten Maustaste auf die Datenbank, die Sie möchten, und wählen Sie Aufgaben -> Skripte generieren -> gehen Sie durch den Assistenten. Sie können dann nur gespeicherte Prozeduren usw. angeben.

Sie können auch ein Skript wie dieses verwenden:

SET NOCOUNT ON
DECLARE @Test TABLE (Id INT IDENTITY(1,1), Code VARCHAR(MAX))

INSERT INTO @Test (Code)
SELECT 'IF object_ID(N''[' + schema_name(schema_id) + '].[' + Name + ']'') IS NOT NULL
          DROP PROCEDURE ['+ schema_name(schema_id) +' ].[' + Name + ']' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) +CHAR(10) +
           OBJECT_DEFINITION(OBJECT_ID) + CHAR(13) +CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
            FROM sys.procedures
            WHERE is_ms_shipped = 0

DECLARE @lnCurrent INT, @lnMax INT
DECLARE @LongName VARCHAR(MAX)

SELECT @lnMax = MAX(Id) FROM @Test
SET @lnCurrent = 1
WHILE @lnCurrent <= @lnMax
      BEGIN
            SELECT @LongName = Code FROM @Test WHERE Id = @lnCurrent
            WHILE @LongName <> ''
               BEGIN
                   PRINT LEFT(@LongName,8000)
                   SET @LongName = SUBSTRING(@LongName, 8001, LEN(@LongName))
               END
            SET @lnCurrent = @lnCurrent + 1
      END

Sie können auch Umschalt+klicken, um alle gespeicherten Prozeduren auszuwählen, und dann mit der rechten Maustaste darauf klicken und sie in eine Datei skripten.

-1voto

whihathac Punkte 1701

Sie können auch DB pro (Visual Studio-Tools für Datenbanken) verwenden, um dies zu tun. Für weitere Informationen überprüfen Sie dies - https://www.mssqltips.com/sqlservertip/2971/creating-a-visual-studio-database-project-for-an-existing-sql-server-database/

Bearbeitet: Aktualisiert den veralteten Link.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X