Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SMO在SQL Server Express中创建数据库_C#_Sql Server 2008_Smo - Fatal编程技术网

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

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的连接时发生与网络相关或特定于实例的错误。找不到或

我正在尝试使用WinForms和C在SQLServerExpress中创建一个数据库#

这就是我要做的

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,则没有默认实例