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

1Ma*_*yur 3 c# smo sql-server-2008

我正在尝试使用WinForms和C#在SQL Server Express中创建数据库

这就是我想要做的

Microsoft.SqlServer.Management.Smo.Server srv = new Microsoft.SqlServer.Management.Smo.Server srvServer();
int i = srv.Databases.Count;
Run Code Online (Sandbox Code Playgroud)

只是为了在开始时得到计数.但是我得到了错误

建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.
验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.
(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)这是堆栈跟踪

Microsoft.SqlServer.Management.Management.Management.Comct.ConnectionManager.get_ServerVersion()
中的Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
位于Microsoft.SqlServer.Management.Smo.ExecutionManager.GetServerVersion(),
位于Microsoft.SqlServer.Management.Smo
Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.getContring()
中的Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer()
位于Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection()的.SqlSmoObject.GetDbComparer(Boolean inServer )
在Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage()
at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(Boolean refresh)
at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_Count()
at CreateDB.CreateDB.btnCreateDB_Click (对象发送者,EventArgs e)在C:\ Users\Guest1\Downloads\CreateDB\CreateDB\CreateDB.cs中:第82行

应该做什么?

mar*_*c_s 5

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

using Microsoft.SqlServer.Management.Smo;

Server srv = new Server(".\\SQLExpress");
int i = srv.Databases.Count;
Run Code Online (Sandbox Code Playgroud)

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