3

WinFormsとC#を使用してSQLServerExpressでデータベースを作成しようとしています

これが私がやろうとしていることです

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

開始時にカウントを取得するだけです。しかし、私はエラーを受け取ります

SQL Serverへの接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。
インスタンス名が正しいこと、およびSQLServerがリモート接続を許可するように構成されていることを確認してください。
(プロバイダー:名前付きパイププロバイダー、エラー: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(Boolean inServer)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer()
at Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer()
at Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection()
Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage()で
Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(ブール値の更新)
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

2 に答える 2

5

SQL Server Expressを使用していて、すべてのデフォルトをインストールした場合、サーバーインスタンスはと呼ばれ.\SQLEXPRESSます。コードでそれを使用する必要があります:

using Microsoft.SqlServer.Management.Smo;

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

インスタンス名を指定せずに新しいインスタンスを作成すると、SQL Server Expressのみをインストールした場合は、デフォルトのインスタンスServer(名前なし)に接続しようとします。

于 2012-07-25T07:30:24.723 に答える
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;
于 2012-07-25T07:28:07.887 に答える