2012-07-25 59 views
3

我试图创建一个使用WinForms和C#使用SMO

这里在SQL Server Express数据库SQL Server Express中创建数据库什么,我试图做

Microsoft.SqlServer.Management.Smo.Server srv = new Microsoft.SqlServer.Management.Smo.Server srvServer(); 
int i = srv.Databases.Count; 

只是为了让在开始计数。但我得到错误

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible.
Verify that the instance name is correct and that SQL Server is configured to allow remote connections.
(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) this is the stack track

at Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
at Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion()
at Microsoft.SqlServer.Management.Smo.ExecutionManager.GetServerVersion()
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(Boolean inServer)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer()
at Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer()
at Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection()
at 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(Object sender, EventArgs e) in C:\Users\Guest1\Downloads\CreateDB\CreateDB\CreateDB.cs:line 82

应该做什么?

回答

4

如果您使用的SQL Server 快速,你已经与所有默认值,那么你的服务器实例将被称为.\SQLEXPRESS安装。您需要使用您的代码:

using Microsoft.SqlServer.Management.Smo; 

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

如果没有指定一个实例名称创建一个新的Server实例,它会尝试连接到默认实例(没有名字) - 你不有,如果你只安装了SQL Server Express。

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;