对李洪根在csdn的blog上的一篇关于数据库安装的一点个人看法。
http://dev.csdn.net/develop/article/27/27814.shtm
.NET平台下WEB应用程序的部署(安装数据库和自动配置)
原文是他是用osql 来执行,但如果web服务器上没有osql,则他又提供了另一种方法,见后面
--------------------
'调用osql执行脚本
Dim sqlProcess As New System.Diagnostics.Process
sqlProcess.StartInfo.FileName = "osql.exe "
sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"), Me.Context.Parameters.Item("dbname"), Me.Context.Parameters.Item("targetdir"))
sqlProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
sqlProcess.Start()
sqlProcess.WaitForExit() '等待执行
sqlProcess.Close()
------------------------------
另一种解决方法
2004.5.14 13:51 lihonggen0 发表评论
' -------------------------------------------------------
附:执行脚本还可以用以下方式:
'利用shell执行osql
Dim strSQL = String.Format("OSQL -U {0} -P {1} -d {2} -i {3}db.sql", Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"), Me.Context.Parameters.Item("dbname"), Me.Context.Parameters.Item("targetdir"))
Shell(strSQL, AppWinStyle.Hide)
'利用ado.net执行osql
Dim strSQL = String.Format("EXEC MASTER..XP_CMDSHELL 'OSQL -U {0} -P {1} -d {2} -b -i {3}db.sql'", Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"), Me.Context.Parameters.Item("dbname"), Me.Context.Parameters.Item("targetdir"))
ExecuteSql(connStr, Me.Context.Parameters.Item("dbname"), strSQL)
----------------------------------
但我不知道李大哥测试过没有,用ado.net来执行osql的时候,这时候所找的db.sql是在数据库服务器上来找,而db.sql是安在了web服务上,所以。。。。
我仔细查看了duwamish7的安装项目,发现在秘密。
秘密就是打包的时候把osql和bcp打到安装包里,然后在web服务上执行osql后,再将osql删掉。
另外,李大哥给得是vb.net语言的,我已经改为c#的拉,如果谁要的话,可以说一声:)
posted on 2004-09-21 08:46 十一月四日风雨大作 阅读(2228) 评论(17) 编辑 收藏 举报