【问题标题】:Creating database in SQL Server Express using SMO使用 SMO 在 SQL Server Express 中创建数据库
【发布时间】:2012-07-25 07:22:32
【问题描述】:

我正在尝试使用 WinForms 和 C# 在 SQL Server Express 中创建数据库

这就是我想要做的事情

Microsoft.SqlServer.Management.Smo.Server srv = new Microsoft.SqlServer.Management.Smo.Server srvServer();
int i = srv.Databases.Count;

只是为了在开始时获得计数。但我得到了错误

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。
验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。
(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)这是堆栈跟踪

在 Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
在 Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion()
在 Microsoft.SqlServer.Management.Smo.ExecutionManager.GetServerVersion()
在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(布尔 inServer)
在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer()
在 Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer()
在 Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection()
在 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage()
在 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(布尔 刷新)
在 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_Count()
在 C:\Users\Guest1\Downloads\CreateDB\CreateDB\CreateDB.cs:line 82 中的 CreateDB.CreateDB.btnCreateDB_Click(Object sender, EventArgs e) 处

应该怎么做?

【问题讨论】:

    标签: c# sql-server-2008 smo


    【解决方案1】:

    如果您使用的是 SQL Server Express,并且安装了所有默认设置,那么您的服务器实例将被称为 .\SQLEXPRESS。您需要在代码中使用它:

    using Microsoft.SqlServer.Management.Smo;
    
    Server srv = new Server(".\\SQLExpress");
    int i = srv.Databases.Count;
    

    如果您创建一个新的 Server 实例而不指定实例名称,它会尝试连接到 默认实例(没有名称) - 如果您已经只安装了 SQL Server Express。

    【讨论】:

      【解决方案2】:

      首先使用SqlConnection 对象建立连接。你应该这样做

      SqlConnection conn = new SqlConnection(@"Data Source=.\SQLExpress;Initial Catalog=master;Integrated Security=True");
      Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(new ServerConnection(conn));
      int i = server.Databases.Count;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多