데이터베이스 개체를 스크립팅에 대한 이전의 문서에 따라, 그 스크립트는 데이터베이스 스크립트 자동 및 폴더에 기록 저장 프로 시저를 만들었습니다. 이 스크립트는 SQL Server 2005에서 만들어집니다. 이것은 유용하기 때문에 현재 테이블에있는 모든 개체와 같은 저장 프로 시저, 뷰 및 함수 스크립트 그것이다.
[ dbo ] . [ sp_GenDBscript ] 작성 절차는 [dbo가]. [Sp_GenDBscript]를 ( 150 ) -- Bijv: 'D:\SQLDATA\' @ 백업 경로 VARCHAR (150) - 예 : "패 : \ Sqldata \ ' 있는 그대로 / * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ SPC 목적 : 생성 스크립트 데이터베이스의 모든 개체 작성자 : 로널드 Kraijesteijn을 만든날짜 : 2010년 3월 업데이트 : 엑스 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ 필요 : http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=56e5b1c5-bf17-42e0-a410-371a838e570a&displayLang=en 예 EXEC의 sp_GenDBscript '개발 : \ Sqldata' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~ ~ * /를 하는 BEGIN 설정의 NOCOUNT 켜기 @ PATH AS VARCHAR ( 150 ) 경로로 VARCHAR @ 공표할 (150) @CMD AS VARCHAR ( 150 ) ) 150 그대로 공표할 @ CMD를 VARCHAR를 ( @Param AS VARCHAR ( 150 ) ) 150 그대로 공표할 @ Params VARCHAR ( @ SQL AS VARCHAR ( 256 ) SQL 그대로 VARCHAR @ 공표할 (256) @ DATE AS VARCHAR ( 10 ) 일자로 VARCHAR @ 공표할 (10) @TextFile AS VARCHAR ( 150 ) 텍스트 파일로 @ 공표할 VARCHAR (150) @MkdirStr AS VARCHAR ( 150 ) MkdirStr 그대로 VARCHAR @ 공표할 (150) @ TIME AS VARCHAR ( 150 ) 있는 시간이 VARCHAR @ 공표할 (150) @ DATABASE AS VARCHAR ( 150 ) 데이터베이스로 VARCHAR @ 공표할 (150) @RC AS INT INT를 RC 그대로 공표할 @ @ TIME = REPLACE ( CONVERT ( VARCHAR , GETDATE ( ) , 114 ) , ':' , '' ) 세트 @ 시간 = ':','') 바꾸기 (CONVERT (VARCHAR, getdate (), 114), @ DATE = CONVERT ( VARCHAR , GETDATE ( ) , 112 ) 설정 @ 날짜는 =) CONVERT (VARCHAR, getdate (), 112 @ PATH = '"C: \P rogram Files \M icrosoft SQL Server \9 0 \T ools \P ublishing \S qlPubWiz.exe"' @ 설정의 PATH는 = "는"C : \ 피 "9 0 \ T의 ools을 \ ublishing 피 \ S를 qlPubWiz.exe을에서"SQL icrosoft rogram 파일 \ 남 서버 \ 목록의 데이터베이스를 얻기 - CUR_DB CURSOR 공표할 커서 CUR_DB [ name ] ]를 선택 [이름 sys. databases 시스템 기술자로부터. 데이터베이스 [ name ] NOT IN ( 'master' , 'tempdb' , 'model' , 'msdb' , [이름] 안 어디로 ( '마스터', 'tempdb를', '모델', 'msdb를', , 'ReportServerTempDB' ) "보고서 서버", "ReportServerTempDB을 ') - 각 대본 데이터베이스를 만들 CUR_DB 오픈 CUR_DB CUR_DB INTO @ DATABASE FETCH 반했어요 @ CUR_DB 데이터베이스 @@FETCH_STATUS = 0 0 이왕 @ @ FETCH_STATUS = 하는 BEGIN @MkdirStr = 'mkdir ' + @BackupPath + ' \' + @Database + ' \script ' 세트 @ MkdirStr = '에서 mkdir'+ @ 백업 경로 + '\'+ @ 데이터베이스 + '\ 스크립트 _ ' + @Date + ' _ ' + @Time + ' . SQL ' SET를 텍스트 파일 @ = @ 데이터베이스 + '_'+ @ 날짜 + '_'+ @ 시간 + '. SQL " script ' + @BackupPath + ' \ ' + @Database + ' \script\ ' + @TextFile 세트 @ Param = '스크립트'+ @ 백업 경로 + '\'+ @ 데이터베이스 + '\ 스크립트 \ "+ @ 텍스트 파일 -schemaonly -d ' + @Database + "스키마 전용 - d는 '+ @ 데이터베이스 세트 @ SQL = @ 경로 + @ Param DIR을 만들기, -, 선택하면 DIR은 존재하지면 EXEC @ RC = @ master.dbo.xp_cmdshell MkdirStr, NO_OUTPUT - 백업 만들기 ## START scripting DATABASE : %s ## ', 10, 0, @Database ) WITH NOWAIT ; RAISERROR ( '# # 시작 데이터베이스 스크립팅 : % s의 # #', 10, 0, @ 데이터베이스)와 nowait; EXEC @ RC = 마스터의 .. xp_cmdshell을 @ SQL에 no_output 0면 @ RC <> An Error occured WHILE scripting DATABASE : ' + @Database 정자로 '오류가 데이터베이스를 발생 스크립팅 이왕 :'+ @ 데이터베이스를 ## Done scripting DATABASE : %s ## ', 10, 0, @Database ) WITH NOWAIT ; RAISERROR ( '# # 데이터베이스를 완료 스크립팅 : % s의 # #', 10, 0, @ 데이터베이스)와 nowait; CUR_DB 어디로 FETCH의 @ 데이터베이스 끝 닫기 CUR_DB 찾습니다 CUR_DB을 처리 끝






















태그는 