2009-08-31 97 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 
相关问题