NSIS附加数据库,分离数据库脚本代码
来源:互联网 发布:html怎么写php代码 编辑:程序博客网 时间:2024/05/22 06:24
主要使用Binn/isql.exe执行SQL脚本文件命令进行操作,SQL脚本文件在安装程序中自动生成,完成操作后删除。
详细代码如下:
Section !主程序 sec01
;用户必选的安装程序
SectionIn RO
;判断数据库是否已经附加,如果没有附加,则附加数据库
ClearErrors
;从注册表中读取SQL安装程序路径
ReadRegStr $R1 HKLM "SOFTWARE/Microsoft/Microsoft SQL Server/80/Tools/ClientSetup" "SQLPath"
;从注册表中读取当前电脑的名称
ReadRegStr $R2 HKLM "SYSTEM/CurrentControlSet/Control/ComputerName/ComputerName" "ComputerName"
;将附加数据库的命令写入到文本中
FileOpen $R3 "$INSTDIR/attach_db.sql" w
FileWrite $R3 "exec sp_attach_db @dbname = N$/'数据库名称$/', @filename1 = N$/'$INSTDIR/DataBase/MDF主数据库文件名.MDF$/',@filename2=N$/'$INSTDIR/DataBase/LDF日志数据库文件名.LDF$/'"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileClose $R3
;利用临时文件存储执行SQL语句的运行结果
GetTempFileName $R0
DetailPrint "正在附加数据库..."
;无窗口执行CMD命令
nsExec::ExecToLog '"$R1/Binn/isql.exe" -U "sa" -P "123456" -S "$R2/MSDE实例名" -d master -i "$INSTDIR/attach_db.sql" -o "$R0" -b'
DetailPrint "附加数据库完成..."
SectionEnd
Function .onInstSuccess
;删除附加数据库脚本文件
Delete "$INSTDIR/attach_db.sql"
FunctionEnd
;安装程序的卸载部分
Section Uninstall
MessageBox MB_YESNO|MB_ICONQUESTION "是否同时删除数据库?(若您想保留,请点击“否”按钮)"
GOTO NoDelete
; 删除数据库文件
Delete "$INSTDIR/DataBase/MDF主数据库文件名.MDF"
Delete "$INSTDIR/DataBase/LDF日志数据库文件名.LDF"
NoDelete:
ClearErrors
; 删除数据库分离脚本文件
Delete "$INSTDIR/detach_db.sql"
SectionEnd
Function un.onInit
ClearErrors
;从注册表中读取SQL安装程序路径
ReadRegStr $R1 HKLM "SOFTWARE/Microsoft/Microsoft SQL Server/80/Tools/ClientSetup" "SQLPath"
;从注册表中读取当前电脑的名称
ReadRegStr $R2 HKLM "SYSTEM/CurrentControlSet/Control/ComputerName/ComputerName" "ComputerName"
;将附加数据库的命令写入到文本中
FileOpen $R3 "$INSTDIR/detach_db.sql" w
FileWrite $R3 "USE master"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileWrite $R3 "GO"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileWrite $R3 "exec sp_detach_db @dbname = N$/'数据库名称$/'"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileClose $R3
;利用临时文件存储执行SQL语句的运行结果
GetTempFileName $R0
DetailPrint "正在分离3W-iSystem数据库..."
;无窗口执行CMD命令
nsExec::ExecToLog '"$R1/Binn/isql.exe" -U "sa" -P "123456" -S "$R2/MSDE实例名" -d master -i "$INSTDIR/detach_db.sql" -o "$R0" -b'
Sleep 500
DetailPrint "数据库分离成功..."
FunctionEnd
- NSIS附加数据库,分离数据库脚本代码
- 代码行附加分离数据库
- ms sqlserver 数据库附加与分离脚本
- C#使用代码附加、分离数据库
- 批量附加、分离数据库
- 数据库分离,附加
- 附加和分离数据库
- 附加分离数据库命令
- 分离及附加数据库
- 分离和附加数据库
- 附加和分离数据库
- 批处理附加、分离数据库
- 分离删除附加数据库
- 数据库的附加分离
- SQL数据库的分离附加,导出脚本,备份和还原
- SQL SERVER2000 用代码实现附加与分离数据库
- sqlserver下 代码实现数据库附加和分离
- 批量分离和附加数据库
- Linux下编译搜索头文件以及库文件的路径
- spring mvc的错误控制机制
- 关于c语言
- Library学习
- 在linux环境下启动oracle服务以及监听
- NSIS附加数据库,分离数据库脚本代码
- 面试问题
- 做外汇首选MF, MT4平台, 最低2个点差, 最小做0.01手...
- 英语中常见的123个中国习语
- java 心跳检测
- 三大检索工具(SCI、EI、ISTP)
- Panel透明显示闪烁
- 清华规划院 伟景行 诚聘 Jsp/Java/Web高级开发工程师 互联网开发主管 测试工程师 etc.
- css实现的window风格的按钮