2009-08-31 107 views
0

對於我的項目中的數據庫,我有一個數據庫的刪除/創建腳本,用於創建表和SP的腳本以及包含一些導出值的Access 2003 .mdb文件。SQL Server 2008自動化數據庫刪除,創建和填充

要從零開始設置數據庫,我可以使用我的SQL管理工作室首先運行一個腳本,然後運行另一個腳本,最後手動運行一些繁瑣的導入任務。

但我想這樣做盡可能自動化。希望將三個文件放在一個文件夾中以及第四個腳本來執行。看起來像這樣:

run script "dropcreate.sql" 
run script "createtables.sql" 
import "values.mdb" 

這是如何完成的?我希望避免使用SSIS等。棘手的是,這當然是數據的導入,我似乎無法找到一種簡單的方法。文件保留原樣並且不嵌入任何內容也很重要。

回答

0

您可以在SQLCMD mode中運行SQL Server Management Studio。在那裏,你可以如下運行腳本

:RC:\ TEMP \ DropCreate.SQL :RC:\ TEMP \ CreateTables.SQL

或者,您可以運行一個批處理文件中使用SQLCMD.exe命令整件事。

SQLCMD -S「。」 -E -i「c:\ temp \ DropCreate.SQL」 SQLCMD -S「。」 -E -i「c:\ temp \ CreateTables.SQL」

您是否有替代SSIS的功能可以爲您導入數據?通常做任何類型的轉換和加載,你需要錯誤處理,查找等,除非你使用現成的產品,否則你將不得不自己編碼。

你可以讀了很多about SSIS right here on SO

我們有一個類似的項目(創建數據庫,負載數據,創建代碼)。我們在數據庫項目中完成所有這些工作 - 包括Visual Studio Team System Edition 2008和GDR2。

0
:: DOC AT THE END 

@ECHO OFF 
::BOOM BOOM BOOM CHANGE THIS ONE WHEN YOU ARE INSTALLAING DIFFERENT DATABASE 
SET DbName=CAS_DEV 


ECHO CREATE FIRST BACKUP OF ALL DATABASES ON THE DEFAULT INSTANCE ONES: 
ECHO CREATING THE LOG FILES 

echo THIS IS THE ERROR LOG OF THE UPDATE OF THE %DbName% ON %DATE% >error.log 
echo THIS IS THE INSTALL LOG OF THE UPDATE OF THE %DbName% ON %DATE% >install.log 


ECHO STARTTING BACKUP 
CD .\0.BackUp 
ECHO FOR EACH SQL FILE DO RUN IT THIS WILL TAKE A WHILE 
ECHO SINCE WE ARE GOING TO MAKE A BACKUP FOR ALL THE DATABASES ON THE CURRENT HOST 

for /f %%i in ('dir *.SQL /s /b /o') DO ECHO %DATE% --- %TIME% RUNNING %%i 1>>"..\install.log"&SQLCMD -U ysg -P pass -H hostname -d MASTER -t 30000 -w 80 -u -p 1 -b -i %%i -r1 1>> "..\install.log" 2>> "..\error.log" 


ECHO GO ONE FOLDER UP 

ECHO SLEEP FOR 1 SECOND 
ping -n 1 127.0.0.1 >NUL 
ECHO DONE WITH BACKUP GOING UP 
cd .. 

ECHO THE BACKUPS ARE IN THE FOLDER 
ECHO D:\DATA\BACKUPS 
ECHO CLICK A KEY TO CONTINUE 
ECHO ======================================================================================================================== 
PAUSE 




ECHO STARTING INSTALLING FUNCTIONS 
CD ".\1.Functions" 
ECHO FOR EACH SQL FILE DO RUN IT 
ping -n 1 127.0.0.1 >NUL 

for /f %%i in ('dir *.SQL /s /b /o') DO ECHO %DATE% --- %TIME% RUNNING %%i 1>>"..\install.log"&SQLCMD -U ysg -P pass -H hostname -d %DbName% -t 3000 -w 80 -u -p 1 -b -i "%%i" -r1 1>> "..\install.log" 2>> "..\error.log" 

ECHO DONE WITH STORED PROCEDDURES GOING UP 
cd .. 
ping -n 1 127.0.0.1 >NUL 

ECHO HIT A KEY AFTER PAUSE 
PAUSE 




ECHO START TO EXECUTE THE MIXED FILES 
CD .\1.Mixed 
ECHO CREATING THE LOG FILES 
echo. >>"..\error.log" 
echo. >>"..\install.log" 
ECHO FOR EACH SQL FILE DO RUN IT 

for /f %%i in ('dir *.SQL /s /b /o') DO ECHO %DATE% --- %TIME% RUNNING %%i 1>>"..\install.log"&SQLCMD -U ysg -P pass -H hostname -d %DbName% -t 3000 -w 80 -u -p 1 -b -i %%i -r1 1>> "..\install.log" 2>> "..\error.log" 

