0

ローカル システムに SQL Server 2008 がインストールされており、.NET 4.5 の C# で次のコードを実行しています。

    private Boolean ConnectDatabase()
    {
        if( !this.IsInitialized())
        {
            return false;
        }
        else
        {
            try
            {
                String ConnectionString = "User ID=" + this.DatabaseUsername + ";" +
                                            "Password=" + this.DatabasePassword + ";" +
                                            "Server=" + this.DatabaseHost + "," + this.DatabasePort + ";" +
                                            "Database=" + this.DatabaseResource + ";";
                this.DatabaseConnection = new SqlConnection(ConnectionString);
                this.DatabaseConnection.Open();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }
    }

SSMS でサーバーに接続できますが、同じ資格情報を使用しても C# で接続できません。

接続文字列は次のとおりです。

User ID=sa;Password=******;Server=CPUNAME\MSSQL,1433;Database=DBNAME;

CPUNameDBName、および**は、それぞれの適切な値に置き換えられます。また、Windows 資格情報と、NB 名、ループバック IP、静的内部 IP、何とか何とかなど、さまざまなサーバー エンドポイントを使用してみました。ファイアウォールはオフです。サーバーで TCP が有効になっています。

次の例外が発生します。

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: TCP プロバイダー、エラー: 0 - ターゲット マシンがアクティブに拒否したため、接続できませんでした。)

助言がありますか?

4

2 に答える 2

1

SQL Server 構成マネージャーでプロトコルを有効にしましたか?

SQL Server の TCP/IP ネットワーク プロトコルを有効にするを参照してください。

[編集]
気にしないでください。「サーバーで TCP が有効になっている」という部分を見逃していました ;-)
質問は次のようになります。TCP/IP を有効にした後、SQL サーバーを再起動しましたか? これらの変更を有効にするには、SQL サービスを再起動する必要があります (手順 6 を参照)。

また、正しいインスタンス名を使用していることも確認してください (現在MSSQLインスタンス名として使用していますが、これはSQLExpress何かの可能性があります)。

于 2013-03-26T16:21:35.997 に答える
1

ローカルであっても、接続するために実行しなければならないサービスがいくつかあります。これらの一部は (便利なことに) デフォルトで「手動開始」に設定されています。確認する必要があるサービスには、SQL Server、SQL Server エージェント、および分散トランザクション コーディネーターが含まれます。

于 2013-03-26T16:43:36.760 に答える