C# 使用SMO在SQL Server Express中创建数据库
我正在尝试使用WinForms和C在SQLServerExpress中创建一个数据库# 这就是我要做的C# 使用SMO在SQL Server Express中创建数据库,c#,sql-server-2008,smo,C#,Sql Server 2008,Smo,我正在尝试使用WinForms和C在SQLServerExpress中创建一个数据库# 这就是我要做的 Microsoft.SqlServer.Management.Smo.Server srv = new Microsoft.SqlServer.Management.Smo.Server srvServer(); int i = srv.Databases.Count; 只是为了在一开始就得到计数。但是我得到了错误 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到或
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(布尔值 在服务器中)
在Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer()上 在Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get\u 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()上 在CreateDB.CreateDB.btnCreateDB\单击C:\Users\Guest1\Downloads\CreateDB\CreateDB\CreateDB.cs中的(对象发送方,事件参数e):第82行
应该做什么?首先使用
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;
如果您使用的是SQL ServerExpress,并且安装了所有默认值,那么您的服务器实例将被称为
\SQLEXPRESS
。您需要在代码中使用该选项:
using Microsoft.SqlServer.Management.Smo;
Server srv = new Server(".\\SQLExpress");
int i = srv.Databases.Count;
如果在未指定实例名称的情况下创建新的服务器
实例,则它会尝试连接到默认实例(没有名称)-如果您只安装了SQL Server Express,则没有默认实例