ECHO GO ONE FOLDER UP 
cd .. 

ECHO SLEEP FOR 1 SECOND 
ping -n 1 127.0.0.1 >NUL 
ECHO DONE WITH MIXED GOING UP 

ECHO HIT A KEY AFTER PAUSE 
PAUSE 
ECHO STARTING INSTALLING TABLES 
CD .\2.Tables 
ECHO FOR EACH SQL FILE DO RUN IT 
ping -n 1 127.0.0.1 >NUL 

for /f %%i in ('dir *.SQL /s /b /o') DO ECHO %DATE% --- %TIME% RUNNING %%i 1>>"..\install.log"&SQLCMD -U ysg -P pass -H hostname -d %DbName% -t 3000 -w 80 -u -p 1 -b -i "%%i" -r1 1>> "..\install.log" 2>> "..\error.log" 


ping -n 1 127.0.0.1 >NUL 
ECHO DONE WITH TAbles GOING UP 
cd .. 
ping -n 1 127.0.0.1 >NUL 

ECHO HIT A KEY AFTER PAUSE 
PAUSE 

ECHO STARTING INSTALLING Views 
CD ".\3.Views" 
ECHO FOR EACH SQL FILE DO RUN IT 
ping -n 1 127.0.0.1 >NUL 

for /f %%i in ('dir *.SQL /s /b /o') DO ECHO %DATE% --- %TIME% RUNNING %%i 1>>"..\install.log"&SQLCMD -U ysg -P pass -H hostname -d %DbName% -t 3000 -w 80 -u -p 1 -b -i "%%i" -r1 1>> "..\install.log" 2>> "..\error.log" 

ECHO DONE WITH Views GOING UP 
cd .. 
ping -n 1 127.0.0.1 >NUL 

ECHO HIT A KEY AFTER PAUSE 
PAUSE 



ECHO STARTING INSTALLING stored procedures 
CD ".\5.StoredProcedures" 
ECHO FOR EACH SQL FILE DO RUN IT 
ping -n 1 127.0.0.1 >NUL 

for /f %%i in ('dir *.SQL /s /b /o') DO ECHO %DATE% --- %TIME% RUNNING %%i 1>>"..\install.log"&SQLCMD -U ysg -P pass -H hostname -d %DbName% -t 3000 -w 80 -u -p 1 -b -i "%%i" -r1 1>> "..\install.log" 2>> "..\error.log" 

ECHO DONE WITH STORED PROCEDDURES GOING UP 
cd .. 
ping -n 1 127.0.0.1 >NUL 

ECHO HIT A KEY AFTER PAUSE 
PAUSE 

ECHO STARTING INSTALLING Triggers 
CD ".\6.Triggers" 
ECHO FOR EACH SQL FILE DO RUN IT 
ping -n 1 127.0.0.1 >NUL 

for /f %%i in ('dir *.SQL /s /b /o') DO ECHO %DATE% --- %TIME% RUNNING %%i 1>>"..\install.log"&SQLCMD -U ysg -P pass -H hostname -d %DbName% -t 3000 -w 80 -u -p 1 -b -i "%%i" -r1 1>> "..\install.log" 2>> "..\error.log" 

ping -n 1 127.0.0.1 >NUL 
ECHO DONE WITH Triggers GOING UP 
cd .. 

ping -n 1 127.0.0.1 >NUL 

ECHO HIT A KEY AFTER PAUSE 
PAUSE 


ECHO Please , Review the log files and sent them back to Advanced Application Support 


set mailadd= yordan.georgiev^@oxit.fi 

:: WE USE THE "%cd%\bin\bmail.exe".EXE UTILITY TO SEND OURSELF AN E-MAIL CONTAINING THE TEXT FILE 
:: ALTERNATIVE SMTP MIGHT BE company.com, UNCOMMENT THE NEXT LINE FOR ALTERN 
::cmd /c "%cd%\bin\bmail.exe" -s company.com -m %computername%.txt -t %mailadd% -a %computername% -h 
::"%cd%\bin\bmail.exe" -s smtp.company.com -m install.log -t [email protected] -a "POC 1.2 install log" -h 

::"%cd%\bin\bmail.exe" -s smtp.company.com -m error.log -t [email protected] -a "POC 1.2 error log" -h 





cmd /c start /max INSTALL.LOG 
CMD /C start /MAX ERROR.LOG 
echo DONE !!! 
ECHO HIT A KEY TO EXIT 
PAUSE 


:: WE GO TROUGH ALL THE FOLDERS AND RUN THE SQL FILES IN ALPHABETIC ORDER 
相關問題