使用SMO在SQL Server Express中创建数据库

时间:2012-07-25 07:22:33

标签: c# sql-server-2008 smo

我正在尝试使用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的连接)这是堆栈跟踪

     

at 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(Boolean   刷新)
  在Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_Count()
  在C:\ Users \ Guest1 \ Downloads \ CreateDB \ CreateDB \ CreateDB.cs中的CreateDB.CreateDB.btnCreateDB_Click(Object sender,EventArgs e):第82行

应该做什么?

2 个答案:

答案 0 :(得分:5)

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

using Microsoft.SqlServer.Management.Smo;

Server srv = new Server(".\\SQLExpress");
int i = srv.Databases.Count;

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

答案 1 :(得分:3)

首先使用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;