从 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();
}
所以我正在开发一个 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();
}