从 sql 服务器生成的脚本填充数据库

populate database from sql server generated script

所以我正在开发一个 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 文件中的脚本来为这个新数据库创建表和值?

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();
}