最新消息:

MS SQL 2000数据库

nsis 永恒心锁 2158浏览 0评论

为了修改方便,我们先来定义附加数据库的三个常量。

;附加数据库用到的常量
!define DB_NAME "Test"
!define DB_FILE_MDF "$INSTDIRDataTest.mdf"
!define DB_FILE_LDF "$INSTDIRDataTest_log.ldf"

下面是主要代码,加在合适的位置即可。

主要思路:取得当前SQL2000服务器名称,查询数据库是否存在,如果不存在则执行附加操作,完成后再查询一下数据库是否存在,不存在则认为附加失败。

;从注册表中读取SQL程序安装路径
ReadRegStr $R1 HKLM "SOFTWAREMicrosoftMicrosoft SQL Server80ToolsClientSetup" "SQLPath"
;从注册表中读取当前计算机名
ReadRegStr $R2 HKLM "SYSTEMCurrentControlSetControlComputerNameComputerName" "ComputerName"
 ${If} $R1 == ""
 MessageBox MB_OK "未检测到MS SQL2000!附加失败!"
 ${Else}
;启动SQL服务
nsSCM::Start /NOUNLOAD "MSSQLSERVER"
;将查询数据库的命令写入到文本中
FileOpen $R3 "$INSTDIRsp_helpdb.sql" w
FileWrite $R3 "EXEC sp_helpdb ${DB_NAME}"
FileClose $R3
;无窗口执行CMD命令查询数据库是否存在,0为存在,1为不存在
 nsExec::ExecToLog '"$R1Binnisql.exe" -U "sa" -P "" -S  "$R2" -d master -i "$INSTDIRsp_helpdb.sql" -o -b'
 Pop $R4
     ${If} $R4 == "1"
		;将附加数据库的命令写入到文本中
		FileOpen $R5 "$INSTDIRattach_db.sql" w
		FileWrite $R5 "EXEC sp_attach_db @dbname = N$'${DB_NAME}$', @filename1 = N$'${DB_FILE_MDF}$',@filename2=N$'${DB_FILE_LDF}$'"
		FileClose $R5
	  SetDetailsPrint textonly
	  DetailPrint "正在附加 ${PRODUCT_NAME}数据库文件..."
	  SetDetailsPrint listonly
		;无窗口执行CMD命令附加数据库
		nsExec::ExecToLog '"$R1Binnisql.exe" -U "sa" -P "" -S  "$R2" -d master -i "$INSTDIRattach_db.sql" -o -b'
		;再执行一遍查询,验证是否附加成功,0为存在,1为不存在
 		nsExec::ExecToLog '"$R1Binnisql.exe" -U "sa" -P "" -S  "$R2" -d master -i "$INSTDIRsp_helpdb.sql" -o -b'
 		Pop $R6
     	${If} $R6 == "1"
				MessageBox MB_OK "附加数据库文件失败,请进入“企业管理器”手动进行附加!"
	  	${EndIf}
	  ${EndIf}
 ${EndIf}
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » MS SQL 2000数据库

您必须 登录 才能发表评论!