我想能不能写个批处理
我想用一个bat文件点一下就可以自动将MSDE安装到机器上。
请问能否只允许WINDOWS身份验证。不允许sa登陆如果不行的话,哪位高手能否帮我写一个bat文件。随机生成一段sa的密码。并安装MSDE数据库

解决方案 »

  1.   

    http://blog.csdn.net/fangke/archive/2004/09/24/115933.aspx
      

  2.   

    我最近研究了C# 的打包安装,并根据网上的资料成功了。我参考的是:http://blog.csdn.net/koenemy/archive/2006/09/29/1306030.aspx http://www.cnblogs.com/wangsaokui/archive/2004/09/24/9769.html 在此感谢作者!我总结一下:   下面简单介绍一下如何在工程中添加Microsoft SQL Server 2000 Desktop Engine (MSDE)的自动安装合并模块MSM:  1.    首先你需要下载MSDE2000的sp3安装包。注意是sp3不是sp4。sp4 的我没有试验成功。 下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyId=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&displaylang=zh-cn 2.    下载完成,你可以安装或者用ZIP解压到本地硬盘,将可以看到:Msi、MSM、Setup这3个目录和setup等文件,其中的MSM文件夹中的东东就是本文要介绍的MSDE2000合并模块。 3.    在你的工程中添加一个安装工程(假设为MySetup1),按照正常的步骤添加工程输出(Project Output),选择输出文件(primary output)和内容文件(content files)两项。 4.    添加合并模块(Merge Moudle),选择浏览,指定到你的MSDE的MSM文件夹,选则MSM和msm\1033下的所有的文件(REPL.MSM、REPL_RES.MSM、 DMO_RES.MSM和DMO.MSM可以不选),打开。 5.    设置安装工程的属性(Properties)中的SearchPath,指定为你的MSM所在路径(这时需要添加两个:path\MSM和path\MSM\1033和path\MSM\2052)。 6.    设置关于安装程序的其他属性咱们暂且不提,这是可以对你的安装工程进行编译了,当编译通过后,你可以在MySetup1\Debug\看到你的打包工程MySetup.msi。 7.    这是工程打包告一段落,下面我们需要修改打好的安装包,使它可以在安装完程序后自动安装MSDE的一个实例(假设实例名为:MyServer)。现在我们需要用到MS的一个工具ORCA,下载地址:http://support.microsoft.com/default.aspx?scid=kb;EN-US;255905安装了orca后就可以利用这个工具对我们的MySetup1.msi进行修改了。网址不对的话自己在网上随便下一个就行。 8.    用ORCA打开安装包文件MySetup.msi,修改如下: InstallExecuteSequence表 GetSqlStates.XXXXXX         103->421 InstallInitialize                     1800->1799 RemoveExistingProducts    1825->1800 InstallUISequence表 GetSqlStates.XXXXXX        103->421 Property表添加 SqlInstanceName:          MSDEDH实例服务名 SqlSecurityMode:          SQL 用SQL模式登录 SqlSaPwd:                sa的密码 DISABLENETWORKPROTOCOLS=0:网络访问的话也要加这项 注意:GetSqlStates.XXXXXX  后面的X代表一串字符。例如:我的里面是,GetSqlStates.2D02443E_7002_4C0B_ABC9_EAB2C064397B 你主要是找到GetSqlStates这部分。 9.至于附加数据库 自己做一个 安装类,进行自定义安装时附加数据库就行了。 public override void Install(IDictionary savedState) { base.Install(savedState); //启动windows服务 new System.ServiceProcess.ServiceController("MSSQL$MYSERVER").Start(); //附加数据库 SqlConnection Connection = new SqlConnection("password=**;user id=sa;data source="+SystemInformation.ComputerName); SqlCommand Cmd = new SqlCommand("sp_attach_db",Connection); Cmd.CommandType = CommandType.StoredProcedure; SqlParameter loginname=Cmd.Parameters.Add("@dbname",SqlDbType.NVarChar,20); loginname.Value ="yourname"; SqlParameter nickname=Cmd.Parameters.Add("@filename1",SqlDbType.NVarChar,50); nickname.Value =Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)+"yourname.mdf"; SqlParameter password=Cmd.Parameters.Add("@filename2",SqlDbType.NVarChar,50); password.Value =Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)+"yourname.ldf"; Connection.Open(); Cmd.ExecuteNonQuery(); Connection.Close(); } 10。OK