一、模式1:通过平台update进行数据库操作
1、PS语法:
$Cmd="D:\JenkinsWS\Tools\build\build\UpdateMAP.exe" #平台的sql执行命令
echo "********************* Start:创建数据库 ******************************* "
echo ">>>> 创建数据库"
&"$Cmd" -r $ENV:PackagePath\CreateDbSQL_ALL\sql -db $ENV:sqlCmd -env "2"
-p "false" -exesql "true" #平台执行sql命令,参数格式;
If (!$?){
"ERROR!SQL执行存在错误!";
exit 1;
break;
};
"SQL执行成功!"
echo "********************** END ************************************************ "
2、SQL
use master
go
--杀掉数据库进程
declare @dbname sysname
set @dbname = '730Core_CB' --这个是要删除的数据库库名
declare @s nvarchar(1000)
declare tb cursor local
for
select s = 'kill ' + cast(spid as varchar)
from master.dbo.sysprocesses
where dbid = DB_ID(@dbname)
open tb
fetch next from tb into @s
while @@fetch_status = 0
begin
exec (@s)
fetch next from tb into @s
end
close tb
deallocate tb
if db_id('730Core_CB') Is Not NULL
Drop database [730Core_CB]
Go
create database [730Core_CB]
on primary -- 默认就属于primary文件组,可省略
(
/*--数据文件的具体描述--*/
name='730Core_CB',-- 主数据文件的逻辑名称
filename='D:\Test\730Core_CB.mdf',-- 主数据文件的物理名称
size=5mb, --主数据文件的初始大小
filegrowth=300mb--主数据文件的增长率
)
log on
(
/*--日志文件的具体描述,各参数含义同上--*/
name='730Core_CB_log',
filename='D:\Test\730Core_CB_log.ldf',
size=2mb,
filegrowth=300mb
)
二、模式2:PS直接执行SQL
0、执行Invoke-Sqlcmd之前要先注册,执行如下语句:不同的SQLServer版本后面的命令不同,下面是SQLServer2008R2版本
1 Add-PSSnapin SqlServerCmdletSnapin100
2 Add-PSSnapin SqlServerProviderSnapin100
1、语法:
Invoke-Sqlcmd -ServerInstance "实例名" -Database "数据库名" -Query "SQL"
-Username "用户名" -Password "密码" -Verbose
2、实例:
#查询所有子系统
$ListApp = Invoke-Sqlcmd -ServerInstance "WIN-624RF20AQJM\SQL2008R22"
-Database "dotnet_erp60"
-Query "SELECT Application FROM dbo.myApplication WHERE ApplicationName
NOT IN('ERP600','数据服务中心','电子签章','工程量清单集成系统') ORDER BY
Application" -Username "sa" -Password "95938" -Verbose