Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сохранить текст процедур/функций в файл?  [new]
Oleg_SQL
Member

Откуда: от туда
Сообщений: 99
Здравствуйте.

Создал расписание с запуском процедуры копирования в архив текста процедур и функций с заданным интервалом (думаю так можно легко и быстро "откатится"). Можно конечно и отслеживать время изменения и архивировать только новое, но не это суть.
Все работает, только вот "большие" тексты (более 8000 символов) обрезаются.
Как это можно решить?


CREATE PROCEDURE dbo.up_zp_Sys_Bakup_FP
AS
	Set NoCount On

	Declare @FN varchar(50)
  Set @FN = NEWID()
  Set @FN = CONVERT(varchar(50),GetDate(),104)+'_'+CONVERT(varchar(50),GetDate(),108)
  Set @FN = REPLACE(@FN,':','')
  Set @FN = REPLACE(@FN,'-','') 
  Set @FN = REPLACE(@FN,'.','')    
  Set @FN = @FN+'.txt'
 	Declare @S varchar(1000) 


  Set @S = 'bcp "Select name,text from zrp.dbo.vSys_FuncProc_Text" queryout d:\Zarplata\Arh\Z_'+@FN+' -c -T -C RAW'
 	Exec	master..xp_cmdshell @S, no_output 
 	Set @S = 'd:\Zarplata\Arh\Arj.exe a -e d:\Zarplata\Arh\ArhFP_Zrp.arj d:\Zarplata\Arh\Z_'+@FN  
  Exec	master..xp_cmdshell @S, no_output 
 	Set @S = 'del d:\Zarplata\Arh\Z_'+@FN  
  Exec	master..xp_cmdshell @S, no_output 



  Set @S = 'bcp "Select name,text from kadri.dbo.vSys_FuncProc_Text" queryout d:\Kadri\Arh\K_'+@FN+' -c -T -C RAW'
 	Exec	master..xp_cmdshell @S, no_output 
 	Set @S = 'd:\Kadri\Arh\Arj.exe a -e d:\Kadri\Arh\ArhFP_Kadri.arj d:\Kadri\Arh\K_'+@FN  
  Exec	master..xp_cmdshell @S, no_output 
 	Set @S = 'del d:\Kadri\Arh\K_'+@FN  
  Exec	master..xp_cmdshell @S, no_output


Create View dbo.vSys_FuncProc_Text
As
Select ROUTINE_CATALOG DB, ROUTINE_SCHEMA OWNER, ROUTINE_TYPE TYPE, DATA_TYPE, SQL_DATA_ACCESS ACCESS, 
ROUTINE_Name Name, ROUTINE_Definition TEXT, CREATED DATE_CREATE, LAST_ALTERED DATE_MODIFY
from INFORMATION_SCHEMA.ROUTINES  (NOLOCK)
16 июл 09, 04:47    [7421630]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить текст процедур/функций в файл?  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
Может, проще копировать syscomments в другую базу и её бэкапить?
16 июл 09, 08:55    [7421769]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить текст процедур/функций в файл?  [new]
Oleg_SQL
Member

Откуда: от туда
Сообщений: 99
Le Peace,
Можно и так, но в текстовом файле быстрее можно найти информацию, чем восстановить бэкап, потом писать запрос...
16 июл 09, 10:08    [7422054]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить текст процедур/функций в файл?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
вообще, нормальная практика хранить исходники в ВСС
-------------------------------------
Jedem Das Seine
16 июл 09, 10:29    [7422175]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить текст процедур/функций в файл?  [new]
Случайный прохожий1
Guest
Oleg_SQL
Все работает, только вот "большие" тексты (более 8000 символов) обрезаются.
Как это можно решить?

Если SQL 2005, то varchar(max)
16 июл 09, 11:41    [7422760]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить текст процедур/функций в файл?  [new]
Случайный прохожий1
Guest
автор
Declare @FN varchar(50)
  Set @FN = NEWID()
  Set @FN = CONVERT(varchar(50),GetDate(),104)+'_'+CONVERT(varchar(50),GetDate(),108)
А зачем строчка
Set @FN = NEWID()
Судя по тексту дальше переменная @FN получает значение что-то типа этого:
16.07.2009_11:59:09
16 июл 09, 12:02    [7422954]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как сохранить текст процедур/функций в файл?  [new]
Yura_Z
Member

Откуда:
Сообщений: 85
Oleg_SQL,

Вытащить процедуры!

"C:\Program Files\Microsoft SQL Server\MSSQL\Upgrade\scptxfr" /H /s R5N /d DSFT /I /F C:\BACKUP\backup_tools /f R5N.DSFT.S

к примеру есть сервер где ведется разработка!
если менялась какая либо процедура то нужно бекапить
---

решение!



@rem
@rem Если что то менялось то архивируем 
@rem

@c:
@cd \backup\backup_tools
@"C:\Program Files\Microsoft SQL Server\MSSQL\Upgrade\scptxfr" /H /s R5N /d DSFT /I /F C:\BACKUP\backup_tools /f R5N.DSFT.S

@fc R5N.DSFT.S R5N.DSFTARC.S | find "***"
@if errorlevel 1 goto EndNoARC

@C:\backup\backup_tools\rar a -agyyyy_mm_dd_hh_mm -idp \\backup\d$\backup\s\R5N.DSFT C:\backup\BACKUP_TOOLS\R5N.DSFT.S
@copy R5N.DSFT.S R5N.DSFTARC.S

:EndNoArc
14 фев 12, 08:56    [12086274]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить