1日1時T-SQL:ストアド・プロシージャ・テキストのエクスポート



  
  
  
  
  1. DECLARE @ServerName     NVARCHAR(256);  
  2. DECLARE @UserName       NVARCHAR(256);  
  3. DECLARE @Password       NVARCHAR(256);  
  4. DECLARE @DatabaseName   NVARCHAR(256);  
  5. DECLARE @ExecString     NVARCHAR(1024);  
  6.  
  7. SET @ServerName = N'ServerName\InstenceName';  
  8. SET @UserName = N'UserName';  
  9. SET @Password = N'Password';  
  10. SET @DatabaseName = N'DatabaseName';  
  11.  
  12. SELECT 
  13.     ROW_NUMBER()   
  14.         OVER(ORDER BY B.[name], A.[nameASC, A.[modify_date] DESC)  
  15.                                                 AS  [ID],  
  16.     A.[object_id]                               AS  [ObjectID],  
  17.     B.[name]                                    AS  [SchemaName],  
  18.     A.[name]                                    AS  [ProcedureName],  
  19.     N'[' + B.[name] + N'].[' + A.[name] + N']'  AS  [FullProcedureName],  
  20.     A.[create_date]                             AS  [CreateDate],  
  21.     A.[modify_date]                             AS  [ModifyDate],  
  22.     A.[type]                                    AS  [Type],  
  23.     A.[type_desc]                               AS  [TypeDescription]  
  24. INTO 
  25.     #Temp 
  26. FROM 
  27.     sys.procedures  AS  A  
  28. RIGHT   JOIN 
  29.     sys.schemas AS  B  
  30. ON 
  31.     A.[schema_id] = B.[schema_id]  
  32. WHERE 
  33.     A.[object_id] IS NOT NULL 
  34. ORDER   BY 
  35.     B.[name], A.[nameASC, A.[modify_date] DESC 
  36.  
  37. DECLARE @ID INT;  
  38. DECLARE @SchemaName     NVARCHAR(128);  
  39. DECLARE @ProcedureName  NVARCHAR(512);  
  40. DECLARE @ModifyDate     CHAR(8);  
  41.  
  42. DECLARE contact_cursor CURSOR FOR 
  43. SELECT 
  44.     [ID],  
  45.     [SchemaName],  
  46.     [ProcedureName],  
  47.     CONVERT(CHAR(8), [ModifyDate], 112) AS  [FlagModifyDate]  
  48. FROM    #Temp 
  49.  
  50. OPEN contact_cursor  
  51.  
  52. -- Perform the first fetch.  
  53. FETCH NEXT FROM contact_cursor  
  54. INTO 
  55.     @ID,  
  56.     @SchemaName,  
  57.     @ProcedureName,  
  58.     @ModifyDate  
  59.  
  60. -- Check @@FETCH_STATUS to see if there are any more rows to fetch.  
  61. WHILE @@FETCH_STATUS = 0  
  62. BEGIN 
  63.  
  64.     SET @ExecString =   
  65.        N'sqlcmd -S ' + @ServerName +   
  66.         N' -U ' + @UserName +   
  67.         N' -P ' + @Password +   
  68.         N' -d ' + @DatabaseName +   
  69.         N' -Q "exec sp_helptext ''' + @SchemaName + N'.' + @ProcedureName +   
  70.         N'''" -o D:\test\' + CAST(@ID AS NVARCHAR(64)) + '_' + @SchemaName + N'.' + @ProcedureName + N'_' + @ModifyDate + N'.sql'  
  71.       
  72.     PRINT   @ExecString  
  73.     EXEC xp_cmdshell @ExecString, no_output  
  74.       
  75.     FETCH NEXT FROM contact_cursor  
  76.     INTO 
  77.         @ID,  
  78.         @SchemaName,  
  79.         @ProcedureName,  
  80.         @ModifyDate  
  81. END 
  82.  
  83. CLOSE contact_cursor  
  84. DEALLOCATE contact_cursor  
  85. GO  
  86.  
  87. DROP    TABLE   #Temp 
  88. GO 

 
本文は“Fast”のブログから出て、転載をお断りします!