1

我使用and 2008 开发了一个winform应用程序。现在我的工作是在客户的机器上实现它。我正在寻找在客户端机器上创建和运行此应用程序的最佳方法。我已经生成了我所有数据库的脚本。现在我想在客户端机器上创建所有数据库对象,一键读取每个表或存储过程脚本文件(即 .sql 或 .txt)并创建它们的 C# 代码。C#SQL Serverdatabase tablesstored procedureobjects

4

3 回答 3

1

不需要smo,但有点丑

 SqlCommand getDataPath = new SqlCommand("select physical_name from sys.database_files;", baseConnection); // get default path where the sqlserver saves files
            string temp = getDataPath.ExecuteScalar().ToString();
            temp = temp.Replace(temp.Split('\\').Last(), string.Empty);
            StringBuilder sqlScript = new StringBuilder(Scripts.CreateDatabase); //CreateDatabase could be in ressources
            ///The @@@@ are used to replace the hardcorededpath in your script
            sqlScript.Replace("@@@@MAINDATAFILENAME@@@@", string.Concat(temp, "test.mdf"));
            sqlScript.Replace("@@@@LOGDATAFILENAME@@@@", string.Concat(temp, "test_log.ldf"));
            string[] splittedScript = new string[] { "\r\nGO\r\n" }; //remove GO
            string[] commands = sqlScript.ToString().Split(splittedScript,
              StringSplitOptions.RemoveEmptyEntries);

SqlCommand cmd = new SqlCommand(command[x], baseConnection);然后运行 ​​commands( )中的每个命令

注意:由于某些原因,这需要管理员权限,因此请创建一个清单文件。

于 2014-01-16T14:35:29.427 回答
0

Visual Studio 支持数据库项目,它会为您生成部署脚本。它还允许从头开始部署或升级现有数据库。部署可以作为 Visual Studio 或构建服务器中构建的一部分自动化。如果您使用的是 TFS,您还可以对数据库进行源代码控制。

基本上不用再乱用脚本了!

http://msdn.microsoft.com/en-us/library/ff678491(v=vs.100).aspx

http://msdn.microsoft.com/en-us/library/xee70aty.aspx

于 2014-01-16T14:38:12.837 回答
0

您需要使用SMO来完成此任务。正常的 ADO.NET 东西会抱怨多语句执行等。一旦您与 SMO 集成并拥有脚本,这真的很容易。

于 2014-01-16T14:32:36.763 回答