SQLServer按顺序执行多个脚本的方法(sqlcmd实用工具使用方法) |
本文标签:sqlcmd,顺序执行多个脚本 解决方法: 复制代码 代码如下: /* SCRIPT: CREATE_DB.sql */ /* 创建TestDB数据库 */ -- This is the main caller for each script PRINT 开始创建TestDB数据库 :On Error exit :r c:\Scripts\CREATE_TABLES.sql PRINT 创建完毕 脚本2:CREATE_INDEXES.sql 复制代码 代码如下: /* 创建索引 */ PRINT 开始创建索引 GO USE TestDB GO IF NOT EXISTS ( SELECT 1 FROM SYS.INDEXES WHERE NAME = IX_EMPLOYEE_LASTNAME ) CREATE INDEX IX_EMPLOYEE_LASTNAME ON DBO.EMPLOYEE(LASTNAME, FIRSTNAME) GO IF NOT EXISTS ( SELECT 1 FROM SYS.INDEXES WHERE NAME = IX_TIMECARD_EMPLOYEEID ) CREATE INDEX IX_TIMECARD_EMPLOYEEID ON DBO.TIMECARD(EMPLOYEEID) GO 脚本3:CREATE_PROCEDURES.sql 复制代码 代码如下: /* 创建存储过程 */ PRINT 正在创建存储过程 GO USE TestDB GO IF OBJECT_ID(GET_EMPLOYEE_TIMECARDS) IS NOT NULL DROP PROCEDURE DBO.GET_EMPLOYEE_TIMECARDS GO CREATE PROCEDURE DBO.GET_EMPLOYEE_TIMECARDS @EMPLOYEEID INT AS SET NOCOUNT ON SELECT * GO 脚本4:CREATE_TABLES.sql 复制代码 代码如下: /* 创建数据表 */ PRINT 正在创建数据表 GO USE TestDB GO IF OBJECT_ID(EMPLOYEE) IS NOT NULL DROP TABLE DBO.EMPLOYEE GO CREATE TABLE DBO.EMPLOYEE ( EMPLOYEEID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY , FIRSTNAME VARCHAR(50) , LASTNAME VARCHAR(50) ) GO IF OBJECT_ID(TIMECARD) IS NOT NULL DECLARE @TOTAL_TABLES INT 脚本5:TABLE_INSERTS.sql 复制代码 代码如下: /* 插入表数据 */ PRINT TOTAL TABLES CREATED = + CAST(@TOTAL_TABLES AS VARCHAR) 第二步:在C盘根目录下创建一个bat文件create_db.bat,用于执行SQLCMD: 双击文件可以看到:
执行中:
执行后,该创建的东西都创建出来了:
由于执行的顺序已经在脚本1中定义好,所以直接执行即可,并且执行成功 。 总结: 根据个人经验,还是开发一个批量执行工具会比较好,这个方法在少量脚本的时候可以选用 。 |