将数据库添加到现有的SQL Server 2008中。

3

我花了很多时间尝试研究外部资源,但不同的解决方案似乎比我希望的更加复杂。

我想要实现以下目标:

  • 在本地计算机上现有的SQL实例中创建简单的数据库。
  • 安全性只需要一个简单的用户名和密码。
  • 其他选项都是不必要的(日志、增长、最大大小等)。

这是我第一次尝试将数据库集成到我的程序中。使用SQLite或SMO似乎有点令人不知所措,所以我一直在尝试修改这个示例代码来使其工作:

private void createDatabase()
{
    String str;
    SqlConnection myConn = new SqlConnection("Server=" + serverName + ";Integrated security=SSPI;database=master");

    str = "CREATE DATABASE " + dbName + " ON PRIMARY " +
           "(NAME = " + dbName + "_Data, " +
           "FILENAME = 'C:\\" + dbName + ".mdf', " +
           "SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
           "LOG ON (NAME = " + dbName + "_Log, " +
           "FILENAME = 'C:\\" + dbName + ".ldf', " +
           "SIZE = 1MB, " +
           "MAXSIZE = 5MB, " +
           "FILEGROWTH = 10%)";

    SqlCommand myCommand = new SqlCommand(str, myConn);
    try
    {
        myConn.Open();
        myCommand.ExecuteNonQuery();
        MessageBox.Show("DataBase is Created Successfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    finally
    {
        if (myConn.State == ConnectionState.Open)
        {
            myConn.Close();
        }
    }
}

有什么简单的方法可以创建一个查询字符串或者其他方式来创建数据库吗?如果有更好的方法,也可以,但要注意尽量让它简单易懂。


如果你将在“str”中生成的SQL在SSMS中运行,会发生什么? - M.Babcock
1
建议:在 try-catch 块内部尝试使用 usingusing 会关闭连接,如果 using.Close() 抛出任何异常,您可以在 catch 块中捕获它。 - Amar Palsapure
我遇到了“拒绝访问”错误。我也无法在该位置创建.mdf文件。我知道用于登录SQL实例中另一个数据库的凭据,但不知道如何将其应用于我创建数据库的过程中。我也不知道应该把.mdf文件放在哪里或其他文件存储在哪里。 - ikathegreat
1个回答

7

使用SMO:

    Server server = new Server("servername");
    Database db = new Database(server, "MyDatabaseName");
    db.Create();

要构建SMO应用程序,您需要引用SMO程序集。单击“添加引用”并导航到文件夹。
C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies

将以下程序集添加到引用中:

  • Microsoft.SqlServer.ConnectionInfo.dll
  • Microsoft.SqlServer.Smo.dll
  • Microsoft.SqlServer.Management.Sdk.Sfc.dll
  • Microsoft.SqlServer.SqlEnum.dll

在包含以上代码的文件中添加此 using 语句:

using Microsoft.SqlServer.Management.Smo;

顺便提一下:


我似乎找不到那些引用!我正在使用.NET Framework 4.0,所以按照这个例子:http://www.codeproject.com/Articles/13755/SMO-Manage-your-SQL-Server 我找不到正确的.NET引用。 - ikathegreat
我该如何检查我是否拥有SQL 2008 R2。微软网站并没有提供确切的帮助(惊喜)。 - ikathegreat
好的,已安装共享管理实用程序。浏览并添加了您列出的程序集的引用,并添加了这些“Usings”:using Microsoft.SqlServer; using Microsoft.SqlServer.Server; using Microsoft.SqlServer.Management;但仍然出现类型或命名空间未找到的错误...我是否漏掉了什么? - ikathegreat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接