2011-11-16 33 views

cevap

16

1) Açık SQL Server Management Studio 2) Nesne Explorer 3) içinde veritabanı seçin Sağ sadece depolanmış prosedürleri Seç) Scripts

enter image description here

4 üret>> Görevler tıklayın dışarı komut dosyası için adımlarda sihirbaz sonra

enter image description here

5); Bir sonraki ekranda, seçeneği Single file per object almak ve nerede bu dosyaları koymak için bir dizin tanımlayın: bu seçenekler ile

enter image description here

, dilediğiniz dizinde saklanan saklı yordam başına bir dosya, olsun.

+0

Hey her bir SP için 130 ayrı dosya istiyorum :(bana sadece bir dosya veriyor – Neo

+0

@ashuthinks: nerede olursanız olun sihirbazdan geçerek adım adım - saklanan tüm işlemler için bir dosya isteyip istemediğinizi soracaktır. , ya da saklanan proc başına bir dosya, ve size nerede saklayacağınız sorulur ... –

+1

@ashuthinks: üçüncü ekran görüntüsüme bakın - bu sizin için ne arıyorsunuz ??? ** Nesne başına bir dosya ** ?? –

3

Bunu yönetim stüdyosunda yapabilirsiniz - İstediğiniz veritabanına sağ tıklayın ve görevleri seçin -> Komut dosyaları oluştur -> sihirbazdan gidin. Daha sonra sadece Ayrıca böyle bir komut dosyası kullanabilirsiniz

prosedürleri vb saklanır belirtebilirsiniz: kayıtlı tüm prosedürleri seçmek için tıklayın

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 

Ayrıca + shift ve daha sonra sağ tıklayın ve komut olabilir Onları bir dosyaya.

İlgili konular