Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将SQL Server 2008 R2数据库添加到Visual Studio 2010安装文件中?_C#_Visual Studio 2010_Security_Sql Server 2008 R2_Installation - Fatal编程技术网

C# 如何将SQL Server 2008 R2数据库添加到Visual Studio 2010安装文件中?

C# 如何将SQL Server 2008 R2数据库添加到Visual Studio 2010安装文件中?,c#,visual-studio-2010,security,sql-server-2008-r2,installation,C#,Visual Studio 2010,Security,Sql Server 2008 R2,Installation,我想在我的客户端位置安装我的Windows应用程序。它是一个多用户应用程序。10个系统和1台服务器。因此,我在所有10个系统上安装客户机设置,在服务器系统上安装服务设置 如何在客户端服务器中保护我的数据库?我正在使用VS2010和SQL Server 2008 R2。在不安装SQL Server Management Studio Express的情况下,如何安装我的数据库?以及如何在服务设置中添加我的数据库?有人能给我举一个这种类型的应用程序的例子吗?windows installer没有任何

我想在我的客户端位置安装我的Windows应用程序。它是一个多用户应用程序。10个系统和1台服务器。因此,我在所有10个系统上安装客户机设置,在服务器系统上安装服务设置


如何在客户端服务器中保护我的数据库?我正在使用VS2010和SQL Server 2008 R2。在不安装SQL Server Management Studio Express的情况下,如何安装我的数据库?以及如何在服务设置中添加我的数据库?有人能给我举一个这种类型的应用程序的例子吗?

windows installer没有任何现成的支持来随应用程序一起部署数据库,您必须编写自己的组件,在部署过程中创建数据库,并将其插入MSI。我在我的项目中也做了同样的事情。按照步骤操作

使用控制台应用程序创建数据库

  • 首先忘记Windows安装程序
  • 创建一个控制台应用程序
  • 添加使用
    SMO(SQL server管理对象)
    或简单SQL命令执行脚本的方法
  • 检查我的答案,它可以读取.sql文件并在sql server上执行
  • 您需要做的是保留一个.sql脚本文件,它可以在执行时创建数据库
  • 您必须将该文件路径传递给console应用程序中的方法
  • 在安装过程中执行控制台应用程序

  • 现在您有了一个控制台应用程序,它可以在执行时创建一个数据库,前提是将正确的scrip文件路径传递给该方法
  • 将此控制台exe和sql脚本文件添加到MSI包中。因此,这两个文件都将放在应用程序安装文件夹下
  • 向您的项目中添加一个
  • 在install方法中,只需执行console exe文件
  • code

    public override void Install(IDictionary stateSaver)
    {
       base.Install(stateSaver);
    
       Process process = new Process();
       ProcessStartInfo info = new ProcessStartInfo();
       process.StartInfo = info;
    
       info.FileName = Path.Combine(this.Context.Parameters["targetdir"], "ConsoleApp.exe");
       info.UseShellExecute = false;
    
       process.Start();
    
    }