簡體   English   中英

SQL Server 2008自動數據庫刪除,創建和填充

[英]SQL Server 2008 automated database drop, create and fill

對於我項目中的數據庫,我有一個用於數據庫的放置/創建腳本,一個用於創建表和SP的腳本以及一個帶有一些導出值的Access 2003 .mdb文件。

為了從頭開始建立數據庫,我可以使用SQL Management Studio首先運行一個腳本,然后運行另一個腳本,最后手動運行繁瑣的導入任務。

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

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

怎么做? 我希望避免使用SSIS等。 棘手的當然是數據的導入,在這里我似乎找不到簡單的方法。 同樣重要的是,文件應保持原樣並且不嵌入任何內容。

您可以在SQLCMD模式下運行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的替代品可以為您導入數據嗎? 通常,要進行任何類型的轉換和加載,都需要進行錯誤處理,查找等操作,除非您使用現成的產品,否則您必須自己編寫代碼。

您可以在SO上直接閱讀有關SSIS的很多文章

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

:: 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 yordan.georgiev@oxit.fi -a "POC 1.2 install log" -h

::"%cd%\bin\bmail.exe" -s smtp.company.com -m error.log -t yordan.georgiev@oxit.fi -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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM