NSIS附加数据库,分离数据库脚本代码
2010-04-07 15:03
447 查看
主要使用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
详细代码如下:
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附加数据库,分离数据库脚本代码
- NSIS附加数据库,分离数据库脚本代码
- ms sqlserver 数据库附加与分离脚本
- C#使用代码附加、分离数据库
- NSIS——安装时附加数据库、卸载时分离数据库
- sqlserver下 代码实现数据库附加和分离
- 数据库复习总结(4)-数据库的分离、附加、脚本的创建
- SqlServer 数据库 分离复制备份然后附加回数据库 sql代码
- 代码行附加分离数据库
- SQL Server 2000如何附加和分离数据库
- [转]ms sql 2000 下批量 附加/分离 数据库(sql语句)
- SQL Server 数据库分离与附加
- [网络收集]给radio类型的INPUT添加客户端脚本 --附加实现JS来禁用onClick事件思路代码
- SQL学习之分离与附加数据库
- spring jdbc分离数据库代码和java代码
- c#自动附加分离备份还原数据库 C#生成安装文件后自动附加数据库的思路跟算法 打包之后,运行之前
- Proc*C实例三 -- 数据库代码逻辑代码分离
- 修改、分离和附加数据库
- “附加数据库失败,版本为661,无法打开,支持655版本...”和“无法执行脚本,没有足够的内存继续执...”
- SQL Server 分离与附加数据库