首页 新闻 会员 周边 捐助

C#与SQL2005数据部署安装问题

0
悬赏园豆:50 [已解决问题] 解决于 2010-03-17 11:34

在网站找到了实现方法,但是打包后的EXE文件无法安装数据库,小弟不才,敬请大侠指教!

我的实现代码:

private void ExecuteSql(string conn, string DatabaseName, string Sql)
        {
            SqlConnection mySqlConnection = new SqlConnection(conn);
            SqlCommand Command = new SqlCommand(Sql, mySqlConnection);
            mySqlConnection.Open();
            mySqlConnection.ChangeDatabase(DatabaseName);
            try
            {
                Command.ExecuteNonQuery();
            }
            finally
            {
                //close Connection 
                mySqlConnection.Close();
            }
        }

public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);

            // ------------------------建立数据库-------------------------------------------------

            try
            {
                string connstr = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", Context.Parameters["server"], Context.Parameters["user"], Context.Parameters["pwd"]);
                //'根据输入的数据库名称建立数据库 
                ExecuteSql(connstr, "master", "CREATE DATABASE " + Context.Parameters["dbname"]);
                //'调用osql执行脚本 
                Process sqlprocess = new System.Diagnostics.Process();
                sqlprocess.StartInfo.FileName = "osql.exe ";
                sqlprocess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}ACM618DeviceInfo.sql", Context.Parameters["user"], Context.Parameters["pwd"], Context.Parameters["dbname"], Context.Parameters["targetdir"]);
                sqlprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                sqlprocess.Start();
                sqlprocess.WaitForExit(); // '等待执行
                sqlprocess.Close();

                //'删除脚本文件
                FileInfo sqlfileinfo = new FileInfo(String.Format("{0}ACM618DeviceInfo.sql", Context.Parameters["targetdir"]));

                if (sqlfileinfo.Exists)
                {
                    sqlfileinfo.Delete();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

安装程序时提示的错误是:

在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 25 - 连接字符串无效)

请问我程序中写的是哪个字符串出问题了??

我是刚刚注册的新手,分不多··给个意思···多多原谅!

问题补充: 问题已经解决,是我的连接字符串出错了,结贴给分的同时想再提一个问题~~把打包好的程序发到其他机器上安装时出现: 在建立与服务器的连接时出错。在连接到 sql server 2005 时 在默认的设置下 sql server 不允许进行远程连 (provider: TCP提供程序, error: 40 - 由于目标机器积极拒绝,无法连接)。 敬请各位大侠指教~~
amby的主页 amby | 初学一级 | 园豆:99
提问于:2010-03-16 11:59
< >
分享
最佳答案
0

问题出现 在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败  这里应该出问题了吧.SQL Server 2005默认不允许远程连接,这个需要手动的开启SQL Server2005的远程连接项啦!你可以参考这篇文章 http://www.cnblogs.com/weaa/archive/2007/02/10/647036.html 。

另外需要明确一点,在默认安装VS2005/2008时会安装一个SQL Express版本的2005数据库,在设置data source这个值的时候需要设置以SQLExpress实例进行连接(如果你安装时使用本机的SQL Server Express2005版本做测试的话),否则不能连接成功的。

 

收获园豆:20
西越泽 | 专家六级 |园豆:10775 | 2010-03-16 12:30
其他回答(2)
0

将这个字串打出来复制到连接管理器中试一下

收获园豆:10
风海迷沙 | 园豆:4453 (老鸟四级) | 2010-03-16 12:29
0

如果你的数据库不是SQL EXPRESS,就应该不是远程连接的问题

检查一下你的连接字符串的几个参数是否正确传递,是否有对应安装界面的文本框输入

收获园豆:20
查尔斯 | 园豆:3832 (老鸟四级) | 2010-03-16 23:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册