3

我正在尝试使用 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(Boolean 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 refresh)
在 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_Count()
在 CreateDB.CreateDB.btnCreateDB_Click(Object sender, EventArgs e) 在 C:\Users\Guest1 \Downloads\CreateDB\CreateDB\CreateDB.cs:第 82 行

应该做什么?

4

2 回答 2

5

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

using Microsoft.SqlServer.Management.Smo;

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

如果您在未指定实例名称的情况下创建新Server实例,它会尝试连接到默认实例(没有名称)——如果您只安装了 SQL Server Express,则您没有该实例。

于 2012-07-25T07:30:24.723 回答
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;
于 2012-07-25T07:28:07.887 回答