当我尝试针对SQL Server 2008 Express实例测试无效的连接字符串时,我发现了这种奇怪的行为:指定一个无效的"Initial Catalog"会引发一个SQLException,其Number有时是233,有时是18456。
代码可以更好地说明这一点。
代码可以更好地说明这一点。
// The following connection string has a purposely incorrect initial catalog:
string invalidConnString = @"Data Source=.\SQLEXPRESS;Initial Catalog=INVALID_DATABASE_NAME;User Id=dummyUser;Password=dummyPassw;";
SqlConnection connection = new SqlConnection(invalidConnString);
try
{
connection.Open();
}
catch (SqlException sex)
{
Console.WriteLine(sex.Number); // I "randomly" get either 233 or 18456
throw;
}
finally
{
connection.Close();
}
系统错误代码(来自 Books Online)指出:
- 233 - 已经成功与服务器建立了连接,但是在登录过程中发生了错误。(提供程序:共享内存提供程序,错误:0 - 管道的另一端没有进程。)
- 18456 - 用户“%.*ls”登录失败。%.*ls
我认为这两种情况都是表示登录不成功的不同方式。但是,为什么会出现不一致的失败情况呢?