用我的应用程序c#安装sql server数据库

时间:2011-03-07 09:31:37

标签: c# sql-server database windows-installer

我编写了一个使用SQL Server数据库的C#应用​​程序。该程序的目标用户将运行SQL Server 2008 R2。我已经创建了一个安装程序(visual studio中的部署项目)来安装我的程序,但我也希望它能够安装数据库。我该如何完成这项工作?

5 个答案:

答案 0 :(得分:2)

您可以编写自定义安装操作。看看following article

答案 1 :(得分:2)

最好让用户自己安装SQL Server 2008。这为数据库服务器的版本提供了更好的灵活性,并且如果需要,还可以将它安装在不同的机器上。 SQL Setup最近也变得非常复杂而且不是很简单。如果您需要嵌入式SQL Server,则可以使用SQL Server Compact。

在您的应用程序中,您可以使用以下代码在SQL Server 2005+上创建必要的数据库。请记住,它需要SQL服务器上的SA权限。您需要将%db_name%替换为数据库的实际名称。

IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'%db_name%')
BEGIN
DECLARE @data_path nvarchar(1024), @db_path nvarchar(1024), @log_path nvarchar(1024)
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Setup', N'SQLDataRoot', @data_path OUTPUT    
SET @db_path = @data_path + N'\Data\%db_name%_Data.MDF';
SET @log_path = @data_path + N'\Data\%db_name%_log.ldf';
EXECUTE (N'
    CREATE DATABASE [%db_name%]  ON (NAME = N''%db_name%_Data'', 
     FILENAME = N''' + @db_path  + N''',
     SIZE = 3, FILEGROWTH = 10%) LOG ON (NAME = N''%db_name%_Log'',
     FILENAME = N''' + @log_path + N''',
     SIZE = 3, FILEGROWTH = 10%)
     COLLATE SQL_Latin1_General_CP1_CI_AS')
END

答案 2 :(得分:2)

只需在开发项目中添加部署项目即可。 比如命名为proj_deploy,然后右键单击此项目(proj_deploy)并选择VS 2008/2010中的属性,然后转到先决条件并选择在有人安装您开发的项目时要在客户端计算机上安装的项目。

先决条件是bootstraps,您可以通过它来安装第三方工具等。

答案 3 :(得分:0)

你不这样做。那么,你通常做的是你的设置msi文件有一个bootstrapper,一个触发安装MSI的.exe程序。这个还将检查先决条件,并在需要和可用时触发那些安装。

检查http://wix.mindcapers.com/wiki/Bootstrapper以获取更详细的解释和一些可用的示例。

答案 4 :(得分:0)

如果它是客户端/服务器应用程序,则SQL Server很可能已经存在,并且不会与您的应用程序位于同一台PC上。

如果是单用户数据库应用程序,我建议使用SQL Server Compact。然后“安装”只包括复制一些dll。