嗨什么是部署数据库脚本到我的客户端PC的最佳方式?我已经安装了应用程序,并在客户端电脑上安装了SQL管理工作室。除了当我需要更新数据库时,一切都很顺利。我如何更新数据库,而不必让我去他们的电脑上运行.sql更新脚本。这个问题适用于我的应用程序在其他国家使用。如何部署数据库
对于更新代码是好的,因为我使用ClickOnce。 这是一个基于窗口的应用程序。
请帮
嗨什么是部署数据库脚本到我的客户端PC的最佳方式?我已经安装了应用程序,并在客户端电脑上安装了SQL管理工作室。除了当我需要更新数据库时,一切都很顺利。我如何更新数据库,而不必让我去他们的电脑上运行.sql更新脚本。这个问题适用于我的应用程序在其他国家使用。如何部署数据库
对于更新代码是好的,因为我使用ClickOnce。 这是一个基于窗口的应用程序。
请帮
我会附带应用程序中的SQL文件,并有一个总是检查其他地方进行了需要运行的脚本程序启动逻辑。它可以像检查所有.sql文件的[应用程序路径] \ MigrationScripts文件夹一样简单。如果找到文件,请阅读内容并针对数据库执行。
一旦检查(和潜在的数据库更新)完成,继续加载应用程序。
示例代码(未经测试),和一个非常基本的实现:
public class Migration
{
private string _migrationPath = @"C:\temp\MigrationSteps"; //change
private string[] _sqlFiles = null;
public Migration()
{
Initialize();
}
public Migration(string path)
{
_migrationPath = path;
Initialize();
}
private void Initialize()
{
_sqlFiles = Directory.GetFiles(_migrationPath, "*.sql");
}
public bool Run()
{
bool success = true;
foreach (string sqlFile in _sqlFiles)
{
ExecuteRun(File.ReadAllText(sqlFile));
}
return success; //Do something with this value
}
public bool CleanUp()
{
//Put some logic here to "clean up" files that have already been run.
throw new NotImplementedException();
}
private bool ExecuteRun(string sqlText)
{
//Call your data access library and execute the sqlText
throw new NotImplementedException();
}
}
用法:
Migration migration = new Migration();
if (migration.Run())
{
migration.CleanUp();
}
else
{
//Do something
}
@BrandonZeider:这听起来不错。我可以在我的项目中创建一个新文件夹调用MigrationScripts,并将这些更新数据库脚本放在该文件夹中。但是,我应该在哪里编写检查脚本来检查MigrationScript文件夹中的所有.sql文件?你能提供一些代码示例吗? – VeecoTech 2011-04-05 14:18:06
你会把逻辑放在你的Main入口点。你使用闪屏吗?我将用一些代码更新我的答案以检查sql文件。 – BrandonZeider 2011-04-05 14:27:59
@BrandonZeider:这听起来不错。让我试试看,我会回到你身边。我想我需要为此设置一个启动画面。一个问题 - 当我调用ExecuteRun()来运行sql脚本时,是否需要输入Sql用户名和密码来运行这些脚本? – VeecoTech 2011-04-05 14:46:47
我想你应该阐明情况的一些情况。这是客户端服务器应用程序吗?你是否分享开发环境? – Peter 2011-04-05 13:59:51
opss ..我忘了提及它是一个基于窗口的应用程序。数据库安装在客户端PC上。 – VeecoTech 2011-04-05 14:05:23
因此,每个使用该应用程序的客户端都需要安装SQL Server实例?你知道你可以集中你的SQL Server,所以每个客户端连接到相同的? – Peter 2011-04-05 14:07:33