摘要:由于@@ServerName在安装数据库之后修改了机器名的情况下,获取到的内容仍然是原来的机器名,造成数据库连接失败,所以不能直接使用该全局变量。此外对升级脚本的执行方式做了一下调整,将版本的判断放到子脚本去判断,调度脚本仅对子脚本进行调度。-- 根据SQL的版本好确定启用xp_cmdshell的方式。declare @DBVersion varchar(50)select @DBVersion= cast(serverproperty('productversion') as varchar(50))declare @index intselect @index = char
阅读全文
摘要:1.增加了对SQL Server 2000的兼容;2.支持对脚本目录的批量处理;3.将脚本版本的判断放到具体的升级子脚本中去,让调度脚本更固化。-- 根据SQL的版本好确定启用xp_cmdshell的方式。declare @DBVersion varchar(50)select @DBVersion= cast(serverproperty('productversion') as varchar(50))declare @index intselect @index = charindex('.',@DBVersion)select @DBVersion =
阅读全文
摘要:目前的项目里面,升级脚本是一个SQL文件,无论软件从哪个版本升级,都会把SQL文件里面的语句全部执行一遍,这样存在两个问题:1.SQL升级文件很庞大,几M很常见,导致文件的加载很慢;2.重复执行脚本内容,性能很低。但是目前的局限是安装包启动的升级程序,只能读取一个指定文件名的SQL脚本,脚本是批处理形式的,带了大量的GO,所以不能通过if xxxbegin 升级脚本end的形式来处理(语法不支持),于是只能另想办法,每一个版本生成一个Update脚本,通过一个调度脚本来决定执行哪些升级脚本。这样就必须使用到xp_cmdshell和osql。考虑到升级的时候,升级程序并不能告诉脚本sa密码和当.
阅读全文
摘要:想通过一个SQL脚本,启用一个批处理,然后在批处理里面执行若干脚本。SQL脚本内容如下: exec Sp_Configure 'Xp_CmdShell',1 RECONFIGURE --配置可以执行CMD命令 exec xp_cmdshell 'D:\xxx.bat' exec Sp_Configure 'Xp_CmdShell',0 --关闭执行CMD命令 RECONFIGURE批处理文件内容如下:@echo offecho ***用批处理执行升级脚本***rem os...
阅读全文
摘要:因业务需要查询实现第二行的数据为第一行加上第二行的值来处理,写下SQL语句,特记录如下,以备后用!selecta.id,sum(b.a)asbfromttasa,ttasbwherea.id>=b.idgroupbya.id说明tt为表名,id为排序名,a为数值 IDENTITY(INT,1,1)为自增网上找的资料如下:--对表中数据逐行累加declare@tempTabletable(SIDint,SCOREint)insert@tempTableselect1,10unionallselect2,20unionallselect3,30unionallselect4,40uniona
阅读全文