【问题标题】:Amazon AWS RDS - How to Programmatically Create a MS SQL Database in C#?Amazon AWS RDS - 如何在 C# 中以编程方式创建 MS SQL 数据库?
【发布时间】:2013-07-01 17:20:48
【问题描述】:

我创建了一个运行 MS SQL 的 Amazon AWS RDS 实例。我已经成功地能够使用 C# 以编程方式创建数据库:

SqlConnection myConn = new SqlConnection("Data Source=<public-ip-name>;Persist Security Info=True;User ID=<userid>;PWD=<pwd>;");
myConn.Open();
string str = "CREATE DATABASE contacts";
SqlCommand cmd = new SqlCommand(str, myConn);
cmd.ExecuteNonQuery();

但是,我无法制作更复杂的连接字符串:

        str = "CREATE DATABASE contacts ON PRIMARY " +
            "(NAME = Contacts_Data, " +
            @"FILENAME = 'c:\contacts.mdf', " +
            "SIZE = 4MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
            "LOG ON (NAME = Contacts_Log, " +
            @"FILENAME = 'c:\contacts.ldf', " +
            "SIZE = 1MB, " +
            "MAXSIZE = 5MB, " +
            "FILEGROWTH = 10%)";

错误 (5) 似乎抱怨 C:\ 无法写入。也许它不存在?如果我省略 FILENAME,则会出现错误提示我省略了它。 FILENAME 的正确值是多少?看来 FILENAME 必须指定一个现有的文件路径。

【问题讨论】:

    标签: c# sql-server amazon-web-services connection-string


    【解决方案1】:

    我已经用 C# 编写了 jtseng 的答案

    static string GetDBPath(SqlConnection myConn, string db = "master")
    {
      string sqlstr = "USE " + db + "; EXEC sp_helpfile";
      SqlCommand command = new SqlCommand(sqlstr, myConn);
      SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleRow);
      reader.Read();
      string filename = reader["filename"].ToString();
      string directory = System.IO.Path.GetDirectoryName(filename);
      return directory;
    }
    

    调用方式:

    SqlConnection myConn = new SqlConnection("Data Source=<public ip>;Persist Security Info=True;User ID=<userid>;PWD=<pwd>;");
    myConn.Open();
    string dbPath = GetDBPath(myConn); // default db is master
    

    【讨论】:

    • sql 命令显示默认驱动器为 D:\,默认目录为 D:\RDSDBDATA\DATA。啊,这就是 FILENAME = 'c:\contacts.mdf' 失败的原因。
    • 你知道默认目录(D:\RDSDBDATA\DATA)上是否有一些文档吗?我想知道它是否会在未来发生变化或其他什么......
    【解决方案2】:

    要找出您可以在哪个目录中创建数据库:

    1. 以简单的方式创建数据库 DB1。
    2. 找出数据库文件的位置:

      使用 DB1 走 执行 sp_helpfile 去吧

    3. 使用该目录中的文件创建一个数据库。

    【讨论】:

    • 是的,但是...如何在 Amazon AWS RDS MS SQL 实例上创建目录?
    • @BSalita 我的错。我不认为您可以自己进行文件系统管理。您也不想用 TSQL 创建数据库。请参阅 docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… 了解您应该如何做。
    • 我在您的链接中没有看到任何信息显示如何创建或删除数据库。它们展示了如何创建或终止不相关的实例。我找不到任何用于创建或删除数据库的 Amazon RDS API。有人吗?
    • @BSalita 好点。抱歉这么草率。您似乎被 AWS 中的目录结构困住了。如果您还有时间和我一起玩,我已经更新了我的答案,说明如何找到可以在哪个目录中创建数据库。
    猜你喜欢
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2010-09-15
    • 2011-06-14
    • 1970-01-01
    • 2016-10-19
    • 2022-11-20
    相关资源
    最近更新 更多