我正在尝试使用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行
应该做什么?
答案 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;