从sql server生成的脚本填充数据库

时间:2015-01-20 15:31:15

标签: c# sql-server asp.net-mvc-4 entity-framework-4

所以我正在开发一个Web应用程序,每个用户都拥有自己的数据库。我想要的是在注册时自动创建用户特定数据库的过程。

我的想法是创建一个带有自定义名称的新空数据库,然后运行预制的sql脚本来生成此数据库的表和默认值。

修改 我想我以前还不清楚。

我按如下方式创建数据库:

using (var conn = new SqlConnection("data source=MySource; uid=MyUser; pwd=MyPassword;"))
   {
      using (var cmd = new SqlCommand())
      {
         conn.Open();
         cmd.Connection = conn;
         cmd.CommandText = "Create Database MYNewDB;";
         cmd.ExecuteNonQuery();
      }
   }

有没有办法(在此之后)执行保存在.sql文件中的脚本来为这个新数据库创建表和值?

1 个答案:

答案 0 :(得分:0)

this answer找到解决方案。

using (var conn = new SqlConnection("data source=MySource; initial catalog=MYNewDB;persist security info=True;user id=MyUser;password=MyPassword;multipleactiveresultsets=True; "))
{
   string script = File.ReadAllText(@"C:\Somewhere\...\script.sql");

   // split script on GO command
   IEnumerable<string> commandStrings = Regex.Split(script, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase);

   conn.Open();
   foreach (string commandString in commandStrings)
   {
      if (commandString.Trim() != "")
      {
         using (var command = new SqlCommand(commandString, conn))
         {
            command.ExecuteNonQuery();
         }
      }
   }
   conn.Close();
}